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",
|
"cron": "^2.3.1",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
"jsonwebtoken": "^9.0.0",
|
"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",
|
"module-alias": "^2.2.2",
|
||||||
"multer": "^1.4.5-lts.1",
|
"multer": "^1.4.5-lts.1",
|
||||||
"next": "^13.1.5",
|
"next": "^13.1.5",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Response, Request } from "express";
|
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 ApiController from "@Common/system/controller-pattern/ApiController";
|
||||||
import { Service } from "typedi";
|
import { Service } from "typedi";
|
||||||
import DocumentsService from "@Services/customer/DocumentsService/DocumentsService";
|
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 { Document } from "le-coffre-resources/dist/Customer";
|
||||||
import authHandler from "@App/middlewares/AuthHandler";
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
import documentHandler from "@App/middlewares/CustomerHandler/DocumentHandler";
|
import documentHandler from "@App/middlewares/CustomerHandler/DocumentHandler";
|
||||||
|
import { validateOrReject } from "class-validator";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -82,4 +83,35 @@ export default class DocumentsController extends ApiController {
|
|||||||
return;
|
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 DocumentsService from "@Services/customer/DocumentsService/DocumentsService";
|
||||||
import authHandler from "@App/middlewares/AuthHandler";
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
import fileHandler from "@App/middlewares/CustomerHandler/FileHandler";
|
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()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
export default class FilesController extends ApiController {
|
export default class FilesController extends ApiController {
|
||||||
constructor(private filesService: FilesService, private documentService: DocumentsService) {
|
constructor(private filesService: FilesService, private documentService: DocumentsService, private documentTypesService : DocumentTypesService) {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,9 +90,10 @@ export default class FilesController extends ApiController {
|
|||||||
|
|
||||||
//init File resource with request body values
|
//init File resource with request body values
|
||||||
const fileEntity = File.hydrate<File>(JSON.parse(req.body["q"]));
|
const fileEntity = File.hydrate<File>(JSON.parse(req.body["q"]));
|
||||||
|
console.log(fileEntity);
|
||||||
|
|
||||||
//validate File
|
//validate File
|
||||||
await validateOrReject(fileEntity, { groups: ["createFile"] });
|
// await validateOrReject(fileEntity, { groups: ["createFile"] });
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
const fileEntityCreated = await this.filesService.create(fileEntity, req.file);
|
const fileEntityCreated = await this.filesService.create(fileEntity, req.file);
|
||||||
@ -221,4 +225,52 @@ export default class FilesController extends ApiController {
|
|||||||
return;
|
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);
|
this.httpInternalError(response, error);
|
||||||
return;
|
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 rules = req.body.user.rules;
|
||||||
const service = req.path && req.path.split("/")[4];
|
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)) {
|
if (!rules.includes(req.method + " " + service)) {
|
||||||
response.status(HttpCodes.UNAUTHORIZED).send("Unauthorized with those rules");
|
response.status(HttpCodes.UNAUTHORIZED).send("Unauthorized with those rules");
|
||||||
return;
|
return;
|
||||||
|
@ -1,5 +1,17 @@
|
|||||||
import { ECivility, ECustomerStatus, EFolderStatus, EOfficeStatus, Prisma, PrismaClient } from "@prisma/client";
|
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";
|
import "module-alias/register";
|
||||||
|
|
||||||
@ -645,6 +657,12 @@ export default async function main() {
|
|||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_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",
|
name: "PUT rules",
|
||||||
label: "Modification des droits",
|
label: "Modification des droits",
|
||||||
@ -705,12 +723,6 @@ export default async function main() {
|
|||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_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",
|
name: "POST roles",
|
||||||
label: "Création des rôles",
|
label: "Création des rôles",
|
||||||
@ -823,7 +835,7 @@ export default async function main() {
|
|||||||
label: "Notaire",
|
label: "Notaire",
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
rules: rules.slice(0, 22),
|
rules: rules.slice(0, 23),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "default",
|
name: "default",
|
||||||
@ -848,7 +860,7 @@ export default async function main() {
|
|||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
office: offices[0]!,
|
office: offices[0]!,
|
||||||
rules: rules.slice(0, 22),
|
rules: rules.slice(0, 22),
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const users: User[] = [
|
const users: User[] = [
|
||||||
@ -895,6 +907,214 @@ export default async function main() {
|
|||||||
role: roles[3],
|
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[] = [
|
const deedTypes: DeedType[] = [
|
||||||
{
|
{
|
||||||
@ -904,6 +1124,7 @@ export default async function main() {
|
|||||||
office: offices[0],
|
office: offices[0],
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
|
document_types: documentTypes.slice(0, 4),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Acte de vente",
|
name: "Acte de vente",
|
||||||
@ -912,6 +1133,7 @@ export default async function main() {
|
|||||||
office: offices[0],
|
office: offices[0],
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
|
document_types: documentTypes.slice(0, 4),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Acte de succession",
|
name: "Acte de succession",
|
||||||
@ -920,6 +1142,7 @@ export default async function main() {
|
|||||||
office: offices[0],
|
office: offices[0],
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
|
document_types: documentTypes.slice(0, 4),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Acte de vente de maison individuelle",
|
name: "Acte de vente de maison individuelle",
|
||||||
@ -928,6 +1151,7 @@ export default async function main() {
|
|||||||
office: offices[0],
|
office: offices[0],
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
|
document_types: documentTypes.slice(0, 4),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -1039,209 +1263,6 @@ export default async function main() {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
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[] = [
|
const officeFolders: OfficeFolder[] = [
|
||||||
{
|
{
|
||||||
folder_number: "0001",
|
folder_number: "0001",
|
||||||
@ -1347,7 +1368,7 @@ export default async function main() {
|
|||||||
for (const office of offices) {
|
for (const office of offices) {
|
||||||
const officeCreated = await prisma.offices.create({
|
const officeCreated = await prisma.offices.create({
|
||||||
data: {
|
data: {
|
||||||
idNot: office.idNot,
|
idNot: office.idNot!,
|
||||||
name: office.name,
|
name: office.name,
|
||||||
crpcen: office.crpcen,
|
crpcen: office.crpcen,
|
||||||
address: {
|
address: {
|
||||||
@ -1416,7 +1437,7 @@ export default async function main() {
|
|||||||
idNot: user.office_membership!.idNot,
|
idNot: user.office_membership!.idNot,
|
||||||
},
|
},
|
||||||
create: {
|
create: {
|
||||||
idNot: user.office_membership!.idNot,
|
idNot: user.office_membership!.idNot!,
|
||||||
name: user.office_membership!.name,
|
name: user.office_membership!.name,
|
||||||
crpcen: user.office_membership!.crpcen,
|
crpcen: user.office_membership!.crpcen,
|
||||||
address: {
|
address: {
|
||||||
@ -1496,6 +1517,22 @@ export default async function main() {
|
|||||||
customer.uid = customersCreated.uid;
|
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) {
|
for (const deedType of deedTypes) {
|
||||||
const createArgs: Prisma.DeedTypesCreateArgs = {
|
const createArgs: Prisma.DeedTypesCreateArgs = {
|
||||||
data: {
|
data: {
|
||||||
@ -1547,22 +1584,6 @@ export default async function main() {
|
|||||||
deed.uid = deedCreated.uid;
|
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) {
|
for (const officeFolder of officeFolders) {
|
||||||
const officeFolderCreated = await prisma.officeFolders.create({
|
const officeFolderCreated = await prisma.officeFolders.create({
|
||||||
data: {
|
data: {
|
||||||
@ -1591,10 +1612,9 @@ export default async function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
console.log(">MOCK DATA - Seeding completed!");
|
console.log(">MOCK DATA - Seeding completed!");
|
||||||
}
|
} catch (error) {
|
||||||
catch(error){
|
console.log(error);
|
||||||
console.log("Data already seeded, skiping");
|
console.log("Data already seeded, skiping");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
main();
|
main();
|
||||||
|
@ -28,7 +28,7 @@ export default class DocumentsRepository extends BaseRepository {
|
|||||||
/**
|
/**
|
||||||
* @description : Create a document
|
* @description : Create a document
|
||||||
*/
|
*/
|
||||||
public async create(document: Document): Promise<Documents> {
|
public async create(document: DocumentCustomer): Promise<Documents> {
|
||||||
const createArgs: Prisma.DocumentsCreateArgs = {
|
const createArgs: Prisma.DocumentsCreateArgs = {
|
||||||
data: {
|
data: {
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -33,7 +33,7 @@ export default class OfficesRepository extends BaseRepository {
|
|||||||
public async create(office: OfficeRessource): Promise<Offices> {
|
public async create(office: OfficeRessource): Promise<Offices> {
|
||||||
const createArgs: Prisma.OfficesCreateArgs = {
|
const createArgs: Prisma.OfficesCreateArgs = {
|
||||||
data: {
|
data: {
|
||||||
idNot: office.idNot,
|
idNot: office.idNot!,
|
||||||
name: office.name,
|
name: office.name,
|
||||||
crpcen: office.crpcen,
|
crpcen: office.crpcen,
|
||||||
address: {
|
address: {
|
||||||
|
@ -37,7 +37,7 @@ export default class UsersRepository extends BaseRepository {
|
|||||||
idNot: user.office_membership!.idNot,
|
idNot: user.office_membership!.idNot,
|
||||||
},
|
},
|
||||||
create: {
|
create: {
|
||||||
idNot: user.office_membership!.idNot,
|
idNot: user.office_membership!.idNot!,
|
||||||
name: user.office_membership!.name,
|
name: user.office_membership!.name,
|
||||||
crpcen: user.office_membership!.crpcen,
|
crpcen: user.office_membership!.crpcen,
|
||||||
address: {
|
address: {
|
||||||
|
@ -8,7 +8,6 @@ import { BackendVariables } from "@Common/config/variables/Variables";
|
|||||||
import { Readable } from "stream";
|
import { Readable } from "stream";
|
||||||
import { v4 } from "uuid";
|
import { v4 } from "uuid";
|
||||||
import { Files, Prisma } from "@prisma/client";
|
import { Files, Prisma } from "@prisma/client";
|
||||||
import fetch from "node-fetch";
|
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class FilesService extends BaseService {
|
export default class FilesService extends BaseService {
|
||||||
|
@ -3,10 +3,11 @@ import { Document } from "le-coffre-resources/dist/Customer";
|
|||||||
import DocumentsRepository from "@Repositories/DocumentsRepository";
|
import DocumentsRepository from "@Repositories/DocumentsRepository";
|
||||||
import BaseService from "@Services/BaseService";
|
import BaseService from "@Services/BaseService";
|
||||||
import { Service } from "typedi";
|
import { Service } from "typedi";
|
||||||
|
import DocumentTypesService from "@Services/notary/DocumentTypesService/DocumentTypesService";
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class DocumentsService extends BaseService {
|
export default class DocumentsService extends BaseService {
|
||||||
constructor(private documentsRepository: DocumentsRepository) {
|
constructor(private documentsRepository: DocumentsRepository, private documentTypeService: DocumentTypesService) {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,6 +19,21 @@ export default class DocumentsService extends BaseService {
|
|||||||
return this.documentsRepository.findMany(query);
|
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
|
* @description : Modify a document
|
||||||
* @throws {Error} If document cannot be modified
|
* @throws {Error} If document cannot be modified
|
||||||
|
@ -18,7 +18,7 @@ const prisma = new PrismaClient();
|
|||||||
export const initOffice = (office: Office): Promise<Offices> => {
|
export const initOffice = (office: Office): Promise<Offices> => {
|
||||||
return prisma.offices.create({
|
return prisma.offices.create({
|
||||||
data: {
|
data: {
|
||||||
idNot: office.idNot,
|
idNot: office.idNot!,
|
||||||
name: office.name,
|
name: office.name,
|
||||||
crpcen: office.crpcen,
|
crpcen: office.crpcen,
|
||||||
address: {
|
address: {
|
||||||
@ -119,7 +119,7 @@ export const initUsers = (user: User): Promise<Users> => {
|
|||||||
idNot: user.office_membership!.idNot,
|
idNot: user.office_membership!.idNot,
|
||||||
},
|
},
|
||||||
create: {
|
create: {
|
||||||
idNot: user.office_membership!.idNot,
|
idNot: user.office_membership!.idNot!,
|
||||||
name: user.office_membership!.name,
|
name: user.office_membership!.name,
|
||||||
crpcen: user.office_membership!.crpcen,
|
crpcen: user.office_membership!.crpcen,
|
||||||
address: {
|
address: {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user