From a50bc9baea332f996e6bc3a5d70c69f6d2d0f194 Mon Sep 17 00:00:00 2001
From: dujinkim <dujin.kim@dtsolution.co.kr>
Date: Wed, 23 Jul 2025 09:08:03 +0000
Subject: (대표님, 최겸) 기본계약 템플릿 및 에디터, 기술영업 벤더정보, 파일
 보안다운로드, 벤더 document sync 상태 서비스, 메뉴 Config, 기술영업 미사용
 제거
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../table/add-candidates-dialog.tsx                | 394 ---------------------
 1 file changed, 394 deletions(-)
 delete mode 100644 lib/tech-vendor-candidates/table/add-candidates-dialog.tsx

(limited to 'lib/tech-vendor-candidates/table/add-candidates-dialog.tsx')

diff --git a/lib/tech-vendor-candidates/table/add-candidates-dialog.tsx b/lib/tech-vendor-candidates/table/add-candidates-dialog.tsx
deleted file mode 100644
index 31c39137..00000000
--- a/lib/tech-vendor-candidates/table/add-candidates-dialog.tsx
+++ /dev/null
@@ -1,394 +0,0 @@
-"use client"
-
-import * as React from "react"
-import { useForm } from "react-hook-form"
-import { zodResolver } from "@hookform/resolvers/zod"
-import { Check, ChevronsUpDown } from "lucide-react"
-import i18nIsoCountries from "i18n-iso-countries"
-import enLocale from "i18n-iso-countries/langs/en.json"
-import koLocale from "i18n-iso-countries/langs/ko.json"
-import { cn } from "@/lib/utils"
-import { useSession } from "next-auth/react" // next-auth 세션 훅 추가
-
-import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from "@/components/ui/dialog"
-import { Button } from "@/components/ui/button"
-import { Input } from "@/components/ui/input"
-import { Textarea } from "@/components/ui/textarea"
-import { useToast } from "@/hooks/use-toast"
-import {
-  Popover,
-  PopoverContent,
-  PopoverTrigger,
-} from "@/components/ui/popover"
-import {
-  Command,
-  CommandEmpty,
-  CommandGroup,
-  CommandInput,
-  CommandItem,
-  CommandList,
-} from "@/components/ui/command"
-
-// react-hook-form + shadcn/ui Form
-import {
-  Form,
-  FormControl,
-  FormField,
-  FormItem,
-  FormLabel,
-  FormMessage,
-} from "@/components/ui/form"
-
-
-import { createVendorCandidateSchema, CreateVendorCandidateSchema } from "../validations"
-import { createVendorCandidate } from "../service"
-
-// Register locales for countries
-i18nIsoCountries.registerLocale(enLocale)
-i18nIsoCountries.registerLocale(koLocale)
-
-// Generate country array
-const locale = "ko"
-const countryMap = i18nIsoCountries.getNames(locale, { select: "official" })
-const countryArray = Object.entries(countryMap).map(([code, label]) => ({
-  code,
-  label,
-}))
-
-export function AddCandidateDialog() {
-  const [open, setOpen] = React.useState(false)
-  const [isSubmitting, setIsSubmitting] = React.useState(false)
-  const { toast } = useToast()
-  const { data: session, status } = useSession()
-
-  // react-hook-form 세팅
-  const form = useForm<CreateVendorCandidateSchema>({
-    resolver: zodResolver(createVendorCandidateSchema),
-    defaultValues: {
-      companyName: "",
-      contactEmail: "",  // 필수 입력값
-      contactPhone: "",
-      taxId: "",
-      address: "",
-      country: "",
-      source: "",
-      items: "",
-      remark: "",
-      status: "COLLECTED",
-    },
-  });
-
-  async function onSubmit(data: CreateVendorCandidateSchema) {
-    setIsSubmitting(true)
-    try {
-      // 세션 유효성 검사
-      if (!session || !session.user || !session.user.id) {
-        toast({
-          title: "인증 오류",
-          description: "로그인 정보를 찾을 수 없습니다. 다시 로그인해주세요.",
-          variant: "destructive",
-        })
-        return
-      }
-
-      // userId 추출 (세션 구조에 따라 조정 필요)
-      const userId = session.user.id
-
-      const result = await createVendorCandidate(data, Number(userId))
-      if (result.error) {
-        toast({
-          title: "오류 발생",
-          description: result.error,
-          variant: "destructive",
-        })
-        return
-      }
-      // 성공 시 모달 닫고 폼 리셋
-      toast({
-        title: "등록 완료",
-        description: "협력업체 후보가 성공적으로 등록되었습니다.",
-      })
-      form.reset()
-      setOpen(false)
-    } catch (error) {
-      console.error("Failed to create vendor candidate:", error)
-      toast({
-        title: "오류 발생",
-        description: "예상치 못한 오류가 발생했습니다.",
-        variant: "destructive",
-      })
-    } finally {
-      setIsSubmitting(false)
-    }
-  }
-
-  function handleDialogOpenChange(nextOpen: boolean) {
-    if (!nextOpen) {
-      form.reset()
-    }
-    setOpen(nextOpen)
-  }
-
-  return (
-    <Dialog open={open} onOpenChange={handleDialogOpenChange}>
-      {/* 모달을 열기 위한 버튼 */}
-      <DialogTrigger asChild>
-        <Button variant="default" size="sm">
-          Add Vendor Candidate
-        </Button>
-      </DialogTrigger>
-
-      <DialogContent className="sm:max-w-[525px]">
-        <DialogHeader>
-          <DialogTitle>Create New Vendor Candidate</DialogTitle>
-          <DialogDescription>
-            새 Vendor Candidate 정보를 입력하고 <b>Create</b> 버튼을 누르세요.
-          </DialogDescription>
-        </DialogHeader>
-
-        {/* shadcn/ui Form을 이용해 react-hook-form과 연결 */}
-        <Form {...form}>
-          <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-6">
-            <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
-              {/* Company Name 필드 */}
-              <FormField
-                control={form.control}
-                name="companyName"
-                render={({ field }) => (
-                  <FormItem>
-                    <FormLabel>Company Name <span className="text-red-500">*</span></FormLabel>
-                    <FormControl>
-                      <Input
-                        placeholder="Enter company name"
-                        {...field}
-                        disabled={isSubmitting}
-                      />
-                    </FormControl>
-                    <FormMessage />
-                  </FormItem>
-                )}
-              />
-
-              {/* Tax ID 필드 (새로 추가) */}
-              <FormField
-                control={form.control}
-                name="taxId"
-                render={({ field }) => (
-                  <FormItem>
-                    <FormLabel>Tax ID</FormLabel>
-                    <FormControl>
-                      <Input
-                        placeholder="Tax identification number"
-                        {...field}
-                        disabled={isSubmitting}
-                      />
-                    </FormControl>
-                    <FormMessage />
-                  </FormItem>
-                )}
-              />
-
-              {/* Contact Email 필드 */}
-              <FormField
-                control={form.control}
-                name="contactEmail"
-                render={({ field }) => (
-                  <FormItem>
-                    <FormLabel>Contact Email<span className="text-red-500">*</span></FormLabel>
-                    <FormControl>
-                      <Input
-                        placeholder="email@example.com"
-                        type="email"
-                        {...field}
-                        disabled={isSubmitting}
-                      />
-                    </FormControl>
-                    <FormMessage />
-                  </FormItem>
-                )}
-              />
-
-              {/* Contact Phone 필드 */}
-              <FormField
-                control={form.control}
-                name="contactPhone"
-                render={({ field }) => (
-                  <FormItem>
-                    <FormLabel>Contact Phone</FormLabel>
-                    <FormControl>
-                      <Input
-                        placeholder="+82-10-1234-5678"
-                        {...field}
-                        disabled={isSubmitting}
-                      />
-                    </FormControl>
-                    <FormMessage />
-                  </FormItem>
-                )}
-              />
-
-              {/* Address 필드 */}
-              <FormField
-                control={form.control}
-                name="address"
-                render={({ field }) => (
-                  <FormItem className="col-span-full">
-                    <FormLabel>Address</FormLabel>
-                    <FormControl>
-                      <Input
-                        placeholder="Company address"
-                        {...field}
-                        disabled={isSubmitting}
-                      />
-                    </FormControl>
-                    <FormMessage />
-                  </FormItem>
-                )}
-              />
-
-              {/* Country 필드 */}
-              <FormField
-                control={form.control}
-                name="country"
-                render={({ field }) => {
-                  const selectedCountry = countryArray.find(
-                    (c) => c.code === field.value
-                  )
-                  return (
-                    <FormItem>
-                      <FormLabel>Country</FormLabel>
-                      <Popover>
-                        <PopoverTrigger asChild>
-                          <FormControl>
-                            <Button
-                              variant="outline"
-                              role="combobox"
-                              className={cn(
-                                "w-full justify-between",
-                                !field.value && "text-muted-foreground"
-                              )}
-                              disabled={isSubmitting}
-                            >
-                              {selectedCountry
-                                ? selectedCountry.label
-                                : "Select a country"}
-                              <ChevronsUpDown className="ml-2 h-4 w-4 opacity-50" />
-                            </Button>
-                          </FormControl>
-                        </PopoverTrigger>
-                        <PopoverContent className="w-[300px] p-0">
-                          <Command>
-                            <CommandInput placeholder="Search country..." />
-                            <CommandList>
-                              <CommandEmpty>No country found.</CommandEmpty>
-                              <CommandGroup className="max-h-[300px] overflow-y-auto">
-                                {countryArray.map((country) => (
-                                  <CommandItem
-                                    key={country.code}
-                                    value={country.label}
-                                    onSelect={() =>
-                                      field.onChange(country.code)
-                                    }
-                                  >
-                                    <Check
-                                      className={cn(
-                                        "mr-2 h-4 w-4",
-                                        country.code === field.value
-                                          ? "opacity-100"
-                                          : "opacity-0"
-                                      )}
-                                    />
-                                    {country.label}
-                                  </CommandItem>
-                                ))}
-                              </CommandGroup>
-                            </CommandList>
-                          </Command>
-                        </PopoverContent>
-                      </Popover>
-                      <FormMessage />
-                    </FormItem>
-                  )
-                }}
-              />
-
-              {/* Source 필드 */}
-              <FormField
-                control={form.control}
-                name="source"
-                render={({ field }) => (
-                  <FormItem>
-                    <FormLabel>Source <span className="text-red-500">*</span></FormLabel>
-                    <FormControl>
-                      <Input
-                        placeholder="Where this candidate was found"
-                        {...field}
-                        disabled={isSubmitting}
-                      />
-                    </FormControl>
-                    <FormMessage />
-                  </FormItem>
-                )}
-              />
-
-
-              {/* Items 필드 (새로 추가) */}
-              <FormField
-                control={form.control}
-                name="items"
-                render={({ field }) => (
-                  <FormItem className="col-span-full">
-                    <FormLabel>Items <span className="text-red-500">*</span></FormLabel>
-                    <FormControl>
-                      <Textarea
-                        placeholder="List of items or products this vendor provides"
-                        className="min-h-[80px]"
-                        {...field}
-                        disabled={isSubmitting}
-                      />
-                    </FormControl>
-                    <FormMessage />
-                  </FormItem>
-                )}
-              />
-
-              {/* Remark 필드 (새로 추가) */}
-              <FormField
-                control={form.control}
-                name="remark"
-                render={({ field }) => (
-                  <FormItem className="col-span-full">
-                    <FormLabel>Remarks</FormLabel>
-                    <FormControl>
-                      <Textarea
-                        placeholder="Additional notes or comments"
-                        className="min-h-[80px]"
-                        {...field}
-                        disabled={isSubmitting}
-                      />
-                    </FormControl>
-                    <FormMessage />
-                  </FormItem>
-                )}
-              />
-            </div>
-
-            <DialogFooter>
-              <Button
-                type="button"
-                variant="outline"
-                onClick={() => setOpen(false)}
-                disabled={isSubmitting}
-              >
-                Cancel
-              </Button>
-              <Button type="submit" disabled={isSubmitting}>
-                {isSubmitting ? "Creating..." : "Create"}
-              </Button>
-            </DialogFooter>
-          </form>
-        </Form>
-      </DialogContent>
-    </Dialog>
-  )
-}
\ No newline at end of file
-- 
cgit v1.2.3

