65 lines
2.0 KiB
TypeScript
65 lines
2.0 KiB
TypeScript
import type { CreateCustomerResponseDTO } from "@erp/customers/common";
|
|
|
|
import type { GetCustomerByIdResult, UpdateCustomerByIdResult } from "../api";
|
|
import type { Customer } from "../entities";
|
|
|
|
/**
|
|
* Adaptador para transformar los datos de la API de GetCustomerByIdResult, CustomerCreationResponseDTO o UpdateCustomerByIdResult
|
|
* a la entidad Customer utilizada en la aplicación.
|
|
* Reglas de adaptación:
|
|
* - id, company_id, reference se asignan directamente.
|
|
* - is_company se convierte a booleano (true si es "1", false si es "0").
|
|
* - default_taxes se divide por ";" y se filtran los valores vacíos o "#".
|
|
*
|
|
* @params dto - datos del cliente desde la API.
|
|
* @param context - Contexto adicional opcional para la adaptación.
|
|
* @returns {Customer} Objeto adaptado a Customer.
|
|
*/
|
|
|
|
export const GetCustomerByIdAdapter = {
|
|
fromDTO(
|
|
dto: GetCustomerByIdResult | CreateCustomerResponseDTO | UpdateCustomerByIdResult,
|
|
context?: unknown
|
|
): Customer {
|
|
const taxesAdapter = (taxes: string) =>
|
|
taxes.split(";").filter((item) => item !== "#" && item.trim() !== "");
|
|
|
|
const defaultTaxes = taxesAdapter(dto.default_taxes);
|
|
|
|
return {
|
|
id: dto.id,
|
|
companyId: dto.company_id,
|
|
reference: dto.reference,
|
|
|
|
isCompany: dto.is_company === "1",
|
|
name: dto.name,
|
|
tradeName: dto.trade_name,
|
|
tin: dto.tin,
|
|
|
|
street: dto.street,
|
|
street2: dto.street2,
|
|
city: dto.city,
|
|
province: dto.province,
|
|
postalCode: dto.postal_code,
|
|
country: dto.country,
|
|
|
|
primaryEmail: dto.email_primary,
|
|
secondaryEmail: dto.email_secondary,
|
|
primaryPhone: dto.phone_primary,
|
|
secondaryPhone: dto.phone_secondary,
|
|
primaryMobile: dto.mobile_primary,
|
|
secondaryMobile: dto.mobile_secondary,
|
|
|
|
fax: dto.fax,
|
|
website: dto.website,
|
|
|
|
legalRecord: dto.legal_record,
|
|
|
|
defaultTaxes: defaultTaxes,
|
|
status: dto.status,
|
|
languageCode: dto.language_code,
|
|
currencyCode: dto.currency_code,
|
|
};
|
|
},
|
|
};
|