import { prisma } from "../../config/prisma";

export function findUserWithOrg(userId: string) {
  return prisma.user.findUnique({
    where: { id: userId },
    select: { id: true, organizationId: true, role: true },
  });
}

export function findOrganizationById(id: string) {
  return prisma.organization.findUnique({ where: { id } });
}

export function createOrganizationTx(userId: string, data: { name: string; gstin?: string; logoUrl?: string }) {
  return prisma.$transaction(async (tx) => {
    const org = await tx.organization.create({ data });
    await tx.user.update({ where: { id: userId }, data: { organizationId: org.id } });
    return org;
  });
}

export function updateOrganizationById(id: string, data: Partial<{ name: string; gstin: string; logoUrl: string }>) {
  return prisma.organization.update({ where: { id }, data });
}

export function findAllOrganizations() {
  return prisma.organization.findMany();
}

export function deleteOrganizationTx(id: string) {
  return prisma.$transaction(async (tx) => {
    await tx.user.updateMany({ where: { organizationId: id }, data: { organizationId: null } });
    return tx.organization.delete({ where: { id } });
  });
}
