2023-09-29 14:12:57 +02:00

1589 lines
40 KiB
TypeScript

import { ECivility, ECustomerStatus, EFolderStatus, EOfficeStatus, Prisma, PrismaClient } from "@prisma/client";
import User, {
Address,
Contact,
Customer,
Deed,
DeedType,
DocumentType,
Office,
OfficeFolder,
OfficeRole,
Role,
Rule,
} from "le-coffre-resources/dist/SuperAdmin";
import "module-alias/register";
export default async function main() {
try {
const prisma = new PrismaClient();
const idNot3 = "rleenrenlnr";
const idNot4 = "ljfeflecnmd";
const idNot5 = "rflrefrjf";
const idNot6 = "er3ojfdlfnd";
const addresses: Address[] = [
{
address: "template",
city: "template",
zip_code: 0o00,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Pierre Emillion",
city: "Pacé",
zip_code: 35740,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Pierre Charles",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Pierre Pologne",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Pierre Marcel",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Pierre Jacques",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Pierre Pascal",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Maxime Henry",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Maxime Francis",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Avenue Paul Roger",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Avenue Paul Franck",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Avenue Paul Maréchal",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Avenue Marcel Denis",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Place Alexandre",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Place Alexandre Jacques",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Place Alexandre 2",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue du livre",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Place de la joie",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Paul Henry",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
{
address: "Rue Marcelin",
city: "Rennes",
zip_code: 35000,
created_at: new Date(),
updated_at: new Date(),
},
];
const contacts: Contact[] = [
{
address: addresses[0],
first_name: "Angela",
last_name: "Dubois",
email: "angela.dubois@gmail.com",
phone_number: "06 12 34 56 78",
cell_phone_number: "06 12 34 56 78",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[1],
first_name: "Maxime",
last_name: "Lalo",
email: "maxime.lalo@smart-chain.fr",
phone_number: "06 23 45 67 89",
cell_phone_number: "06 23 45 67 89",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
{
address: addresses[2],
first_name: "Vincent",
last_name: "Alamelle",
email: "vincent.alamelle@smart-chain.fr",
phone_number: "06 34 56 78 90",
cell_phone_number: "06 34 56 78 90",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
{
address: addresses[3],
first_name: "Melissa",
last_name: "Desde",
email: "melissa.desde@smart-chain.fr",
phone_number: "06 45 67 89 01",
cell_phone_number: "06 45 67 89 01",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[4],
first_name: "Maxime",
last_name: "Leroy",
email: "maxime.leroy@hotmail.fr",
phone_number: "06 56 78 90 12",
cell_phone_number: "06 56 78 90 12",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
{
address: addresses[5],
first_name: "Paul",
last_name: "Dupont",
email: "paul.dupont@outlook.com",
phone_number: "06 67 89 01 23",
cell_phone_number: "06 67 89 01 23",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
{
address: addresses[6],
first_name: "Jean",
last_name: "Dubigot",
email: "jean.dubigot@gmail.com",
phone_number: "06 78 90 12 34",
cell_phone_number: "06 78 90 12 34",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[7],
first_name: "Vincent",
last_name: "Martin",
email: "vincent.martin@gmail.com",
phone_number: "06 89 01 23 45",
cell_phone_number: "06 89 01 23 45",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
{
address: addresses[8],
first_name: "Lucie",
last_name: "Chevalier",
email: "lucie.chevalier@outlook.com",
phone_number: "07 12 34 56 78",
cell_phone_number: "07 12 34 56 78",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[9],
first_name: "Sébastien",
last_name: "Dubois",
email: "sebastien.dubois@gmail.com",
phone_number: "07 23 45 67 89",
cell_phone_number: "07 23 45 67 89",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
{
address: addresses[10],
first_name: "Mathilde",
last_name: "Durand",
email: "mathilde.durand@gmail.com",
phone_number: "07 34 56 78 90",
cell_phone_number: "07 34 56 78 90",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[11],
first_name: "Antoine",
last_name: "Bernard",
email: "antoine.bernard@outlook.com",
phone_number: "07 45 67 89 01",
cell_phone_number: "07 45 67 89 01",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
{
address: addresses[12],
first_name: "Camille",
last_name: "Laurent",
email: "camille.laurent@gmail.com",
phone_number: "07 56 78 90 12",
cell_phone_number: "07 56 78 90 12",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[13],
first_name: "Julien",
last_name: "Mercier",
email: "julien.mercier@hotmail.fr",
phone_number: "07 67 89 01 23",
cell_phone_number: "07 67 89 01 23",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
{
address: addresses[14],
first_name: "Charlotte",
last_name: "Lefebvre",
email: "charlotte.lefebvre@gmail.com",
phone_number: "07 78 90 12 34",
cell_phone_number: "07 78 90 12 34",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[15],
first_name: "Caroline",
last_name: "Pallut",
email: "caroline.pallut@gmail.com",
phone_number: "07 89 01 23 45",
cell_phone_number: "07 89 01 23 45",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[16],
first_name: "Nadège",
last_name: "Gauchet",
email: "nedege.gauchet@outlook.com",
phone_number: "06 11 22 33 44",
cell_phone_number: "06 11 22 33 44",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[17],
first_name: "Matthieu",
last_name: "Bougeard",
email: "matthieu.bougeard@gmail.com",
phone_number: "07 22 33 44 55",
cell_phone_number: "07 22 33 44 55",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
{
address: addresses[18],
first_name: "Cécile",
last_name: "Celton",
email: "cecile.celton@outlook.com",
phone_number: "06 55 66 77 88",
cell_phone_number: "06 55 66 77 88",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.FEMALE,
},
{
address: addresses[19],
first_name: "Gwendal",
last_name: "Texier",
email: "gwendal.texier@gmail.com",
phone_number: "07 88 99 00 11",
cell_phone_number: "07 88 99 00 11",
birthdate: null,
created_at: new Date(),
updated_at: new Date(),
civility: ECivility.MALE,
},
];
const offices: Office[] = [
{
idNot: "0000",
name: "Office Template",
crpcen: "0000",
address: addresses[0],
created_at: new Date(),
updated_at: new Date(),
office_status: EOfficeStatus.ACTIVATED,
},
];
const customers: Customer[] = [
{
contact: contacts[0],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[5],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[6],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[7],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[8],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[9],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[10],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[11],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[12],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[13],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[14],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[15],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[16],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[17],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[18],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
{
contact: contacts[19],
created_at: new Date(),
updated_at: new Date(),
status: ECustomerStatus.PENDING,
},
];
const rules: Rule[] = [
{
name: "GET users",
label: "Lecture des utilisateurs",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET offices",
label: "Lecture des offices",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET customers",
label: "Lecture des clients",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET deeds",
label: "Lecture des actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET deed-types",
label: "Lecture des types d'actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET documents",
label: "Lecture des documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET document-types",
label: "Lecture des types de documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET files",
label: "Lecture des fichiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET folders",
label: "Lecture des dossiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET roles",
label: "Lecture utilisateurs",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET rules",
label: "Lecture des droits",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET office-roles",
label: "Lecture des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST deeds",
label: "Création des actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "PUT deeds",
label: "Modification des actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "DELETE deeds",
label: "Suppression des actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST folders",
label: "Création des dossiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "PUT folders",
label: "Modification des dossiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "DELETE folders",
label: "Suppression des dossiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST documents",
label: "Création des documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "PUT documents",
label: "Modification des documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "DELETE documents",
label: "Suppression des documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST customers",
label: "Création des clients",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "PUT customers",
label: "Modification des clients",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "DELETE customers",
label: "Suppression des clients",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST anchors",
label: "Ancrer un dossier",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET anchors",
label: "Vérifier l'ancrage un dossier",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST deed-types",
label: "Création des types d'actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "PUT deed-types",
label: "Modification des types d'actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "DELETE deed-types",
label: "Suppression des types d'actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "POST document-types",
label: "Création des types de documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "PUT document-types",
label: "Modification des types de documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "DELETE document-types",
label: "Suppression des types de documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "POST office-roles",
label: "Création des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "PUT office-roles",
label: "Modification des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "DELETE office-roles",
label: "Suppression des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "DELETE office-roles",
label: "Suppression des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "super-admin",
},
{
name: "PUT users",
label: "Modification des utilisateurs",
created_at: new Date(),
updated_at: new Date(),
namespace: "super-admin",
},
{
name: "PUT offices",
label: "Modification des offices",
created_at: new Date(),
updated_at: new Date(),
namespace: "super-admin",
},
];
const roles: Role[] = [
{
name: "super-admin",
label: "Super administrateur",
created_at: new Date(),
updated_at: new Date(),
rules: rules,
},
{
name: "admin",
label: "Administrateur",
created_at: new Date(),
updated_at: new Date(),
rules: rules.slice(0, 35),
},
{
name: "notary",
label: "Notaire",
created_at: new Date(),
updated_at: new Date(),
rules: rules.slice(0, 25),
},
{
name: "default",
label: "Utilisateur",
created_at: new Date(),
updated_at: new Date(),
rules: rules.slice(0, 1),
},
];
const officeRoles: OfficeRole[] = [
{
name: "Notaire",
created_at: new Date(),
updated_at: new Date(),
office: offices[0]!,
rules: rules.slice(0, 35),
},
{
name: "Collaborateur",
created_at: new Date(),
updated_at: new Date(),
office: offices[0]!,
rules: rules.slice(0, 22),
},
];
const users: User[] = [
{
created_at: new Date(),
updated_at: new Date(),
idNot: idNot3,
contact: contacts[1],
office_membership: offices[0],
role: roles[1],
},
{
created_at: new Date(),
updated_at: new Date(),
idNot: idNot4,
contact: contacts[2],
office_membership: offices[0],
role: roles[2],
office_role: officeRoles[2],
},
{
created_at: new Date(),
updated_at: new Date(),
idNot: idNot5,
contact: contacts[3],
office_membership: offices[0],
role: roles[1],
office_role: officeRoles[3],
},
{
created_at: new Date(),
updated_at: new Date(),
idNot: idNot6,
contact: contacts[4],
office_membership: offices[0],
role: roles[3],
},
];
const documentTypes: DocumentType[] = [
{
archived_at: null,
name: "Document d'identité",
office: offices[0],
private_description:
"Document officiel d'identification utilisé par plusieurs personnes pour prouver leur identité et leur nationalité (CNI, passeport)",
public_description:
"Document officiel d'identification utilisé par plusieurs personnes pour prouver leur identité et leur nationalité (CNI, passeport)",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Taxe Foncière",
office: offices[0],
private_description:
"Impôt annuel imposé sur les propriétés foncières et utilisé pour financer les services publics locaux.",
public_description:
"Impôt annuel imposé sur les propriétés foncières et utilisé pour financer les services publics locaux.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Contrat Mariage",
office: offices[0],
private_description: "Accord légal qui établit les droits et les obligations entre deux personnes s'unissant en mariage.",
public_description: "Accord légal qui établit les droits et les obligations entre deux personnes s'unissant en mariage.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Livret de famille",
office: offices[0],
private_description:
"Document officiel qui enregistre les détails et les événements familiaux tels que les mariages, les naissances et les décès d'un couple et de leurs enfants.",
public_description:
"Document officiel qui enregistre les détails et les événements familiaux tels que les mariages, les naissances et les décès d'un couple et de leurs enfants.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Bail commercial",
office: offices[0],
private_description:
"Contrat légal entre un propriétaire et un locataire pour la location d'un bien immobilier utilisé à des fins commerciales ou professionnelles.",
public_description:
"Contrat légal entre un propriétaire et un locataire pour la location d'un bien immobilier utilisé à des fins commerciales ou professionnelles.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Statuts SCI",
office: offices[0],
private_description:
"Document légal qui définit les règles et les dispositions régissant la Société Civile Immobilière (SCI).",
public_description:
"Document légal qui définit les règles et les dispositions régissant la Société Civile Immobilière (SCI).",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Avis de taxe foncière",
office: offices[0],
private_description: "Notification officielle indiquant le montant de l'impôt foncier dû sur une propriété.",
public_description: "Notification officielle indiquant le montant de l'impôt foncier dû sur une propriété.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Appel de charge de copropriété",
office: offices[0],
private_description:
"Document envoyé aux copropriétaires pour les informer des dépenses et des charges communes liées à la gestion et à l'entretien de l'immeuble.",
public_description:
"Document envoyé aux copropriétaires pour les informer des dépenses et des charges communes liées à la gestion et à l'entretien de l'immeuble.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "PVAG",
office: offices[0],
private_description:
"Compte rendu écrit des discussions, décisions et résolutions prises lors d'une réunion d'assemblée générale de copropriété.",
public_description:
"Compte rendu écrit des discussions, décisions et résolutions prises lors d'une réunion d'assemblée générale de copropriété.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Règlement de copropriété",
office: offices[0],
private_description:
"Document juridique qui établit les règles et les droits des copropriétaires d'un immeuble en copropriété.",
public_description:
"Document juridique qui établit les règles et les droits des copropriétaires d'un immeuble en copropriété.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Titre de propriété",
office: offices[0],
private_description: "Document légal qui atteste de la propriété d'un bien immobilier et en identifie le propriétaire.",
public_description: "Document légal qui atteste de la propriété d'un bien immobilier et en identifie le propriétaire.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Plan et loi carrez",
office: offices[0],
private_description:
"Document officiel qui mesure la superficie d'un lot ou d'un bien immobilier, conformément à la loi Carrez qui encadre les transactions immobilières.",
public_description:
"Document officiel qui mesure la superficie d'un lot ou d'un bien immobilier, conformément à la loi Carrez qui encadre les transactions immobilières.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "CNI",
office: offices[0],
private_description:
"Document officiel d'identification délivré par l'État pour prouver l'identité et la nationalité d'une personne.",
public_description:
"Document officiel d'identification délivré par l'État pour prouver l'identité et la nationalité d'une personne.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Modifications règlement copropriété (plusieurs)",
office: offices[0],
private_description:
"Documents légaux qui apportent des changements ou des ajustements aux règles et dispositions du règlement de copropriété initial.",
public_description:
"Documents légaux qui apportent des changements ou des ajustements aux règles et dispositions du règlement de copropriété initial.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Avis de décès",
office: offices[0],
private_description:
"Notification officielle délivrée par les autorités compétentes pour informer du décès d'une personne.",
public_description: "Notification officielle délivrée par les autorités compétentes pour informer du décès d'une personne.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Lettre de mission",
office: offices[0],
private_description:
"Document contractuel qui définit les termes et les objectifs d'une mission confiée à une personne ou à une entreprise.",
public_description:
"Document contractuel qui définit les termes et les objectifs d'une mission confiée à une personne ou à une entreprise.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "DPE",
office: offices[0],
private_description: "Diagnostic de Performance Energétique.",
public_description: "Diagnostic de Performance Energétique.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "RIB",
office: offices[0],
private_description: "Relevé d'identité bancaire ou IBAN.",
public_description: "Relevé d'identité bancaire ou IBAN.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Acte d'achat par la SCI",
office: offices[0],
private_description: "Acte d'achat par la SCI.",
public_description: "Acte d'achat par la SCI.",
created_at: new Date(),
updated_at: new Date(),
},
{
archived_at: null,
name: "Autres documents",
office: offices[0],
private_description: "Document ajouté à l'initiative du client",
public_description: "Documents annexes pour compléter le dossier",
created_at: new Date(),
updated_at: new Date(),
},
];
const deedTypes: DeedType[] = [
{
name: "Acte de donation",
archived_at: null,
description: "Acte de donation",
office: offices[0],
created_at: new Date(),
updated_at: new Date(),
document_types: documentTypes.slice(0, 4),
},
{
name: "Acte de vente",
archived_at: null,
description: "Acte de vente",
office: offices[0],
created_at: new Date(),
updated_at: new Date(),
document_types: documentTypes.slice(0, 4),
},
{
name: "Acte de succession",
archived_at: null,
description: "Acte de succession",
office: offices[0],
created_at: new Date(),
updated_at: new Date(),
document_types: documentTypes.slice(0, 4),
},
{
name: "Acte de vente de maison individuelle",
archived_at: null,
description: "Acte de vente de maison individuelle",
office: offices[0],
created_at: new Date(),
updated_at: new Date(),
document_types: documentTypes.slice(0, 4),
},
];
const deeds: Deed[] = [
{
deed_type: deedTypes[0],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[0],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[0],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[0],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[0],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[0],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[0],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[1],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[1],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[1],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[1],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[1],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[1],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[1],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[2],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[2],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[2],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[2],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[2],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[2],
created_at: new Date(),
updated_at: new Date(),
},
{
deed_type: deedTypes[2],
created_at: new Date(),
updated_at: new Date(),
},
];
const officeFolders: OfficeFolder[] = [
{
folder_number: "0001",
name: "Vente par Mme. Simon au profit de Mme. Lextrait",
deed: deeds[0],
status: EFolderStatus.LIVE,
created_at: new Date(),
updated_at: new Date(),
office: offices[0],
description: null,
archived_description: null,
},
{
folder_number: "0002",
name: "Donation des parts sociales de la société SARL FLORE",
deed: deeds[1],
status: EFolderStatus.LIVE,
created_at: new Date(),
updated_at: new Date(),
office: offices[0],
description: null,
archived_description: null,
},
{
folder_number: "0003",
name: "Vente par Mme. Lefebvre au profit de Mme. Mathieu",
deed: deeds[2],
status: EFolderStatus.LIVE,
created_at: new Date(),
updated_at: new Date(),
office: offices[0],
description: null,
archived_description: null,
},
{
folder_number: "0004",
name: "Vente par Mme. Chevalier au profit de M. Daveau",
deed: deeds[3],
status: EFolderStatus.LIVE,
created_at: new Date(),
updated_at: new Date(),
office: offices[0],
description: null,
archived_description: null,
},
{
folder_number: "0005",
name: "Vente par M. Lalo au profit de Mme. Pigale",
deed: deeds[4],
status: EFolderStatus.LIVE,
created_at: new Date(),
updated_at: new Date(),
office: offices[0],
description: null,
archived_description: null,
},
{
folder_number: "0006",
name: "Donation des parts sociales de la société SMART-TALENT",
deed: deeds[5],
status: EFolderStatus.LIVE,
created_at: new Date(),
updated_at: new Date(),
office: offices[0],
description: null,
archived_description: null,
},
{
folder_number: "0007",
name: "Vente par M. Girard au profit de M. Louis",
deed: deeds[6],
status: EFolderStatus.LIVE,
created_at: new Date(),
updated_at: new Date(),
office: offices[0],
description: null,
archived_description: null,
},
{
folder_number: "0008",
name: "Vente par Mme. Leclerc au profit de M. Louis",
deed: deeds[7],
status: EFolderStatus.LIVE,
created_at: new Date(),
updated_at: new Date(),
office: offices[0],
description: null,
archived_description: null,
},
{
folder_number: "0009",
name: "Vente par M. Lambert au profit de M. Holmes",
deed: deeds[8],
status: EFolderStatus.LIVE,
created_at: new Date(),
updated_at: new Date(),
office: offices[0],
description: null,
archived_description: null,
},
];
for (const office of offices) {
const officeCreated = await 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,
},
},
office_status: EOfficeStatus.ACTIVATED,
},
});
office.uid = officeCreated.uid;
}
for (const rule of rules) {
const ruleCreated = await prisma.rules.create({
data: {
name: rule.name,
label: rule.label,
namespace: rule.namespace,
},
});
rule.uid = ruleCreated.uid;
}
for (const role of roles) {
const roleCreated = await prisma.roles.create({
data: {
name: role.name,
label: role.label,
rules: {
connect: role.rules?.map((rule) => ({
uid: rule.uid!,
})),
},
},
});
role.uid = roleCreated.uid;
}
for (const officeRole of officeRoles) {
const officeRoleCreated = await prisma.officeRoles.create({
data: {
name: officeRole.name,
office: {
connect: {
uid: officeRole.office.uid,
},
},
rules: {
connect: officeRole.rules?.map((rule) => ({
uid: rule.uid!,
})),
},
},
});
officeRole.uid = officeRoleCreated.uid;
}
for (const user of users) {
const createArgs: Prisma.UsersCreateArgs = {
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: {},
},
},
role: {
connect: {
uid: user.role!.uid,
},
},
},
};
if (user.contact!.address) {
createArgs.data.contact!.create!.address!.create = {
address: user.contact!.address.address,
zip_code: user.contact!.address.zip_code,
city: user.contact!.address.city,
};
}
if (user.office_role) {
createArgs.data.office_role = {
connect: {
uid: user.office_role.uid,
},
};
}
const userCreated = await prisma.users.create(createArgs);
user.uid = userCreated.uid;
}
for (const customer of customers) {
const createArgs: Prisma.CustomersCreateArgs = {
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: {},
},
},
},
};
if (customer.contact?.address) {
createArgs.data.contact!.create!.address = {
create: {
address: customer.contact?.address?.address,
zip_code: customer.contact?.address?.zip_code,
city: customer.contact?.address?.city,
},
};
}
const customersCreated = await prisma.customers.create(createArgs);
customer.uid = customersCreated.uid;
}
for (const documentType of documentTypes) {
const documentTypeCreated = await prisma.documentTypes.create({
data: {
name: documentType.name,
public_description: documentType.public_description,
private_description: documentType.private_description,
office: {
connect: {
uid: documentType.office!.uid,
},
},
},
});
documentType.uid = documentTypeCreated.uid;
}
for (const deedType of 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,
})),
};
}
const deedTypeCreated = await prisma.deedTypes.create(createArgs);
deedType.uid = deedTypeCreated.uid;
}
for (const deed of deeds) {
const createArgs: Prisma.DeedsCreateArgs = {
data: {
deed_type: {
connect: {
uid: deed.deed_type!.uid,
},
},
},
};
const deedTypeWithDocumentTypes = await prisma.deedTypes.findUniqueOrThrow({
where: {
uid: deed.deed_type!.uid,
},
include: { document_types: true },
});
if (deedTypeWithDocumentTypes.document_types) {
createArgs.data.document_types = {
connect: deedTypeWithDocumentTypes.document_types.map((documentType) => ({
uid: documentType.uid,
})),
};
}
const deedCreated = await prisma.deeds.create(createArgs);
deed.uid = deedCreated.uid;
}
for (const officeFolder of officeFolders) {
const officeFolderCreated = await prisma.officeFolders.create({
data: {
folder_number: officeFolder.folder_number,
name: officeFolder.name,
description: officeFolder.description,
status: EFolderStatus.LIVE,
deed: {
connect: {
uid: officeFolder.deed?.uid,
},
},
office: {
connect: {
uid: officeFolder.office!.uid,
},
},
stakeholders: {
connect: officeFolder.stakeholders?.map((stakeholder) => ({
uid: stakeholder.uid!,
})),
},
},
});
officeFolder.uid = officeFolderCreated.uid;
}
console.log(">MOCK DATA - Seeding completed!");
} catch (error) {
console.log(error);
console.log("Data already seeded, skiping");
}
}
main();