summaryrefslogtreecommitdiff
path: root/lib/owner-companies/service.ts
blob: 3692abd42b8240f4a8c23d7e56608927710bd9ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// lib/owner-companies/service.ts
"use server";

import db from "@/db/db";
import { ownerCompanies, users } from "@/db/schema";
import { revalidatePath } from "next/cache";
import { eq } from "drizzle-orm";

export async function createOwnerCompany(data: { name: string }) {
  const [company] = await db
    .insert(ownerCompanies)
    .values({
      name: data.name,
    })
    .returning();

  revalidatePath("/owner-companies");
  return { success: true, data: company };
}

export async function updateOwnerCompany(
  id: number,
  data: { name: string }
) {
  const [company] = await db
    .update(ownerCompanies)
    .set({
      name: data.name,
    })
    .where(eq(ownerCompanies.id, id))
    .returning();

  revalidatePath("/owner-companies");
  revalidatePath(`/owner-companies/${id}`);
  return { success: true, data: company };
}

export async function createOwnerCompanyUser(
  companyId: number,
  data: {
    name: string;
    email: string;
    phone?: string;
    employeeNumber?: string;
  }
) {
  // 이메일 중복 체크
  const existing = await db
    .select()
    .from(users)
    .where(eq(users.email, data.email))
    .limit(1);

  if (existing.length > 0) {
    return { success: false, error: "이미 사용 중인 이메일입니다." };
  }

  const [user] = await db
    .insert(users)
    .values({
      ...data,
      ownerCompanyId: companyId,
      domain: "owner", // 발주처 도메인
      isActive: true,
    })
    .returning();

  revalidatePath(`/owner-companies/${companyId}/users`);
  return { success: true, data: user };
}

export async function getOwnerCompanyUsers(companyId: number) {
  return await db
    .select()
    .from(users)
    .where(eq(users.ownerCompanyId, companyId));
}