122 lines
4.1 KiB
TypeScript
122 lines
4.1 KiB
TypeScript
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<Offices> => {
|
|
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<DocumentTypes> => {
|
|
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<DeedTypes> => {
|
|
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<Customers> => {
|
|
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<Users> => {
|
|
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,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
};
|