customer_info.ts (1746B)
1 import { 2 CustomerInfoRequest, 3 CustomerInfoResponse, 4 CustomerInfoUseCase, 5 } from "#core/application/customer_info.ts"; 6 import { AuthDto } from "#infrastructure/memory/mapper/auth.ts"; 7 import { IDDocumentDto } from "#infrastructure/memory/mapper/id_document.ts"; 8 import { PhoneEKYCDto } from "#infrastructure/memory/mapper/phone.ts"; 9 10 export class MemoryCustomerInfoAdapter implements CustomerInfoUseCase { 11 constructor( 12 private readonly authEntities: Map<string, AuthDto>, 13 private readonly phoneEntities: Map<string, PhoneEKYCDto>, 14 private readonly idDocumentEntities: Map<string, IDDocumentDto>, 15 ) { 16 } 17 18 execute(request: CustomerInfoRequest): CustomerInfoResponse { 19 const auth = Array.from(this.authEntities.values()) 20 .find((i) => i.uuid === request.uuid); 21 const phone = Array.from(this.phoneEntities.values()) 22 .find((i) => i.uuid === request.uuid); 23 const idDocument = Array.from(this.idDocumentEntities.values()) 24 .find((i) => i.uuid === request.uuid); 25 26 return { 27 exists: Boolean(auth || phone || idDocument), 28 uuid: auth?.uuid ?? phone?.uuid ?? idDocument?.uuid ?? null, 29 email: auth?.email ?? null, 30 emailVerified: auth?.emailVerified ?? false, 31 phoneNumber: phone?.phoneNumber ?? null, 32 phoneNumberVerified: phone?.phoneNumberVerified ?? false, 33 firstName: idDocument?.firstName ?? null, 34 lastName: idDocument?.lastName ?? null, 35 birthDate: idDocument?.birthDate ?? null, 36 sex: idDocument?.sex ?? null, 37 nationality: idDocument?.nationality ?? null, 38 country: idDocument?.country ?? null, 39 idDocumentVerified: idDocument?.state === "approved", 40 idDocumentRegistered: idDocument?.state !== "capturing", 41 }; 42 } 43 }