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();