From 359dd6a2803f438a6f7797513dab05306269eca2 Mon Sep 17 00:00:00 2001 From: Vins Date: Mon, 27 May 2024 11:30:12 +0200 Subject: [PATCH] Customer office relation --- package.json | 2 +- .../20240527091523_test/migration.sql | 47 + .../migration.sql | 2 + src/common/databases/schema.prisma | 3 + src/common/databases/seeders/oldSeeder.ts | 2187 +++++++++++++++++ src/common/databases/seeders/seeder.ts | 219 +- 6 files changed, 2360 insertions(+), 100 deletions(-) create mode 100644 src/common/databases/migrations/20240527091523_test/migration.sql create mode 100644 src/common/databases/migrations/20240527091621_office_customer_relation/migration.sql create mode 100644 src/common/databases/seeders/oldSeeder.ts diff --git a/package.json b/package.json index 006d18da..b9c0159d 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "file-type-checker": "^1.0.8", "fp-ts": "^2.16.1", "jsonwebtoken": "^9.0.0", - "le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.136", + "le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.137", "module-alias": "^2.2.2", "monocle-ts": "^2.3.13", "multer": "^1.4.5-lts.1", diff --git a/src/common/databases/migrations/20240527091523_test/migration.sql b/src/common/databases/migrations/20240527091523_test/migration.sql new file mode 100644 index 00000000..0eb15a1e --- /dev/null +++ b/src/common/databases/migrations/20240527091523_test/migration.sql @@ -0,0 +1,47 @@ +/* + Warnings: + + - Added the required column `office_uid` to the `customers` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "customers" ADD COLUMN "office_uid" VARCHAR(255) NOT NULL; + +-- Set the office_uid for existing rows based on the office with "idNot" = '0000' +UPDATE customers +SET office_uid = ( + SELECT uid + FROM offices + WHERE "idNot" = '0000' +); + +-- Alter the column to be NOT NULL +ALTER TABLE customers +ALTER COLUMN office_uid SET NOT NULL; + +-- Create a temporary table to store the mapping +CREATE TEMPORARY TABLE customer_office_update AS +SELECT c.uid AS customer_uid, of.office_uid +FROM customers c +JOIN "_OfficeFolderHasCustomers" ofhc ON c.uid = ofhc."A" +JOIN office_folders of ON ofhc."B" = of.uid; + +-- Update customers with the corresponding office_uid +UPDATE customers +SET office_uid = ( + SELECT office_uid + FROM customer_office_update + WHERE customer_office_update.customer_uid = customers.uid +); + +-- Drop the temporary table +DROP TABLE customer_office_update; + +-- Add the foreign key constraint +ALTER TABLE customers +ADD CONSTRAINT fk_customers_office +FOREIGN KEY (office_uid) REFERENCES offices(uid) +ON DELETE CASCADE; + +-- AddForeignKey +ALTER TABLE "customers" ADD CONSTRAINT "customers_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/src/common/databases/migrations/20240527091621_office_customer_relation/migration.sql b/src/common/databases/migrations/20240527091621_office_customer_relation/migration.sql new file mode 100644 index 00000000..16a52de4 --- /dev/null +++ b/src/common/databases/migrations/20240527091621_office_customer_relation/migration.sql @@ -0,0 +1,2 @@ +-- DropForeignKey +ALTER TABLE "customers" DROP CONSTRAINT "fk_customers_office"; diff --git a/src/common/databases/schema.prisma b/src/common/databases/schema.prisma index 3d813215..e42133a9 100644 --- a/src/common/databases/schema.prisma +++ b/src/common/databases/schema.prisma @@ -110,6 +110,7 @@ model Offices { document_types DocumentTypes[] office_roles OfficeRoles[] subscriptions Subscriptions[] + customers Customers[] @@map("offices") } @@ -125,6 +126,8 @@ model Customers { documents Documents[] password String? @db.VarChar(255) totpCodes TotpCodes[] + office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) + office_uid String @db.VarChar(255) @@map("customers") } diff --git a/src/common/databases/seeders/oldSeeder.ts b/src/common/databases/seeders/oldSeeder.ts new file mode 100644 index 00000000..667a20bc --- /dev/null +++ b/src/common/databases/seeders/oldSeeder.ts @@ -0,0 +1,2187 @@ +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// birthdate: null, +// created_at: new Date(), +// updated_at: new Date(), +// civility: ECivility.MALE, +// }, +// { +// address: addresses[6], +// first_name: "Jean", +// last_name: "Dubignot", +// email: "jean.dubignot@gmail.com", +// phone_number: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "+33785186013", +// cell_phone_number: "+33785186013", +// 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: "global", +// }, +// { +// name: "GET offices", +// label: "Afficher des offices", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "GET customers", +// label: "Afficher des clients", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "GET deeds", +// label: "Voir des types d'acte", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "GET deed-types", +// label: "Lecture des types d'actes", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "GET documents", +// label: "Afficher des documents", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "GET document-types", +// label: "Lecture des types de documents", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "GET files", +// label: "Lecture des fichiers", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "GET folders", +// label: "Afficher les dossiers", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "GET roles", +// label: "Afficher les rôles", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "GET rules", +// label: "Afficher les droits", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "GET office-roles", +// label: "Lecture des rôles d'office", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "POST deeds", +// label: "Créer un template de type d'acte", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "PUT deeds", +// label: "Modifier un type d'acte", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "DELETE deeds", +// label: "Supprimer des types d'actes", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "POST folders", +// label: "Créer un dossier", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "PUT folders", +// label: "Modifier des dossiers", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "DELETE folders", +// label: "Supprimer un dossier vide", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "POST documents", +// label: "Demander des documents à un client", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "PUT documents", +// label: "Valider des documents", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "DELETE documents", +// label: "Supprimer un document demandé", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "POST customers", +// label: "Créer des clients", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "PUT customers", +// label: "Modifier des clients", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "DELETE customers", +// label: "Supprimer un client", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "super-admin", +// }, +// { +// name: "POST anchors", +// label: "Ancrer un dossier", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "GET anchors", +// label: "Vérifier l'ancrage un dossier", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "global", +// }, +// { +// name: "POST deed-types", +// label: "Création des types d'actes", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "PUT deed-types", +// label: "Modification des types d'actes", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "DELETE deed-types", +// label: "Suppression des types d'actes", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "POST document-types", +// label: "Création des types de documents", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "PUT document-types", +// label: "Modification des types de documents", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "DELETE document-types", +// label: "Suppression des types de documents", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// 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: "PUT users", +// label: "Modification des utilisateurs", +// 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 offices", +// label: "Modification des offices", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "super-admin", +// }, +// { +// name: "PUT rib", +// label: "Editer le RIB de l'office", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "GET rib", +// label: "Lire le RIB de l'office", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "POST rib", +// label: "Déposer le RIB de l'office", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "DELETE rib", +// label: "Supprimer le RIB de l'office", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "GET subscriptions", +// label: "Récupérer les abonnements", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "POST subscriptions", +// label: "Inviter un collaborateur à l'abonnement", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "PUT subscriptions", +// label: "Modifier l'abonnement", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "GET stripe", +// label: "Gérer l'abonnement de l'office", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// { +// name: "POST stripe", +// label: "Payer un abonnement", +// created_at: new Date(), +// updated_at: new Date(), +// namespace: "collaborator", +// }, +// ]; + +// const rulesGroups = [ +// { +// name: "Gestion des matrices d'actes et des documents", +// created_at: new Date(), +// updated_at: new Date(), +// rules: [ +// "POST deeds", +// "PUT deeds", +// "DELETE deeds", +// "GET document-types", +// "DELETE deed-types", +// "PUT deed-types", +// "DELETE document-types", +// "GET deed-types", +// "POST document-types", +// "POST deed-types", +// "PUT document-types", +// ], +// }, +// { +// name: "Gestion de l'abonnement", +// uid: "94343601-04c8-44ef-afb9-3047597528a9", +// created_at: new Date(), +// updated_at: new Date(), +// rules: ["GET subscriptions", "POST subscriptions", "PUT subscriptions", "GET stripe", "POST stripe"], +// }, +// { +// name: "Intégration du RIB", +// created_at: new Date(), +// updated_at: new Date(), +// rules: ["PUT rib", "GET rib", "POST rib", "DELETE rib"], +// }, +// ]; + +// const collaboratorRules = rules.filter((rule) => rule.namespace === "collaborator"); +// const notaryRules = [...collaboratorRules, ...rules.filter((rule) => rule.namespace === "notary")]; +// const globalRules = [...notaryRules, ...rules.filter((rule) => rule.namespace === "global")]; +// const adminRules = [...globalRules, ...rules.filter((rule) => rule.namespace === "admin")]; +// const superAdminRules = [...adminRules, ...rules.filter((rule) => rule.namespace === "super-admin")]; + +// const roles: Role[] = [ +// { +// name: "super-admin", +// label: "Super administrateur", +// created_at: new Date(), +// updated_at: new Date(), +// rules: superAdminRules, +// }, +// { +// name: "admin", +// label: "Administrateur", +// created_at: new Date(), +// updated_at: new Date(), +// rules: adminRules, +// }, +// { +// name: "notary", +// label: "Notaire", +// created_at: new Date(), +// updated_at: new Date(), +// rules: [], +// }, +// { +// name: "default", +// label: "Utilisateur", +// created_at: new Date(), +// updated_at: new Date(), +// rules: [], +// }, +// ]; + +// const officeRoles: OfficeRole[] = [ +// { +// name: "Notaire", +// created_at: new Date(), +// updated_at: new Date(), +// office: offices[0]!, +// rules: globalRules, +// }, +// { +// name: "Collaborateur", +// created_at: new Date(), +// updated_at: new Date(), +// office: offices[0]!, +// rules: globalRules, +// }, +// ]; + +// 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: "Carte Nationale d'Identité recto-verso", +// office: offices[0], +// private_description: "Document d'identité", +// public_description: "Document d'identité", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Contrat de mariage", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Convention de PACS", +// office: offices[0], +// private_description: " ", +// public_description: "Avec précision du régime", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Titre de propriété", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Cahier des charges du lotissement", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Règlement du lotissement", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Cahier de prescriptions architecturales", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Statuts de l'association syndicale libre", +// office: offices[0], +// private_description: " ", +// public_description: "Avec nom et adresse du président", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Etat descriptif de division et règlement de copropriété", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Etat descriptif de division et règlement de copropriété modificatifs", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Carnet d'entretien", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Trois derniers PV D'AG", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Trois derniers relevés de charge", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Bail ou congé délivré", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Certificat d'assainissement", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Facture ou contrat d'electricité", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Facture ou contrat de gaz", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Loi carrez", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Etat parasitaire", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Amiante", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Facture des travaux", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Garanties décénales des entreprises", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "PV de réception des travaux", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Permis de construire et modificatifs", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Déclaration attestation l'achèvement des travaux", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Attestation de non opposition", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Assurance décenale", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Dommage ouvrage", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Dernière facture ramonage", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Liste du mobilier", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "RIB daté et signé", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Extrait KBIS et statuts de la société", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Document arpentage et plan de division", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Accord de prêt", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Offre de prêt", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Attestation dépôt de permis de construire", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Permis de construire", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Extrait acte de décès", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Fiche de renseignements d'états civils", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Donation entre epoux", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Testament", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Liste des banques avce un compte bancaire", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Contrat d'assurance-vie", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Liste des caisses versant une retraite ou une pension", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Dernière déclaration de revenus", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Avis d'imposition (revenus et ISF)", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Avis d'imposition (foncier et habitation)", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Liste des emprunts en cours", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Actes de donation", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Déclarations de dons faites aux impôts", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Actes de succession", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Actes de vente de biens", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Factures de travaux", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Bail de location", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Nom et adresse du Syndic", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Liste des autres biens", +// office: offices[0], +// private_description: " ", +// public_description: +// "Exemple: PEE, PER, parts de société, bijoux de valeur et oeuvres d'art, fonds de commerce, fonds artisanal, entreprise commerciale, exploitation agricole...", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Caution, Prestation compensatoire, Pension alimentaire", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Titre de propriété des biens", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Tableaux d'amortissement des prêts immobiliers", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Cartes grises et cotes ARGUS des véhicules", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Etat des avoirs bancaires", +// office: offices[0], +// private_description: " ", +// public_description: "Joints ou individuels au jour de la séparation", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Avoirs mobiliers", +// office: offices[0], +// private_description: " ", +// public_description: +// "arrêtés à la date de la séparation (relevés de comptes épargne entreprise, épargne retraite, assurance-vie...)", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Livret de famille", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Dernières régularisations de charges", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Diagnostic de Performance Energétique (DPE)", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Avis d'imposition N-1", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Avis d'imposition N-2", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Contrat de travail", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Trois derniers bulletins de salaire", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Bilan comptable", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Trois dernières quittances de loyers ou attestation d'hébergement", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Taxe foncière", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// archived_at: null, +// name: "Justificatif de domicile", +// office: offices[0], +// private_description: " ", +// public_description: " ", +// created_at: new Date(), +// updated_at: new Date(), +// }, +// { +// name: "Autres documents", +// archived_at: null, +// public_description: "Autres documents", +// private_description: "Autres documents", +// office: offices[0], +// created_at: new Date(), +// updated_at: new Date(), +// }, +// ]; + +// const deedTypes: DeedType[] = [ +// { +// name: "Promesse de vente", +// archived_at: null, +// description: "Promesse de vente entre deux partis", +// office: offices[0], +// created_at: new Date(), +// updated_at: new Date(), +// document_types: [...documentTypes.slice(0, 31), documentTypes[66]!], +// }, +// { +// 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(30, 36), +// }, +// { +// 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(36, 56), documentTypes[62]!, documentTypes[30]!], +// }, +// { +// name: "Acte de divorce", +// archived_at: null, +// description: "Acte de divorce", +// office: offices[0], +// created_at: new Date(), +// updated_at: new Date(), +// document_types: [...documentTypes.slice(57, 62), documentTypes[30]!, documentTypes[0]!], +// }, +// { +// 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[0]!, documentTypes[62]!, documentTypes[57]!], +// }, +// { +// name: "Bail d'habitation", +// archived_at: null, +// description: "Bail d'habitation", +// office: offices[0], +// created_at: new Date(), +// updated_at: new Date(), +// document_types: [documentTypes[0]!, documentTypes[30]!, documentTypes[57]!, ...documentTypes.slice(62)], +// }, +// ]; + +// 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 ruleGroup of rulesGroups) { +// await prisma.rulesGroups.create({ +// data: { +// uid: ruleGroup.uid, +// name: ruleGroup.name, +// rules: { +// connect: ruleGroup.rules?.map((rule) => ({ +// uid: rules.find((r) => r.name === rule)!.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, +// 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: {}, +// }, +// }, +// }, +// }; + +// 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.info(">MOCK DATA - Seeding completed!"); +// } catch (error) { +// console.error(error); +// console.info("Data already seeded, skiping"); +// } +// } +// main(); diff --git a/src/common/databases/seeders/seeder.ts b/src/common/databases/seeders/seeder.ts index b266bbed..88466bc2 100644 --- a/src/common/databases/seeders/seeder.ts +++ b/src/common/databases/seeders/seeder.ts @@ -422,105 +422,6 @@ export default async function main() { }, ]; - 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", @@ -1916,6 +1817,121 @@ export default async function main() { }, ]; + const customers: Customer[] = [ + { + contact: contacts[0], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[5], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[6], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[7], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[8], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[9], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[10], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[11], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[12], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[13], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[14], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[15], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[16], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[17], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[18], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + { + contact: contacts[19], + created_at: new Date(), + updated_at: new Date(), + status: ECustomerStatus.PENDING, + office_membership: offices[0], + }, + ]; + for (const office of offices) { const officeCreated = await prisma.offices.create({ data: { @@ -2056,6 +2072,11 @@ export default async function main() { const createArgs: Prisma.CustomersCreateArgs = { data: { status: ECustomerStatus.PENDING, + office: { + connect: { + uid: customer.office_membership!.uid!, + }, + }, contact: { create: { first_name: customer.contact!.first_name,