171 lines
3.9 KiB
TypeScript
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
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
};
|