add default data at office creation

This commit is contained in:
OxSaitama 2023-09-25 19:48:54 +02:00
parent ee1c0d2800
commit 356c687920
3 changed files with 73 additions and 32 deletions

View File

@ -19,14 +19,6 @@ export default async function main() {
try { try {
const prisma = new PrismaClient(); const prisma = new PrismaClient();
const randomString = () => {
const chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
let result = "";
for (let i = 10; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
return result;
};
const idNot1 = "dlefvlef";
const idNot2 = "jelkvelknvlkn"; const idNot2 = "jelkvelknvlkn";
const idNot3 = "rleenrenlnr"; const idNot3 = "rleenrenlnr";
const idNot4 = "ljfeflecnmd"; const idNot4 = "ljfeflecnmd";
@ -35,9 +27,9 @@ export default async function main() {
const addresses: Address[] = [ const addresses: Address[] = [
{ {
address: "148 Avenue du bac", address: "template",
city: "Rennes", city: "template",
zip_code: 35000, zip_code: 0o00,
created_at: new Date(), created_at: new Date(),
updated_at: new Date(), updated_at: new Date(),
}, },
@ -421,9 +413,9 @@ export default async function main() {
const offices: Office[] = [ const offices: Office[] = [
{ {
idNot: idNot1, idNot: "0000",
name: "Office Rennes", name: "Office Template",
crpcen: randomString(), crpcen: "0000",
address: addresses[0], address: addresses[0],
created_at: new Date(), created_at: new Date(),
updated_at: new Date(), updated_at: new Date(),

View File

@ -84,9 +84,6 @@ export default class AuthService extends BaseService {
}; };
} }
public generateAccessToken(user: any): string { public generateAccessToken(user: any): string {
console.log("date now", Date.now());
console.log("date local", new Date().toLocaleString())
console.log("date iso",new Date().toISOString());
return jwt.sign({ ...user}, this.variables.ACCESS_TOKEN_SECRET, { expiresIn: "15m" }); return jwt.sign({ ...user}, this.variables.ACCESS_TOKEN_SECRET, { expiresIn: "15m" });
} }

View File

@ -4,10 +4,13 @@ import { Service } from "typedi";
import jwt from "jsonwebtoken"; import jwt from "jsonwebtoken";
import UsersService from "@Services/super-admin/UsersService/UsersService"; import UsersService from "@Services/super-admin/UsersService/UsersService";
import { IdNotJwtPayload } from "../AuthService/AuthService"; import { IdNotJwtPayload } from "../AuthService/AuthService";
import User, { Office, Role } from "le-coffre-resources/dist/SuperAdmin"; import User, { DeedType, Office, OfficeRole, Role, DocumentType } from "le-coffre-resources/dist/SuperAdmin";
import RolesService from "@Services/super-admin/RolesService/RolesService"; import RolesService from "@Services/super-admin/RolesService/RolesService";
import OfficesService from "@Services/super-admin/OfficesService/OfficesService"; import OfficesService from "@Services/super-admin/OfficesService/OfficesService";
import { EOfficeStatus } from "@prisma/client"; import { EOfficeStatus } from "@prisma/client";
import OfficeRolesService from "@Services/super-admin/OfficeRolesService/OfficeRolesService";
import DeedTypesService from "@Services/super-admin/DeedTypesService/DeedTypesService";
import DocumentTypesService from "@Services/super-admin/DocumentTypesService/DocumentTypesService";
interface IIdNotToken { interface IIdNotToken {
access_token: string; access_token: string;
@ -93,6 +96,7 @@ enum EIdnotRole {
SUPPLEANT = "Suppléant", SUPPLEANT = "Suppléant",
ADMINISTRATEUR = "Administrateur", ADMINISTRATEUR = "Administrateur",
RESPONSABLE = "Responsable", RESPONSABLE = "Responsable",
CURATEUR = "Curateur",
} }
@Service() @Service()
@ -102,6 +106,9 @@ export default class IdNotService extends BaseService {
private userService: UsersService, private userService: UsersService,
private officeService: OfficesService, private officeService: OfficesService,
private rolesService: RolesService, private rolesService: RolesService,
private officeRolesService: OfficeRolesService,
private deedTypesService: DeedTypesService,
private documentTypesService: DocumentTypesService,
) { ) {
super(); super();
} }
@ -114,10 +121,8 @@ export default class IdNotService extends BaseService {
code: code, code: code,
grant_type: "authorization_code", grant_type: "authorization_code",
}); });
console.log(query)
const token = await fetch(this.variables.IDNOT_BASE_URL + this.variables.IDNOT_CONNEXION_URL + "?" + query, { method: "POST" }); const token = await fetch(this.variables.IDNOT_BASE_URL + this.variables.IDNOT_CONNEXION_URL + "?" + query, { method: "POST" });
const decodedToken = (await token.json()) as IIdNotToken; const decodedToken = (await token.json()) as IIdNotToken;
console.log(decodedToken)
const decodedIdToken = jwt.decode(decodedToken.id_token) as IdNotJwtPayload; const decodedIdToken = jwt.decode(decodedToken.id_token) as IdNotJwtPayload;
return decodedIdToken; return decodedIdToken;
@ -125,29 +130,46 @@ export default class IdNotService extends BaseService {
public async getRole(roleName: string): Promise<Role> { public async getRole(roleName: string): Promise<Role> {
switch (roleName) { switch (roleName) {
case EIdnotRole.DIRECTEUR:
return (await this.rolesService.get({ where: { name: "admin" } }))[0]!;
case EIdnotRole.NOTAIRE_TITULAIRE: case EIdnotRole.NOTAIRE_TITULAIRE:
return (await this.rolesService.get({ where: { name: "admin" } }))[0]!; return (await this.rolesService.get({ where: { name: "admin" } }))[0]!;
case EIdnotRole.NOTAIRE_ASSOCIE: case EIdnotRole.NOTAIRE_ASSOCIE:
return (await this.rolesService.get({ where: { name: "notary" } }))[0]!; return (await this.rolesService.get({ where: { name: "admin" } }))[0]!;
case EIdnotRole.NOTAIRE_SALARIE: case EIdnotRole.NOTAIRE_SALARIE:
return (await this.rolesService.get({ where: { name: "notary" } }))[0]!; return (await this.rolesService.get({ where: { name: "notary" } }))[0]!;
case EIdnotRole.COLLABORATEUR: case EIdnotRole.COLLABORATEUR:
return (await this.rolesService.get({ where: { name: "collaborator" } }))[0]!;
case EIdnotRole.SECRETAIRE_GENERAL:
return (await this.rolesService.get({ where: { name: "notary" } }))[0]!; return (await this.rolesService.get({ where: { name: "notary" } }))[0]!;
case EIdnotRole.SUPPLEANT: case EIdnotRole.SUPPLEANT:
return (await this.rolesService.get({ where: { name: "notary" } }))[0]!; return (await this.rolesService.get({ where: { name: "notary" } }))[0]!;
case EIdnotRole.ADMINISTRATEUR: case EIdnotRole.ADMINISTRATEUR:
return (await this.rolesService.get({ where: { name: "admin" } }))[0]!; return (await this.rolesService.get({ where: { name: "notary" } }))[0]!;
case EIdnotRole.RESPONSABLE: case EIdnotRole.CURATEUR:
return (await this.rolesService.get({ where: { name: "collaborator" } }))[0]!; return (await this.rolesService.get({ where: { name: "notary" } }))[0]!;
default: default:
return (await this.rolesService.get({ where: { name: "default" } }))[0]!; return (await this.rolesService.get({ where: { name: "default" } }))[0]!;
} }
} }
public async getOfficeRole(roleName: string, officeUid: string) {
switch (roleName) {
case EIdnotRole.NOTAIRE_TITULAIRE:
return (await this.officeRolesService.get({ where: {AND:[{ name: "Notaire" }, {office_uid: officeUid}]}}))[0]!;
case EIdnotRole.NOTAIRE_ASSOCIE:
return (await this.officeRolesService.get({ where: {AND:[{ name: "Notaire" }, {office_uid: officeUid}]}}))[0]!;
case EIdnotRole.NOTAIRE_SALARIE:
return (await this.officeRolesService.get({ where: {AND:[{ name: "Notaire" }, {office_uid: officeUid}]}}))[0]!;
case EIdnotRole.COLLABORATEUR:
return (await this.officeRolesService.get({ where: {AND:[{ name: "Collaborateur" }, {office_uid: officeUid}]}}))[0]!;
case EIdnotRole.SUPPLEANT:
return (await this.officeRolesService.get({ where: {AND:[{ name: "Collaborateur" }, {office_uid: officeUid}]}}))[0]!;
case EIdnotRole.ADMINISTRATEUR:
return (await this.officeRolesService.get({ where: {AND:[{ name: "Collaborateur" }, {office_uid: officeUid}]}}))[0]!;
case EIdnotRole.CURATEUR:
return (await this.officeRolesService.get({ where: {AND:[{ name: "Collaborateur" }, {office_uid: officeUid}]}}))[0]!;
default:
return;
}
}
public getOfficeStatus(statusName: string) { public getOfficeStatus(statusName: string) {
switch (statusName) { switch (statusName) {
case "Pourvu": case "Pourvu":
@ -253,7 +275,6 @@ export default class IdNotService extends BaseService {
public async updateOffice(officeId: string) { public async updateOffice(officeId: string) {
const officeInfos = await this.officeService.getByUid(officeId); const officeInfos = await this.officeService.getByUid(officeId);
console.log(officeInfos)
const office = Office.hydrate<Office>(officeInfos!); const office = Office.hydrate<Office>(officeInfos!);
const searchParams = new URLSearchParams({ const searchParams = new URLSearchParams({
key: this.variables.IDNOT_API_KEY, key: this.variables.IDNOT_API_KEY,
@ -271,7 +292,6 @@ export default class IdNotService extends BaseService {
return; return;
} }
const officeData = (await officeRawData.json()) as IOfficeData; const officeData = (await officeRawData.json()) as IOfficeData;
console.log(officeData);
let updates = 0; let updates = 0;
if(office.name !== officeData.denominationSociale) { if(office.name !== officeData.denominationSociale) {
updates++; updates++;
@ -342,8 +362,40 @@ export default class IdNotService extends BaseService {
updated_at: null, updated_at: null,
}, },
}; };
const userToHydrate = User.hydrate<User>(userToAdd); let userHydrated = User.hydrate<User>(userToAdd);
return await this.userService.create(userToHydrate); const user = await this.userService.create(userHydrated);
userHydrated = User.hydrate<User>(user);
const officeRoles = await this.officeRolesService.get({ where: { office: { idNot: "0000" }}, include: { office: true, rules: true } });
const documentTypes = await this.documentTypesService.get({ where: { office: { idNot: "0000" }}, include: { office: true } });
const deedTypes = await this.deedTypesService.get({ where:{ office: { idNot: "0000" }}, include: { office: true } });
const officeRolesHydrated = OfficeRole.hydrateArray<OfficeRole>(officeRoles);
const documentTypesHydrated = DocumentType.hydrateArray<DocumentType>(documentTypes);
const deedTypesHydrated = DeedType.hydrateArray<DeedType>(deedTypes);
officeRolesHydrated.forEach(async (officeRole) => {
officeRole.office.uid = user.office_uid;
await this.officeRolesService.create(officeRole);
});
documentTypesHydrated.forEach(async (documentType) => {
documentType.office!.uid = user.office_uid;
await this.documentTypesService.create(documentType);
});
deedTypesHydrated.forEach(async (deedType) => {
deedType.office!.uid = user.office_uid;
await this.deedTypesService.create(deedType);
});
const officeRole = await this.getOfficeRole(userData.typeLien.name, user.office_uid);
if(officeRole) {
const officeRoleHydrated = OfficeRole.hydrate<OfficeRole>(officeRole!);
userHydrated.office_role = officeRoleHydrated;
await this.userService.update(user.uid, userHydrated);
}
return user;
} }
return user; return user;
} }