import { Customers, DeedTypes, DocumentTypes, ECivility, ECustomerStatus, Offices, PrismaClient, Users } from "@prisma/client"; import User, { Customer, DeedType, DocumentType, Office } from "le-coffre-resources/dist/SuperAdmin"; const prisma = new PrismaClient(); export const initOffice = (office: Office): Promise => { return prisma.offices.create({ data: { idNot: office.idNot, name: office.name, crpcen: office.crpcen, address: { create: { address: office.address.address, zip_code: office.address.zip_code, city: office.address.city, }, }, }, }); }; export const initDocumentType = (documentType: DocumentType, office: Office): Promise => { return prisma.documentTypes.create({ data: { name: documentType.name, public_description: documentType.public_description, private_description: documentType.private_description, archived_at: null, office_uid: office.uid!, }, }); }; export const initDeedType = (deedType: DeedType, office: Office, documentTypes?: string[]): Promise => { return prisma.deedTypes.create({ data: { name: deedType.name, description: deedType.description, archived_at: null, office_uid: office.uid!, deed_type_has_document_types: { createMany: { data: documentTypes!.map((documentType) => ({ document_type_uid: documentType, })), skipDuplicates: true, }, }, }, }); }; export const initCustomers = (customer: Customer): Promise => { return prisma.customers.create({ data: { status: ECustomerStatus.PENDING, contact: { create: { first_name: customer.contact.first_name, last_name: customer.contact.last_name, email: customer.contact.email, phone_number: customer.contact.phone_number, cell_phone_number: customer.contact?.cell_phone_number, civility: ECivility[customer.contact.civility as keyof typeof ECivility], address: { create: { address: customer.contact.address!.address, zip_code: customer.contact.address!.zip_code, city: customer.contact.address!.city, }, }, }, }, }, }); }; export const initUsers = (user: User): Promise => { return prisma.users.create({ data: { idNot: user.idNot, office_membership: { connectOrCreate: { where: { idNot: user.office_membership.idNot, }, create: { idNot: user.office_membership.idNot, name: user.office_membership.name, crpcen: user.office_membership.crpcen, address: { create: { address: user.office_membership.address.address, zip_code: user.office_membership.address.zip_code, city: user.office_membership.address.city, }, }, }, }, }, contact: { create: { first_name: user.contact.first_name, last_name: user.contact.last_name, email: user.contact.email, phone_number: user.contact.phone_number, cell_phone_number: user.contact.cell_phone_number, civility: ECivility[user.contact.civility as keyof typeof ECivility], address: { create: { address: user.contact.address!.address, zip_code: user.contact.address!.zip_code, city: user.contact.address!.city, }, }, }, }, }, }); };