Merge branch 'staging' into preprod
This commit is contained in:
commit
bbdb34509a
1059
package-lock.json
generated
1059
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -52,7 +52,7 @@
|
||||
"cron": "^2.3.1",
|
||||
"express": "^4.18.2",
|
||||
"jsonwebtoken": "^9.0.0",
|
||||
"le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.69",
|
||||
"le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.73",
|
||||
"module-alias": "^2.2.2",
|
||||
"multer": "^1.4.5-lts.1",
|
||||
"next": "^13.1.5",
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Response, Request } from "express";
|
||||
import { Controller, Get } from "@ControllerPattern/index";
|
||||
import { Controller, Get, Post } from "@ControllerPattern/index";
|
||||
import ApiController from "@Common/system/controller-pattern/ApiController";
|
||||
import { Service } from "typedi";
|
||||
import DocumentsService from "@Services/customer/DocumentsService/DocumentsService";
|
||||
@ -7,6 +7,7 @@ import { Documents, Prisma } from "@prisma/client";
|
||||
import { Document } from "le-coffre-resources/dist/Customer";
|
||||
import authHandler from "@App/middlewares/AuthHandler";
|
||||
import documentHandler from "@App/middlewares/CustomerHandler/DocumentHandler";
|
||||
import { validateOrReject } from "class-validator";
|
||||
|
||||
@Controller()
|
||||
@Service()
|
||||
@ -82,4 +83,35 @@ export default class DocumentsController extends ApiController {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Create a new File
|
||||
* @returns File created
|
||||
*/
|
||||
@Post("/api/v1/customer/documents", [authHandler])
|
||||
protected async post(req: Request, response: Response) {
|
||||
try {
|
||||
//init Document resource with request body values
|
||||
const documentEntity = Document.hydrate<Document>(req.body);
|
||||
console.log(documentEntity);
|
||||
|
||||
|
||||
//validate document
|
||||
await validateOrReject(documentEntity, { groups: ["createDocument"], forbidUnknownValues: false });
|
||||
|
||||
//call service to get prisma entity
|
||||
const documentEntityCreated = await this.documentsService.create(documentEntity);
|
||||
|
||||
//Hydrate ressource with prisma entity
|
||||
const document = Document.hydrate<Document>(documentEntityCreated, {
|
||||
strategy: "excludeAll",
|
||||
});
|
||||
|
||||
//success
|
||||
this.httpCreated(response, document);
|
||||
} catch (error) {
|
||||
this.httpInternalError(response, error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,11 +10,14 @@ import { validateOrReject } from "class-validator";
|
||||
import DocumentsService from "@Services/customer/DocumentsService/DocumentsService";
|
||||
import authHandler from "@App/middlewares/AuthHandler";
|
||||
import fileHandler from "@App/middlewares/CustomerHandler/FileHandler";
|
||||
import DocumentTypesService from "@Services/super-admin/DocumentTypesService/DocumentTypesService";
|
||||
import { DocumentType } from "le-coffre-resources/dist/SuperAdmin";
|
||||
import ObjectHydrate from "@Common/helpers/ObjectHydrate";
|
||||
|
||||
@Controller()
|
||||
@Service()
|
||||
export default class FilesController extends ApiController {
|
||||
constructor(private filesService: FilesService, private documentService: DocumentsService) {
|
||||
constructor(private filesService: FilesService, private documentService: DocumentsService, private documentTypesService : DocumentTypesService) {
|
||||
super();
|
||||
}
|
||||
|
||||
@ -87,9 +90,10 @@ export default class FilesController extends ApiController {
|
||||
|
||||
//init File resource with request body values
|
||||
const fileEntity = File.hydrate<File>(JSON.parse(req.body["q"]));
|
||||
console.log(fileEntity);
|
||||
|
||||
//validate File
|
||||
await validateOrReject(fileEntity, { groups: ["createFile"] });
|
||||
// await validateOrReject(fileEntity, { groups: ["createFile"] });
|
||||
|
||||
//call service to get prisma entity
|
||||
const fileEntityCreated = await this.filesService.create(fileEntity, req.file);
|
||||
@ -221,4 +225,52 @@ export default class FilesController extends ApiController {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Create a new File
|
||||
* @returns File created
|
||||
*/
|
||||
@Post("/api/v1/customer/addPersonalFile", [authHandler, fileHandler])
|
||||
protected async addPersonalFile(req: Request, response: Response) {
|
||||
try {
|
||||
//get file
|
||||
if (!req.file) throw new Error("No file provided");
|
||||
|
||||
//init File resource with request body values
|
||||
const fileEntity = File.hydrate<File>(JSON.parse(req.body["q"]));
|
||||
|
||||
const documentTypeEntities = await this.documentTypesService.get({ where: { name: "Other"} });
|
||||
const documentTypeEntity = documentTypeEntities[0];
|
||||
const documentType = ObjectHydrate.hydrate<DocumentType>(new DocumentType(), documentTypeEntity!, { strategy: "excludeAll" });
|
||||
|
||||
const documentEntity = Document.hydrate<Document>({document_type: documentType});
|
||||
await validateOrReject(documentEntity, { groups: ["createDocument"], forbidUnknownValues: false });
|
||||
const documentEntityCreated = await this.documentService.create(documentEntity);
|
||||
|
||||
const document = Document.hydrate<Document>(documentEntityCreated, {
|
||||
strategy: "excludeAll",
|
||||
});
|
||||
|
||||
fileEntity.document = document;
|
||||
|
||||
const fileEntityCreated = await this.filesService.create(fileEntity, req.file);
|
||||
|
||||
const documentToUpdate = Document.hydrate<Document>(document!);
|
||||
|
||||
documentToUpdate!.document_status = "DEPOSITED";
|
||||
await this.documentService.update(document!.uid!, documentToUpdate);
|
||||
|
||||
//Hydrate ressource with prisma entity
|
||||
const fileEntityHydrated = File.hydrate<File>(fileEntityCreated, {
|
||||
strategy: "excludeAll",
|
||||
});
|
||||
|
||||
//success
|
||||
this.httpCreated(response, fileEntityHydrated);
|
||||
|
||||
} catch (error) {
|
||||
this.httpBadRequest(response, error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -175,7 +175,6 @@ export default class OfficeFoldersController extends ApiController {
|
||||
this.httpInternalError(response, error);
|
||||
return;
|
||||
}
|
||||
this.httpSuccess(response, await this.officeFoldersService.getByUid("uid"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6,6 +6,11 @@ export default async function ruleHandler(req: Request, response: Response, next
|
||||
const rules = req.body.user.rules;
|
||||
const service = req.path && req.path.split("/")[4];
|
||||
|
||||
if (!rules) {
|
||||
response.status(HttpCodes.UNAUTHORIZED).send("Unauthorized without rules");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!rules.includes(req.method + " " + service)) {
|
||||
response.status(HttpCodes.UNAUTHORIZED).send("Unauthorized with those rules");
|
||||
return;
|
||||
|
@ -1,10 +1,22 @@
|
||||
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 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{
|
||||
try {
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
const randomString = () => {
|
||||
@ -13,14 +25,14 @@ export default async function main() {
|
||||
for (let i = 10; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
|
||||
return result;
|
||||
};
|
||||
|
||||
|
||||
const idNot1 = "dlefvlef";
|
||||
const idNot2 = "jelkvelknvlkn";
|
||||
const idNot3 = "rleenrenlnr";
|
||||
const idNot4 = "ljfeflecnmd";
|
||||
const idNot5 = "rflrefrjf";
|
||||
const idNot6 = "er3ojfdlfnd";
|
||||
|
||||
|
||||
const addresses: Address[] = [
|
||||
{
|
||||
address: "148 Avenue du bac",
|
||||
@ -163,7 +175,7 @@ export default async function main() {
|
||||
updated_at: new Date(),
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const contacts: Contact[] = [
|
||||
{
|
||||
address: addresses[0],
|
||||
@ -406,7 +418,7 @@ export default async function main() {
|
||||
civility: ECivility.MALE,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const offices: Office[] = [
|
||||
{
|
||||
idNot: idNot1,
|
||||
@ -418,7 +430,7 @@ export default async function main() {
|
||||
office_status: EOfficeStatus.ACTIVATED,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const customers: Customer[] = [
|
||||
{
|
||||
contact: contacts[5],
|
||||
@ -511,7 +523,7 @@ export default async function main() {
|
||||
status: ECustomerStatus.PENDING,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const rules: Rule[] = [
|
||||
{
|
||||
name: "GET users",
|
||||
@ -645,6 +657,12 @@ export default async function main() {
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
},
|
||||
{
|
||||
name: "POST folders",
|
||||
label: "Création des dossiers",
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
},
|
||||
{
|
||||
name: "PUT rules",
|
||||
label: "Modification des droits",
|
||||
@ -705,12 +723,6 @@ export default async function main() {
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
},
|
||||
{
|
||||
name: "POST folders",
|
||||
label: "Création des dossiers",
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
},
|
||||
{
|
||||
name: "POST roles",
|
||||
label: "Création des rôles",
|
||||
@ -802,7 +814,7 @@ export default async function main() {
|
||||
updated_at: new Date(),
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const roles: Role[] = [
|
||||
{
|
||||
name: "super-admin",
|
||||
@ -823,7 +835,7 @@ export default async function main() {
|
||||
label: "Notaire",
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
rules: rules.slice(0, 22),
|
||||
rules: rules.slice(0, 23),
|
||||
},
|
||||
{
|
||||
name: "default",
|
||||
@ -833,7 +845,7 @@ export default async function main() {
|
||||
rules: rules.slice(0, 11),
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const officeRoles: OfficeRole[] = [
|
||||
{
|
||||
name: "Notaire",
|
||||
@ -848,9 +860,9 @@ export default async function main() {
|
||||
updated_at: new Date(),
|
||||
office: offices[0]!,
|
||||
rules: rules.slice(0, 22),
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const users: User[] = [
|
||||
{
|
||||
created_at: new Date(),
|
||||
@ -895,7 +907,215 @@ export default async function main() {
|
||||
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: "Other",
|
||||
office: offices[0],
|
||||
private_description: "Other",
|
||||
public_description: "Other",
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
},
|
||||
];
|
||||
|
||||
const deedTypes: DeedType[] = [
|
||||
{
|
||||
name: "Acte de donation",
|
||||
@ -904,6 +1124,7 @@ export default async function main() {
|
||||
office: offices[0],
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
document_types: documentTypes.slice(0, 4),
|
||||
},
|
||||
{
|
||||
name: "Acte de vente",
|
||||
@ -912,6 +1133,7 @@ export default async function main() {
|
||||
office: offices[0],
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
document_types: documentTypes.slice(0, 4),
|
||||
},
|
||||
{
|
||||
name: "Acte de succession",
|
||||
@ -920,6 +1142,7 @@ export default async function main() {
|
||||
office: offices[0],
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
document_types: documentTypes.slice(0, 4),
|
||||
},
|
||||
{
|
||||
name: "Acte de vente de maison individuelle",
|
||||
@ -928,9 +1151,10 @@ export default async function main() {
|
||||
office: offices[0],
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
document_types: documentTypes.slice(0, 4),
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const deeds: Deed[] = [
|
||||
{
|
||||
deed_type: deedTypes[0],
|
||||
@ -1038,210 +1262,7 @@ export default async function main() {
|
||||
updated_at: new Date(),
|
||||
},
|
||||
];
|
||||
|
||||
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: "Other",
|
||||
office: offices[0],
|
||||
private_description: "Other",
|
||||
public_description: "Other",
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const officeFolders: OfficeFolder[] = [
|
||||
{
|
||||
folder_number: "0001",
|
||||
@ -1343,11 +1364,11 @@ export default async function main() {
|
||||
archived_description: null,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
for (const office of offices) {
|
||||
const officeCreated = await prisma.offices.create({
|
||||
data: {
|
||||
idNot: office.idNot,
|
||||
idNot: office.idNot!,
|
||||
name: office.name,
|
||||
crpcen: office.crpcen,
|
||||
address: {
|
||||
@ -1371,7 +1392,7 @@ export default async function main() {
|
||||
});
|
||||
rule.uid = ruleCreated.uid;
|
||||
}
|
||||
|
||||
|
||||
for (const role of roles) {
|
||||
const roleCreated = await prisma.roles.create({
|
||||
data: {
|
||||
@ -1386,7 +1407,7 @@ export default async function main() {
|
||||
});
|
||||
role.uid = roleCreated.uid;
|
||||
}
|
||||
|
||||
|
||||
for (const officeRole of officeRoles) {
|
||||
const officeRoleCreated = await prisma.officeRoles.create({
|
||||
data: {
|
||||
@ -1405,7 +1426,7 @@ export default async function main() {
|
||||
});
|
||||
officeRole.uid = officeRoleCreated.uid;
|
||||
}
|
||||
|
||||
|
||||
for (const user of users) {
|
||||
const createArgs: Prisma.UsersCreateArgs = {
|
||||
data: {
|
||||
@ -1416,7 +1437,7 @@ export default async function main() {
|
||||
idNot: user.office_membership!.idNot,
|
||||
},
|
||||
create: {
|
||||
idNot: user.office_membership!.idNot,
|
||||
idNot: user.office_membership!.idNot!,
|
||||
name: user.office_membership!.name,
|
||||
crpcen: user.office_membership!.crpcen,
|
||||
address: {
|
||||
@ -1464,7 +1485,7 @@ export default async function main() {
|
||||
const userCreated = await prisma.users.create(createArgs);
|
||||
user.uid = userCreated.uid;
|
||||
}
|
||||
|
||||
|
||||
for (const customer of customers) {
|
||||
const createArgs: Prisma.CustomersCreateArgs = {
|
||||
data: {
|
||||
@ -1482,7 +1503,7 @@ export default async function main() {
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
if (customer.contact?.address) {
|
||||
createArgs.data.contact!.create!.address = {
|
||||
create: {
|
||||
@ -1495,7 +1516,23 @@ export default async function main() {
|
||||
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: {
|
||||
@ -1518,7 +1555,7 @@ export default async function main() {
|
||||
const deedTypeCreated = await prisma.deedTypes.create(createArgs);
|
||||
deedType.uid = deedTypeCreated.uid;
|
||||
}
|
||||
|
||||
|
||||
for (const deed of deeds) {
|
||||
const createArgs: Prisma.DeedsCreateArgs = {
|
||||
data: {
|
||||
@ -1535,7 +1572,7 @@ export default async function main() {
|
||||
},
|
||||
include: { document_types: true },
|
||||
});
|
||||
|
||||
|
||||
if (deedTypeWithDocumentTypes.document_types) {
|
||||
createArgs.data.document_types = {
|
||||
connect: deedTypeWithDocumentTypes.document_types.map((documentType) => ({
|
||||
@ -1546,23 +1583,7 @@ export default async function main() {
|
||||
const deedCreated = await prisma.deeds.create(createArgs);
|
||||
deed.uid = deedCreated.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 officeFolder of officeFolders) {
|
||||
const officeFolderCreated = await prisma.officeFolders.create({
|
||||
data: {
|
||||
@ -1589,12 +1610,11 @@ export default async function main() {
|
||||
});
|
||||
officeFolder.uid = officeFolderCreated.uid;
|
||||
}
|
||||
|
||||
|
||||
console.log(">MOCK DATA - Seeding completed!");
|
||||
}
|
||||
catch(error){
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
console.log("Data already seeded, skiping");
|
||||
}
|
||||
|
||||
}
|
||||
main();
|
||||
|
@ -28,7 +28,7 @@ export default class DocumentsRepository extends BaseRepository {
|
||||
/**
|
||||
* @description : Create a document
|
||||
*/
|
||||
public async create(document: Document): Promise<Documents> {
|
||||
public async create(document: DocumentCustomer): Promise<Documents> {
|
||||
const createArgs: Prisma.DocumentsCreateArgs = {
|
||||
data: {
|
||||
folder: {
|
||||
|
@ -33,7 +33,7 @@ export default class OfficesRepository extends BaseRepository {
|
||||
public async create(office: OfficeRessource): Promise<Offices> {
|
||||
const createArgs: Prisma.OfficesCreateArgs = {
|
||||
data: {
|
||||
idNot: office.idNot,
|
||||
idNot: office.idNot!,
|
||||
name: office.name,
|
||||
crpcen: office.crpcen,
|
||||
address: {
|
||||
|
@ -37,7 +37,7 @@ export default class UsersRepository extends BaseRepository {
|
||||
idNot: user.office_membership!.idNot,
|
||||
},
|
||||
create: {
|
||||
idNot: user.office_membership!.idNot,
|
||||
idNot: user.office_membership!.idNot!,
|
||||
name: user.office_membership!.name,
|
||||
crpcen: user.office_membership!.crpcen,
|
||||
address: {
|
||||
|
@ -8,7 +8,6 @@ import { BackendVariables } from "@Common/config/variables/Variables";
|
||||
import { Readable } from "stream";
|
||||
import { v4 } from "uuid";
|
||||
import { Files, Prisma } from "@prisma/client";
|
||||
import fetch from "node-fetch";
|
||||
|
||||
@Service()
|
||||
export default class FilesService extends BaseService {
|
||||
|
@ -3,10 +3,11 @@ import { Document } from "le-coffre-resources/dist/Customer";
|
||||
import DocumentsRepository from "@Repositories/DocumentsRepository";
|
||||
import BaseService from "@Services/BaseService";
|
||||
import { Service } from "typedi";
|
||||
import DocumentTypesService from "@Services/notary/DocumentTypesService/DocumentTypesService";
|
||||
|
||||
@Service()
|
||||
export default class DocumentsService extends BaseService {
|
||||
constructor(private documentsRepository: DocumentsRepository) {
|
||||
constructor(private documentsRepository: DocumentsRepository, private documentTypeService: DocumentTypesService) {
|
||||
super();
|
||||
}
|
||||
|
||||
@ -18,6 +19,21 @@ export default class DocumentsService extends BaseService {
|
||||
return this.documentsRepository.findMany(query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description : Create a new document
|
||||
* @throws {Error} If document cannot be created
|
||||
*/
|
||||
public async create(document: Document): Promise<Documents> {
|
||||
const otherDocumentType = await this.documentTypeService.get({ where: { name: "Other" } });
|
||||
|
||||
if(otherDocumentType.length < 1) throw new Error("Other document type not found");
|
||||
|
||||
document.document_type = otherDocumentType[0];
|
||||
document.document_status = "DEPOSITED";
|
||||
|
||||
return this.documentsRepository.create(document);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description : Modify a document
|
||||
* @throws {Error} If document cannot be modified
|
||||
|
@ -18,7 +18,7 @@ const prisma = new PrismaClient();
|
||||
export const initOffice = (office: Office): Promise<Offices> => {
|
||||
return prisma.offices.create({
|
||||
data: {
|
||||
idNot: office.idNot,
|
||||
idNot: office.idNot!,
|
||||
name: office.name,
|
||||
crpcen: office.crpcen,
|
||||
address: {
|
||||
@ -119,7 +119,7 @@ export const initUsers = (user: User): Promise<Users> => {
|
||||
idNot: user.office_membership!.idNot,
|
||||
},
|
||||
create: {
|
||||
idNot: user.office_membership!.idNot,
|
||||
idNot: user.office_membership!.idNot!,
|
||||
name: user.office_membership!.name,
|
||||
crpcen: user.office_membership!.crpcen,
|
||||
address: {
|
||||
|
Loading…
x
Reference in New Issue
Block a user