import { Customers, DeedTypes, DocumentTypes, ECivility, ECustomerStatus, Offices, Prisma, PrismaClient, Roles, Rules, Users, } from "@prisma/client"; import User, { Customer, DeedType, DocumentType, Office, Role, Rule } 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): Promise => { const createArgs: Prisma.DeedTypesCreateArgs = { data: { name: deedType.name, description: deedType.description || "", office: { connect: { uid: deedType.office!.uid, }, }, }, }; if (deedType.document_types) { createArgs.data.document_types = { connect: deedType.document_types.map((documentType) => ({ uid: documentType.uid, })), }; } return prisma.deedTypes.create(createArgs); }; export const initCustomers = (customer: Customer): Promise => { return prisma.customers.create({ data: { status: ECustomerStatus.PENDING, office: { connect: { uid: customer.office?.uid, }, }, 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 initRules = (rule: Rule): Promise => { return prisma.rules.create({ data: { name: rule.name, label: rule.label, }, }); }; export const initRoles = (role: Role): Promise => { return prisma.roles.create({ data: { name: role.name, label: role.label, }, }); }; 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, }, }, }, }, role: { connectOrCreate: { where: { uid: user.role!.uid, }, create: { name: user.role!.name, label: user.role!.label }, }, }, }, }); };