2024-05-27 15:19:25 +02:00

171 lines
3.9 KiB
TypeScript

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<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): Promise<DeedTypes> => {
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<Customers> => {
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<Rules> => {
return prisma.rules.create({
data: {
name: rule.name,
label: rule.label,
},
});
};
export const initRoles = (role: Role): Promise<Roles> => {
return prisma.roles.create({
data: {
name: role.name,
label: role.label,
},
});
};
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,
},
},
},
},
role: {
connectOrCreate: {
where: {
uid: user.role!.uid,
},
create: {
name: user.role!.name,
label: user.role!.label
},
},
},
},
});
};