{"version":3,"file":"experteam-mx-ngx-services.mjs","sources":["../../../../projects/experteam-mx/ngx-services/src/lib/ngx-services.models.ts","../../../../projects/experteam-mx/ngx-services/src/lib/ngx-services.module.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-billing-do.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-billing-mx.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-cash-operations.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-catalogs.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-companies.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-e-tools-auto-billing.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-external-pickups.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-invoices.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-open-items.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-reports.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-security.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-shipments.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/websockets/web-sockets.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/cypher/crypto.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/api-headers.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/api-token.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/http-caching.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/helpers/http.ts","../../../../projects/experteam-mx/ngx-services/src/public-api.ts","../../../../projects/experteam-mx/ngx-services/src/experteam-mx-ngx-services.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\r\n\r\n/**\r\n * Represents the configuration settings for the application's environment.\r\n * This type includes various API endpoint URLs, authentication details, caching options, and other relevant settings.\r\n *\r\n * Properties:\r\n * - apiCompaniesUrl: The URL for the companies API endpoint.\r\n * - apiInvoicesUrl: The URL for the invoices API endpoint.\r\n * - apiReportsUrl: The URL for the reports API endpoint.\r\n * - apiSecurityUrl: The URL for the security-related API endpoint.\r\n * - apiShipmentUrl: The URL for the shipment API endpoint.\r\n * - authCookie: The name of the authentication cookie used for user sessions.\r\n * - cacheTtl: Optional. Specifies the time-to-live (TTL) for cached items.\r\n * - printUrl: Optional. The URL used for generating or downloading printable documents.\r\n * - secretKey: A secret key used for authentication or other secure operations.\r\n */\r\nexport type Environment = {\r\n  apiBillingDO?: string\r\n  apiBillingMX?: string\r\n  apiCashOperationsUrl?: string\r\n  apiCatalogsUrl?: string\r\n  apiCompaniesUrl?: string\r\n  apiEToolsAutoBilling?: string\r\n  apiExternalOperationsKey?: string\r\n  apiExternalOperationsUrl?: string\r\n  apiInvoicesUrl?: string\r\n  apiOpenItemsUrl?: string\r\n  apiReportsUrl?: string\r\n  apiSecurityUrl?: string\r\n  apiShipmentUrl?: string\r\n  authCookie: string\r\n  cacheTtl?: number\r\n  printUrl?: string\r\n  secretKey: string\r\n  sockets?: {\r\n    app_key: string\r\n    debug?: boolean\r\n    port: number\r\n    url: string\r\n  }\r\n}\r\n\r\n/**\r\n * Injection token used to inject environment configurations.\r\n *\r\n * `ENVIRONMENT_TOKEN` is a dependency injection token that allows\r\n * for the provision and retrieval of environment-specific configurations\r\n * within the application. This token is typically associated with an\r\n * `Environment` type that defines the structure of the configuration.\r\n */\r\nexport const ENVIRONMENT_TOKEN = new InjectionToken<Environment>('Environments token')\r\n","import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { Environment } from './ngx-services.models'\r\nimport { provideHttpClient } from '@angular/common/http'\r\n\r\n@NgModule({\r\n  providers: [provideHttpClient()]\r\n})\r\nexport class NgxServicesModule {\r\n  /**\r\n   * Returns a module with providers for the NgxServicesModule.\r\n   *\r\n   * @param {Environment} environment - The environment configuration object.\r\n   *\r\n   * @return {ModuleWithProviders<NgxServicesModule>} The module with providers for the NgxServicesModule.\r\n   */\r\n  public static forRoot (environment: Environment): ModuleWithProviders<NgxServicesModule> {\r\n    return {\r\n      ngModule: NgxServicesModule,\r\n      providers: [\r\n        {\r\n          provide: 'env',\r\n          useValue: environment\r\n        }\r\n      ]\r\n    }\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, Observable } from 'rxjs'\r\nimport { ApiSuccess } from './models/api.models'\r\nimport { IncomeTypesOut } from './models/api-billing.types'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiBillingDOService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) { }\r\n\r\n  /**\r\n   * Retrieves the URL for the shipments API from the environment configurations.\r\n   *\r\n   * @return {string} The URL of the shipments API.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiBillingDO ?? ''\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of income types\r\n   *\r\n   * @return {Observable<ApiSuccess<IncomeTypesOut>>} An observable that emits the income types data.\r\n   */\r\n  getIncomeTypes (): Observable<IncomeTypesOut> {\r\n    return this.http.get<ApiSuccess<IncomeTypesOut>>(`${this.url}/income-types`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, Observable } from 'rxjs'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport { FiscalRegimensAcceptedOut, FiscalRegimensOut, PostalCodesOut } from './models/api-billing.types'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiBillingMxService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) { }\r\n\r\n  /**\r\n   * Retrieves the URL for the shipments API from the environment configurations.\r\n   *\r\n   * @return {string} The URL of the shipments API.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiBillingMX ?? ''\r\n  }\r\n\r\n  /**\r\n   * Fetches the tax regimen data from the server.\r\n   *\r\n   * @return {Observable<FiscalRegimensOut>} An observable that emits the fiscal regimen data.\r\n   */\r\n  getFiscalRegimens (): Observable<FiscalRegimensOut> {\r\n    return this.http.get<ApiSuccess<FiscalRegimensOut>>(`${this.url}/fiscal-regimens`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches a paginated list of CFDIs (Comprobante Fiscal Digital por Internet) based on the provided fiscal regimen.\r\n   *\r\n   * @param {number} fiscalRegimen - The fiscal regimen identifier to filter the CFDIs.\r\n   * @return {Observable<FiscalRegimensAcceptedOut>} An observable containing the paginated list of CFDIs.\r\n   */\r\n  getFiscalRegimensAccepted (fiscalRegimen: number): Observable<FiscalRegimensAcceptedOut> {\r\n    const params = { 'fiscal-regimen': fiscalRegimen }\r\n\r\n    return this.http.get<ApiSuccess<FiscalRegimensAcceptedOut>>(`${this.url}/cfdi-uses/fiscal-regimen-accepted/list`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches and validates postal code data from the server.\r\n   *\r\n   * @param {QueryParams} params - Query parameters used to filter the postal code data.\r\n   * @return {Observable<PostalCodesOut>} - An observable emitting the validated postal code data.\r\n   */\r\n  getPostalCodes (params: QueryParams): Observable<PostalCodesOut> {\r\n    return this.http.get<ApiSuccess<PostalCodesOut>>(`${this.url}/postal-codes`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport { map, Observable } from 'rxjs'\r\nimport {\r\n  InstallationCountryReferenceCurrenciesOut,\r\n  InstallationCountryReferenceCurrencyIn,\r\n  InstallationCountryReferenceCurrencyOut\r\n} from './models/api-cash-operations.types'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiCashOperationsService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) { }\r\n\r\n  /**\r\n   * Retrieves the URL for the cash operations API from the environment configurations.\r\n   *\r\n   * @return {string} The URL of the cash operations API.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiCashOperationsUrl ?? ''\r\n  }\r\n\r\n  /**\r\n   * Creates a new installation country reference currency.\r\n   *\r\n   * @param {InstallationCountryReferenceCurrencyIn} body - The data for the new reference currency.\r\n   * @returns {Observable<InstallationCountryReferenceCurrencyOut>} The created reference currency.\r\n   */\r\n  postInstallationCountryReferenceCurrency (body: InstallationCountryReferenceCurrencyIn): Observable<InstallationCountryReferenceCurrencyOut> {\r\n    return this.http.post<ApiSuccess<InstallationCountryReferenceCurrencyOut>>(`${this.url}/installation-country-reference-currencies`,\r\n      body\r\n    ).pipe(\r\n      map(({ data }) => data)\r\n    )\r\n  }\r\n\r\n  /**\r\n   * Updates an existing installation country reference currency.\r\n   *\r\n   * @param {number} id - The ID of the reference currency to update.\r\n   * @param {InstallationCountryReferenceCurrencyIn} body - The updated data for the reference currency.\r\n   * @returns {Observable<InstallationCountryReferenceCurrencyOut>} The updated reference currency.\r\n   */\r\n  putInstallationCountryReferenceCurrency (id:number, body: InstallationCountryReferenceCurrencyIn): Observable<InstallationCountryReferenceCurrencyOut> {\r\n    return this.http.put<ApiSuccess<InstallationCountryReferenceCurrencyOut>>(`${this.url}/installation-country-reference-currencies/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of installation country reference currencies based on query parameters.\r\n   *\r\n   * @param {QueryParams} params - Query parameters for filtering the currencies.\r\n   * @returns {Observable<InstallationCountryReferenceCurrenciesOut>} The list of reference currencies.\r\n   */\r\n  getInstallationCompanyCountryCurrencies (params: QueryParams): Observable<InstallationCountryReferenceCurrenciesOut> {\r\n    return this.http.get<ApiSuccess<InstallationCountryReferenceCurrenciesOut>>(`${this.url}/installation-country-reference-currencies`, {\r\n      params\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, Observable } from 'rxjs'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport {\r\n  CancellationReasonIn,\r\n  CancellationReasonOut,\r\n  CancellationReasonsOut,\r\n  CountriesOut,\r\n  CountryIn,\r\n  CountryOut,\r\n  CurrenciesOut,\r\n  ExtraChargeIn,\r\n  ExtraChargeOut,\r\n  ExtraChargesOut,\r\n  GenericFolioIn,\r\n  GenericFolioOut,\r\n  GenericFoliosOut,\r\n  IdentificationTypesOut,\r\n  LanguagesOut,\r\n  ManagementAreasOut,\r\n  OperationTypesOut,\r\n  PostalLocationsOut,\r\n  ProductIn,\r\n  ProductOut,\r\n  RegionsOut,\r\n  ShipmentContentTypesOut,\r\n  ShipmentIncomeTypeIn,\r\n  ShipmentIncomeTypeOut,\r\n  ShipmentIncomeTypesOut,\r\n  ShipmentScopesOut,\r\n  UniqueFolioIn,\r\n  UniqueFolioOut,\r\n  UniqueFoliosOut,\r\n  UnitsOut,\r\n  ZonesOut\r\n} from './models/api-catalog.types'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiCatalogsService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) { }\r\n\r\n  /**\r\n   * Retrieves the URL for the reports API from the environment configurations.\r\n   *\r\n   * @return {string} The URL of the reports API.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiCatalogsUrl ?? ''\r\n  }\r\n\r\n  /**\r\n   * Retrieves the list of collection payments\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to fetch the operation types.\r\n   * @return {Observable<OperationTypesOut[]>} An observable that emits an array of operation type.\r\n   */\r\n  getOperationTypes (params: QueryParams): Observable<OperationTypesOut> {\r\n    return this.http.get<ApiSuccess<OperationTypesOut>>(`${this.url}/operation-types`, {\r\n      params\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the list of identificatios types\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to fetch the identification types.\r\n   * @return {Observable<IdentificationTypesOut[]>} An observable that emits an array of identification type.\r\n   */\r\n  getIdentificationTypes (params: QueryParams): Observable<IdentificationTypesOut> {\r\n    return this.http.get<ApiSuccess<IdentificationTypesOut>>(`${this.url}/identification-types`, {\r\n      params\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the extra charges based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter the results.\r\n   * @return {Observable<ExtraChargesOut>} An observable emitting the extra charges data.\r\n   */\r\n  getExtraCharges (params: QueryParams): Observable<ExtraChargesOut> {\r\n    return this.http.get<ApiSuccess<ExtraChargesOut>>(`${this.url}/extracharges`, {\r\n      params\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Submits an extra charge request to the server and returns the created extra charge details.\r\n   *\r\n   * @param {ExtraChargeIn} body - The data for the extra charge to be created.\r\n   * @return {Observable<ExtraChargeOut>} An observable that emits the details of the created extra charge.\r\n   */\r\n  postExtraCharge (body: ExtraChargeIn): Observable<ExtraChargeOut> {\r\n    return this.http.post<ApiSuccess<ExtraChargeOut>>(`${this.url}/extracharges`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates an extra charge entity with new data and returns the updated entity.\r\n   *\r\n   * @param {number} id - The unique identifier of the extra charge to update.\r\n   * @param {ExtraChargeIn} body - The new data for the extra charge.\r\n   * @return {Observable<ExtraChargeOut>} An observable emitting the updated extra charge entity.\r\n   */\r\n  putExtraCharge (id: number, body: ExtraChargeIn): Observable<ExtraChargeOut> {\r\n    return this.http.put<ApiSuccess<ExtraChargeOut>>(`${this.url}/extracharges/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches a list of countries from the API.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to be passed to the API request.\r\n   * @return {Observable<CountriesOut>} An observable containing the list of countries.\r\n   */\r\n  getCountries (params: QueryParams): Observable<CountriesOut> {\r\n    return this.http.get<ApiSuccess<CountriesOut>>(`${this.url}/countries`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the details of a country based on its ID.\r\n   *\r\n   * @param {number} id - The identifier of the country to fetch.\r\n   * @return {Observable<CountryOut>} An observable that emits the country data.\r\n   */\r\n  getCountry (id: number): Observable<CountryOut> {\r\n    return this.http.get<ApiSuccess<CountryOut>>(`${this.url}/countries/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates the details of a specific country by its ID.\r\n   *\r\n   * @param {number} id - The unique identifier of the country to be updated.\r\n   * @param {CountryIn} body - The data to update the country with.\r\n   * @return {Observable<CountryOut>} An observable that emits the updated country data.\r\n   */\r\n  putCountry (id: number, body: CountryIn): Observable<CountryOut> {\r\n    return this.http.put<ApiSuccess<CountryOut>>(`${this.url}/countries/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches postal location details based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter and fetch postal location data.\r\n   * @return {Observable<PostalLocationsOut>} An observable that emits the postal location details.\r\n   */\r\n  getPostalLocations (params: QueryParams): Observable<PostalLocationsOut> {\r\n    return this.http.get<ApiSuccess<PostalLocationsOut>>(`${this.url}/postal-locations`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches a list of regions based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to filter the regions.\r\n   * @return {Observable<RegionsOut>} An observable that emits the list of regions.\r\n   */\r\n  getRegions (params: QueryParams): Observable<RegionsOut> {\r\n    return this.http.get<ApiSuccess<RegionsOut>>(`${this.url}/regions`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the zones data based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to filter the zones data.\r\n   * @return {Observable<ZonesOut>} An observable that emits the fetched zones data.\r\n   */\r\n  getZones (params: QueryParams): Observable<ZonesOut> {\r\n    return this.http.get<ApiSuccess<ZonesOut>>(`${this.url}/zones`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the management areas based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter the management areas.\r\n   * @return {Observable<ManagementAreasOut>} An observable that emits the management areas data.\r\n   */\r\n  getManagementAreas (params: QueryParams): Observable<ManagementAreasOut> {\r\n    return this.http.get<ApiSuccess<ManagementAreasOut>>(`${this.url}/management-areas`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves cancellation reasons from the server based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter the cancellation reasons.\r\n   * @return {Observable<CancellationReasonsOut>} An observable containing the retrieved cancellation reasons.\r\n   */\r\n  getCancellationReasons (params: QueryParams): Observable<CancellationReasonsOut> {\r\n    return this.http.get<ApiSuccess<CancellationReasonsOut>>(`${this.url}/cancellation-reasons`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Sends a cancellation reason to the server.\r\n   *\r\n   * @param {CancellationReasonIn} body - The cancellation reason object to be sent.\r\n   * @return {Observable<CancellationReasonOut>} An observable containing the server's response with the processed cancellation reason.\r\n   */\r\n  postCancellationReason (body: CancellationReasonIn): Observable<CancellationReasonOut> {\r\n    return this.http.post<ApiSuccess<CancellationReasonOut>>(`${this.url}/cancellation-reasons`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates the cancellation reason for the specified ID with the provided data.\r\n   *\r\n   * @param {number} id - The unique identifier of the cancellation reason to update.\r\n   * @param {CancellationReasonIn} body - The details of the cancellation reason to be updated.\r\n   * @return {Observable<CancellationReasonOut>} An observable containing the updated cancellation reason.\r\n   */\r\n  putCancellationReason (id: number, body: CancellationReasonIn): Observable<CancellationReasonOut> {\r\n    return this.http.put<ApiSuccess<CancellationReasonOut>>(`${this.url}/cancellation-reasons/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of currencies based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to customize the currency retrieval request.\r\n   * @return {Observable<CurrenciesOut>} An observable that emits the retrieved currencies data.\r\n   */\r\n  getCurrencies (params: QueryParams): Observable<CurrenciesOut> {\r\n    return this.http.get<ApiSuccess<CurrenciesOut>>(`${this.url}/currencies`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the list of available languages based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to pass with the HTTP request.\r\n   * @return {Observable<LanguagesOut>} An observable that emits the available languages.\r\n   */\r\n  getLanguages (params: QueryParams): Observable<LanguagesOut> {\r\n    return this.http.get<ApiSuccess<LanguagesOut>>(`${this.url}/languages`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the available units from the API based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter the units being fetched.\r\n   * @return {Observable<UnitsOut>} An observable that emits the retrieved units data.\r\n   */\r\n  getUnits (params: QueryParams): Observable<UnitsOut> {\r\n    return this.http.get<ApiSuccess<UnitsOut>>(`${this.url}/units`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the shipment scopes based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params The query parameters to filter or modify the request for shipment scopes.\r\n   * @return {Observable<ShipmentScopesOut>} An observable that emits the shipment scopes data.\r\n   */\r\n  getShipmentScopes (params: QueryParams): Observable<ShipmentScopesOut> {\r\n    return this.http.get<ApiSuccess<ShipmentScopesOut>>(`${this.url}/shipment-scopes`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the available shipment content types based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter the shipment content types.\r\n   * @return {Observable<ShipmentContentTypesOut>} An observable that emits the shipment content types data.\r\n   */\r\n  getShipmentContentTypes (params: QueryParams): Observable<ShipmentContentTypesOut> {\r\n    return this.http.get<ApiSuccess<ShipmentContentTypesOut>>(`${this.url}/shipment-content-types`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches a list of generic folios based on the given query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to filter the generic folios.\r\n   * @return {Observable<GenericFoliosOut>} An observable containing the fetched generic folios.\r\n   */\r\n  getGenericFolios (params: QueryParams): Observable<GenericFoliosOut> {\r\n    return this.http.get<ApiSuccess<GenericFoliosOut>>(`${this.url}/generic-folios`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Sends a POST request to create or update a generic folio.\r\n   *\r\n   * @param {GenericFolioIn} body - The payload containing the details of the generic folio to be created or updated.\r\n   * @return {Observable<GenericFolioOut>} An observable containing the response data of the created or updated generic folio.\r\n   */\r\n  postGenericFolio (body: GenericFolioIn): Observable<GenericFolioOut> {\r\n    return this.http.post<ApiSuccess<GenericFolioOut>>(`${this.url}/generic-folios`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates a generic folio with the specified ID using the provided data.\r\n   *\r\n   * @param {number} id - The unique identifier of the generic folio to update.\r\n   * @param {GenericFolioIn} body - The data to update the generic folio with.\r\n   * @return {Observable<GenericFolioOut>} An observable containing the updated generic folio.\r\n   */\r\n  putGenericFolio (id: number, body: GenericFolioIn): Observable<GenericFolioOut> {\r\n    return this.http.put<ApiSuccess<GenericFolioOut>>(`${this.url}/generic-folios/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Sends a PUT request to update a Generic Folio resource with the specified ID and body data, and returns the updated resource.\r\n   *\r\n   * @param {number} id - The unique identifier of the Generic Folio to be updated.\r\n   * @param {Partial<GenericFolioIn>} body - The partial data representing the changes to be applied to the Generic Folio.\r\n   * @return {Observable<GenericFolioOut>} An observable containing the updated Generic Folio resource.\r\n   */\r\n  pathGenericFolio (id: number, body: Partial<GenericFolioIn>): Observable<GenericFolioOut> {\r\n    return this.http.put<ApiSuccess<GenericFolioOut>>(`${this.url}/generic-folios/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Sends a POST request to create a new product.\r\n   *\r\n   * @param {ProductIn} body - The product data to be sent in the request body.\r\n   * @return {Observable<ProductOut>} An observable emitting the created product data.\r\n   */\r\n  postProduct (body: ProductIn): Observable<ProductOut> {\r\n    return this.http.post<ApiSuccess<ProductOut>>(`${this.url}/products`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates an existing product with the given ID using the provided data.\r\n   *\r\n   * @param {number} id - The unique identifier of the product to update.\r\n   * @param {ProductIn} body - The product data to update.\r\n   * @return {Observable<ProductOut>} An observable containing the updated product data.\r\n   */\r\n  putProduct (id: number, body: ProductIn): Observable<ProductOut> {\r\n    return this.http.put<ApiSuccess<ProductOut>>(`${this.url}/products/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of shipment income types based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter the shipment income types.\r\n   * @return {Observable<ShipmentIncomeTypesOut>} An observable containing the shipment income types data.\r\n   */\r\n  getShipmentIncomeTypes (params: QueryParams): Observable<ShipmentIncomeTypesOut> {\r\n    return this.http.get<ApiSuccess<ShipmentIncomeTypesOut>>(`${this.url}/shipment-income-types`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Sends a POST request to create a new shipment income type.\r\n   *\r\n   * @param {ShipmentIncomeTypeIn} body The payload containing the details of the shipment income type to be created.\r\n   * @return {Observable<ShipmentIncomeTypeOut>} An observable that emits the created shipment income type data.\r\n   */\r\n  postShipmentIncomeType (body: ShipmentIncomeTypeIn): Observable<ShipmentIncomeTypeOut> {\r\n    return this.http.post<ApiSuccess<ShipmentIncomeTypeOut>>(`${this.url}/shipment-income-types`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates the shipment income type with the specified ID.\r\n   *\r\n   * @param {number} id - The identifier of the shipment income type to update.\r\n   * @param {ShipmentIncomeTypeIn} body - The data to update the shipment income type with.\r\n   * @return {Observable<ShipmentIncomeTypeOut>} An observable emitting the updated shipment income type.\r\n   */\r\n  putShipmentIncomeType (id: number, body: ShipmentIncomeTypeIn): Observable<ShipmentIncomeTypeOut> {\r\n    return this.http.put<ApiSuccess<ShipmentIncomeTypeOut>>(`${this.url}/shipment-income-types/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of unique folios based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to filter and fetch unique folios.\r\n   * @return {Observable<UniqueFoliosOut>} An observable that emits the unique folios data.\r\n   */\r\n  getUniqueFolios (params: QueryParams): Observable<UniqueFoliosOut> {\r\n    return this.http.get<ApiSuccess<UniqueFoliosOut>>(`${this.url}/unique-folios`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Sends a POST request to create a unique folio.\r\n   *\r\n   * @param {UniqueFolioIn} body - The data object containing details for the unique folio to be created.\r\n   * @return {Observable<UniqueFolioOut>} An observable that emits the created unique folio details.\r\n   */\r\n  postUniqueFolio (body: UniqueFolioIn): Observable<UniqueFolioOut> {\r\n    return this.http.post<ApiSuccess<UniqueFolioOut>>(`${this.url}/unique-folios`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates a unique folio with the given data using the provided ID.\r\n   *\r\n   * @param {number} id - The ID of the unique folio to be updated.\r\n   * @param {UniqueFolioIn} body - The payload containing the details of the unique folio to update.\r\n   * @return {Observable<UniqueFolioOut>} An observable that emits the updated unique folio.\r\n   */\r\n  putUniqueFolio (id: number, body: UniqueFolioIn): Observable<UniqueFolioOut> {\r\n    return this.http.put<ApiSuccess<UniqueFolioOut>>(`${this.url}/unique-folios/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates a unique folio by its identifier with the provided data.\r\n   *\r\n   * @param {number} id - The identifier of the unique folio to update.\r\n   * @param {Partial<UniqueFolioIn>} body - The partial data of the unique folio to update.\r\n   * @return {Observable<UniqueFolioOut>} An observable emitting the updated unique folio data.\r\n   */\r\n  pathUniqueFolio (id: number, body: Partial<UniqueFolioIn>): Observable<UniqueFolioOut> {\r\n    return this.http.put<ApiSuccess<UniqueFolioOut>>(`${this.url}/unique-folios/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport {\r\n  AccountEntitiesActivesOut,\r\n  BoardingProcessIdIn,\r\n  BoardingProcessIn,\r\n  CompanyCountriesOut,\r\n  CompanyCountryOut,\r\n  CompanyCountryTaxesOut,\r\n  CountryReferenceCurrenciesOut,\r\n  CountryReferenceOut,\r\n  CountryReferencesOut,\r\n  EmployeeCustomersIn,\r\n  EmployeeCustomersOut,\r\n  EmployeeOut,\r\n  EmployeesCustomersOut,\r\n  EmployeesOut,\r\n  ExchangesOut,\r\n  InstallationOut,\r\n  InstallationsOut,\r\n  LocationEmployeesOut,\r\n  LocationOut,\r\n  LocationsOut,\r\n  ParametersIn,\r\n  ParametersValuesOut,\r\n  ParameterValueIn,\r\n  ParameterValueOut,\r\n  SupplyEntitiesActivesOut,\r\n  WorkflowsOut\r\n} from './models/api-companies.types'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport { forkJoin, map, mergeMap, Observable } from 'rxjs'\r\nimport { CountryCurrencyRate, EmployeeCustomerDhl, } from './models/api-companies.interfaces'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiCompaniesService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) { }\r\n\r\n  /**\r\n   * Retrieves the URL for the companies API from the environment configurations.\r\n   *\r\n   * @return {string} The URL of the companies API.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiCompaniesUrl ?? ''\r\n  }\r\n\r\n  /**\r\n   * Fetches the installations based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The parameters used to filter the installations query.\r\n   * @return {Observable<InstallationsOut>} An observable that emits the installation's data.\r\n   */\r\n  getInstallations (params: QueryParams): Observable<InstallationsOut> {\r\n    return this.http.get<ApiSuccess<InstallationsOut>>(`${this.url}/installations`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the installation details based on the given installation ID.\r\n   *\r\n   * @param {number} id - The unique identifier of the installation to retrieve.\r\n   * @returns {Observable<InstallationOut>} An observable of the installation details.\r\n   */\r\n  getInstallation (id: number): Observable<InstallationOut> {\r\n    return this.http.get<ApiSuccess<InstallationOut>>(`${this.url}/installations/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of locations based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The parameters to use for querying locations.\r\n   * @return {Observable<LocationsOut>} An observable that emits the location's data.\r\n   */\r\n  getLocations (params: QueryParams): Observable<LocationsOut> {\r\n    return this.http.get<ApiSuccess<LocationsOut>>(`${this.url}/locations`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the location details for a given location ID.\r\n   *\r\n   * @param {number} id - The unique identifier of the location.\r\n   * @return {Observable<LocationOut>} An Observable containing the location details.\r\n   */\r\n  getLocation (id: number): Observable<LocationOut> {\r\n    return this.http.get<ApiSuccess<LocationOut>>(`${this.url}/locations/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of active supply entities.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter supply entities.\r\n   * @return {Observable<SupplyEntitiesActivesOut>} Observable emitting supply entities data.\r\n   */\r\n  getSupplyEntitiesActives (params: QueryParams): Observable<SupplyEntitiesActivesOut> {\r\n    return this.http.get<ApiSuccess<SupplyEntitiesActivesOut>>(`${this.url}/supply-entities/actives`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches a list of employees based on the specified query parameters.\r\n   *\r\n   * @param {QueryParams} params - The parameters to filter and sort the employees.\r\n   * @return {Observable<EmployeesOut>} An observable that emits the list of employees.\r\n   */\r\n  getEmployees (params: QueryParams): Observable<EmployeesOut> {\r\n    return this.http.get<ApiSuccess<EmployeesOut>>(`${this.url}/employees`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches an employee's details based on the provided employee ID.\r\n   *\r\n   * @param {number} id - The unique identifier of the employee.\r\n   * @return {Observable<EmployeeOut>} An observable that emits the employee's details.\r\n   */\r\n  getEmployee (id: number): Observable<EmployeeOut> {\r\n    return this.http.get<ApiSuccess<EmployeeOut>>(`${this.url}/employees/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the list of employees for a specified location based on provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to filter and retrieve the location employees.\r\n   * @returns {Observable<LocationEmployeesOut>} An observable that emits the list of employees for the specified location.\r\n   */\r\n  getLocationEmployees (params: QueryParams): Observable<LocationEmployeesOut> {\r\n    return this.http.get<ApiSuccess<LocationEmployeesOut>>(`${this.url}/location-employees`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of countries where the company operates.\r\n   *\r\n   * @param {QueryParams} params - The query parameters for the API request.\r\n   * @return {Observable<CompanyCountriesOut>} An observable containing the list of company countries.\r\n   */\r\n  getCompanyCountries (params: QueryParams): Observable<CompanyCountriesOut> {\r\n    return this.http.get<ApiSuccess<CompanyCountriesOut>>(`${this.url}/company-countries`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the country information for a specified company by its ID.\r\n   *\r\n   * @param {number} id - The unique identifier of the company.\r\n   * @return {Observable<CompanyCountryOut>} An observable containing the country information of the company.\r\n   */\r\n  getCompanyCountry (id: number): Observable<CompanyCountryOut> {\r\n    return this.http.get<ApiSuccess<CompanyCountryOut>>(`${this.url}/company-countries/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the reference currencies for a given country.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to include in the request.\r\n   * @return {Observable<CountryReferenceCurrenciesOut>} The observable containing the country reference currencies data.\r\n   */\r\n  getCountryReferenceCurrencies (params: QueryParams): Observable<CountryReferenceCurrenciesOut> {\r\n    return this.http.get<ApiSuccess<CountryReferenceCurrenciesOut>>(\r\n      `${this.url}/country-reference-currencies`,\r\n      { params }\r\n    ).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of currencies for different countries along with their current exchange rates.\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to fetch the country reference currencies.\r\n   * @return {Observable<CountryCurrencyRate[]>} An observable that emits an array of country currency rates.\r\n   */\r\n  getCountryCurrenciesWithRate (params: QueryParams): Observable<CountryCurrencyRate[]> {\r\n    return this.getCountryReferenceCurrencies(params)\r\n      .pipe(mergeMap((currenciesData) => {\r\n        const $observables = currenciesData.country_reference_currencies\r\n          .map((item) =>\r\n            this.getCurrentExchanges({\r\n              currency_id: item.currency.id,\r\n            }).pipe(\r\n              map((exchangesData) => ({\r\n                ...item,\r\n                rate: exchangesData.exchanges[0]?.value,\r\n              }))\r\n            )\r\n          )\r\n\r\n        return forkJoin($observables)\r\n      }))\r\n  }\r\n\r\n  /**\r\n   * Fetches exchange data based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters for retrieving exchange data.\r\n   * @return {Observable<ExchangesOut>} An observable containing the exchange data.\r\n   */\r\n  getExchanges (params: QueryParams): Observable<ExchangesOut> {\r\n    return this.http.get<ApiSuccess<ExchangesOut>>(`${this.url}/exchanges`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the current exchanges based on the given query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter the exchanges.\r\n   *\r\n   * @returns {Observable<ExchangesOut>} - An observable that emits the API response data containing the current exchanges.\r\n   */\r\n  getCurrentExchanges (params: QueryParams): Observable<ExchangesOut> {\r\n    return this.http.get<ApiSuccess<ExchangesOut>>(`${this.url}/exchanges/current`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the country-specific tax information for a company.\r\n   *\r\n   * @param {QueryParams} params - The parameters used to filter and query the taxes.\r\n   * @return {Observable<CompanyCountryTaxesOut>} An observable that emits the tax information.\r\n   */\r\n  getCompanyCountryTaxes (params: QueryParams): Observable<CompanyCountryTaxesOut> {\r\n    return this.http.get<ApiSuccess<CompanyCountryTaxesOut>>(`${this.url}/company-country-taxes`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the list of active account entities based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The parameters to filter and query active account entities.\r\n   * @return {Observable<AccountEntitiesActivesOut>} An observable that emits the list of active account entities.\r\n   */\r\n  getAccountEntitiesActives (params: QueryParams): Observable<AccountEntitiesActivesOut> {\r\n    return this.http.get<ApiSuccess<AccountEntitiesActivesOut>>(`${this.url}/account-entities/actives`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the parameter values based on the provided parameter names.\r\n   *\r\n   * @param {Object} params - An object containing the required parameters.\r\n   * @param {string[]} params.paramNames - An array of parameter names for which the values need to be fetched.\r\n   * @return {Observable<ParametersValuesOut>} An observable that emits the fetched parameter values.\r\n   */\r\n  getParametersValues ({\r\n    paramNames,\r\n  }: ParametersIn): Observable<ParametersValuesOut> {\r\n    const parameters = paramNames.map((p) => ({ name: p }))\r\n\r\n    return this.http.post<ApiSuccess<ParametersValuesOut>>(`${this.url}/parameters-values`, {\r\n      parameters\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the value of a specified parameter.\r\n   *\r\n   * @param {Object} input - The input object containing the parameter details.\r\n   * @param {string} input.paramName - The name of the parameter whose value is to be retrieved.\r\n   * @return {Observable<ParameterValueOut>} An observable emitting the value of the specified parameter.\r\n   */\r\n  getParameterValue ({\r\n    paramName,\r\n  }: ParameterValueIn): Observable<ParameterValueOut> {\r\n    return this.http.get<ApiSuccess<ParameterValueOut>>(`${this.url}/parameters-values/${paramName}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of country references based on the given query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters for retrieving country references.\r\n   * @return {Observable<CountryReferencesOut>} An observable containing the country reference data.\r\n   */\r\n  getCountryReferences (params: QueryParams): Observable<CountryReferencesOut> {\r\n    return this.http.get<ApiSuccess<CountryReferencesOut>>(`${this.url}/country-references`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the country reference data for a given country ID.\r\n   *\r\n   * @param {number} id - The unique identifier of the country for which the reference data is to be retrieved.\r\n   * @return {Observable<CountryReferenceOut>} An observable containing the country reference data.\r\n   */\r\n  getCountryReference (id: number): Observable<CountryReferenceOut> {\r\n    return this.http.get<ApiSuccess<CountryReferenceOut>>(`${this.url}/country-references/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the list of workflows based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to filter workflows.\r\n   * @return {Observable<WorkflowsOut>} An observable containing the workflow data.\r\n   */\r\n  getWorkflows (params: QueryParams): Observable<WorkflowsOut> {\r\n    return this.http.get<ApiSuccess<WorkflowsOut>>(`${this.url}/workflows`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the list of employee customer\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to filter employee customers.\r\n   * @return {Observable<EmployeeCustomersOut>} An observable containing the employee customer data.\r\n   */\r\n  getEmployeesCustomers (params: QueryParams): Observable<EmployeesCustomersOut> {\r\n    return this.http.get<ApiSuccess<EmployeesCustomersOut>>(`${this.url}/employee-customers`, {\r\n      params,\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Sends a POST request to create or update employee customer records and processes the server response.\r\n   *\r\n   * @param {EmployeeCustomersIn} body - The request payload containing employee customer data to be sent to the server.\r\n   * @return {Observable<EmployeeCustomersOut>} An observable that emits the updated employee customer data on successful response.\r\n   */\r\n  postEmployeeCustomers (body: EmployeeCustomersIn) {\r\n    return this.http.post<ApiSuccess<EmployeeCustomersOut>>(`${this.url}/employee-customers`,\r\n      body\r\n    ).pipe(\r\n      map(({ data }) => data)\r\n    )\r\n  }\r\n\r\n  /**\r\n   * Updates the employee-customer association record identified by the given ID with the provided data.\r\n   *\r\n   * @param {number} id - The identifier of the employee-customer record to update.\r\n   * @param {EmployeeCustomersIn} body - The data to update the employee-customer record with.\r\n   * @return {Observable<EmployeeCustomersOut>} An observable that emits the updated employee-customer data.\r\n   */\r\n  putEmployeeCustomers (id: number, body: EmployeeCustomersIn) {\r\n    return this.http.put<ApiSuccess<EmployeeCustomersOut>>(`${this.url}/employee-customers/${id}`, body\r\n    ).pipe(\r\n      map(({ data }) => data)\r\n    )\r\n  }\r\n\r\n  /**\r\n   * Fetches the employee-customer details based on the provided employee customer ID.\r\n   *\r\n   * @param {number} id - The identifier of the employee-customer record to update.\r\n   * @return {Observable<EmployeeCustomersOut>} An observable that emits the updated employee-customer data.\r\n   */\r\n  getEmployeeCustomer (id: number) {\r\n    return this.http.get<ApiSuccess<EmployeeCustomersOut>>(`${this.url}/employee-customers/${id}`\r\n    ).pipe(\r\n      map(({ data }) => data)\r\n    )\r\n  }\r\n\r\n  /**\r\n   * Enables or disables an employee customer's active state.\r\n   *\r\n   * @param {EmployeeCustomerDhl} employee - The employee customer object to be updated.\r\n   * @param {boolean} [isActive] - Optional parameter to explicitly set the active state.\r\n   *                                If null or undefined, the active state will be toggled.\r\n   * @return {Observable<EmployeeCustomersOut>} An observable containing the updated employee customer output.\r\n   */\r\n  enableDisableEmployeeCustomers (employee: EmployeeCustomerDhl, isActive?: boolean): Observable<EmployeeCustomersOut> {\r\n    return this.http.patch<ApiSuccess<EmployeeCustomersOut>>(`${this.url}/employee-customers/${employee.id}`, {\r\n      is_active: isActive ?? !employee.is_active\r\n    }).pipe(\r\n      map(({ data }) => data)\r\n    )\r\n  }\r\n\r\n  /**\r\n   * Submits a file containing employee customer data for a specific country to the server.\r\n   *\r\n   * @param {number} countryId - The identifier of the country for which the data is being uploaded.\r\n   * @param {File} file - The file containing employee customer data to be uploaded.\r\n   * @return {Observable<BoardingProcessIdIn>} Observable that emits the processed boarding process ID on success.\r\n   */\r\n  postEmployeeCustomersLoad (countryId: number, file: File) {\r\n    const formData = new FormData()\r\n    formData.append('file', file)\r\n    formData.append('country_id', countryId.toString())\r\n    return this.http.post<ApiSuccess<BoardingProcessIdIn>>(\r\n      `${this.url}/employee-customers/load`,\r\n      formData\r\n    ).pipe(\r\n      map(({ data }) => data)\r\n    )\r\n  }\r\n\r\n  /**\r\n   * Downloads a file containing customer data for a specific employee based on the provided country ID.\r\n   *\r\n   * @param {number} id - The ID of the country used as a filter for fetching the employee's customers.\r\n   * @return {Observable<Blob>} An observable that emits the file blob containing the customer data.\r\n   */\r\n  getEmployeeCustomersDownload (id:number):Observable<Blob> {\r\n    return this.http.get(`${this.url}/employee-customers/download`, {\r\n      params: { country_id: id },\r\n      responseType: 'blob'\r\n    })\r\n  }\r\n\r\n  /**\r\n   * Retrieves the boarding process details for a given ID.\r\n   *\r\n   * @param {number} id - The unique identifier of the boarding process to retrieve.\r\n   * @return {Observable<BoardingProcessIn>} An observable containing the boarding process details.\r\n   */\r\n  getBoardingProcess (id:number) {\r\n    return this.http.get<ApiSuccess<BoardingProcessIn>>(`${this.url}/boarding-process/${id}`\r\n    ).pipe(\r\n      map(({ data }) => data)\r\n    )\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Inject, Injectable } from '@angular/core'\r\nimport { map, Observable } from 'rxjs'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport {\r\n  ExternalShipmentAddressesIn,\r\n  ExternalShipmentAddressesOut,\r\n  ExternalShipmentFileOut,\r\n  ExternalShipmentHistoriesOut,\r\n  ExternalShipmentStatusOut\r\n} from './models/api-e-tools-auto-billing.types'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiEToolsAutoBillingService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) { }\r\n\r\n  /**\r\n   * Retrieves the URL for the shipments API from the environment configurations.\r\n   *\r\n   * @return {string} The URL of the shipments API.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiEToolsAutoBilling ?? ''\r\n  }\r\n\r\n  /**\r\n   * Updates external shipment address details for the given address ID.\r\n   *\r\n   * @param {Object} params - The parameters for the API request.\r\n   * @param {string} params.id - The unique identifier of the address to update.\r\n   * @param {Object} params.body - The payload containing updated address details.\r\n   * @return {Observable<ExternalShipmentAddressesOut>} An observable containing the updated external shipment address information.\r\n   */\r\n  patchExternalShipmentAddresses ({\r\n    id,\r\n    ...body\r\n  }: ExternalShipmentAddressesIn): Observable<ExternalShipmentAddressesOut> {\r\n    return this.http.patch<ApiSuccess<ExternalShipmentAddressesOut>>(`${this.url}/external-shipment-addresses/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the external shipment file by its identifier.\r\n   *\r\n   * @param {number} fileId - The unique identifier of the external shipment file to be retrieved.\r\n   * @return {Observable<ExternalShipmentFileOut>} An observable containing the external shipment file data.\r\n   */\r\n  getExternalShipmentFile (fileId: number): Observable<ExternalShipmentFileOut> {\r\n    return this.http.get<ApiSuccess<ExternalShipmentFileOut>>(`${this.url}/external-shipment-files/${fileId}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the history entries for a specific external shipment.\r\n   *\r\n   * @param {number} id - The ID of the external shipment to retrieve history for.\r\n   * @return {Observable<ExternalShipmentHistoriesOut>} An observable containing the external shipment history entries.\r\n   */\r\n  getExternalShipmentHistories (id: number): Observable<ExternalShipmentHistoriesOut> {\r\n    return this.http.get<ApiSuccess<ExternalShipmentHistoriesOut>>(`${this.url}/external-shipments/${id}/external-shipment-histories`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the list of external shipment statuses\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to fetch the external shipment statuses.\r\n   * @return {Observable<ExternalShipmentStatusOut>} An observable that emits the external shipment statuses data.\r\n   */\r\n  getExternalShipmentStatuses (params: QueryParams): Observable<ExternalShipmentStatusOut> {\r\n    return this.http.get<ApiSuccess<ExternalShipmentStatusOut>>(`${this.url}/external-shipment-statuses`, {\r\n      params\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { Environment } from '../ngx-services.models'\r\nimport {\r\n  DeliveryConfirmationCompleteIn,\r\n  DeliveryConfirmationGenerateIn,\r\n  DeliveryConfirmationGenerateOut,\r\n  DeliveryConfirmationIn\r\n} from './models/api-external-pickups.types'\r\nimport { Observable } from 'rxjs'\r\nimport { map } from 'rxjs/operators'\r\nimport { ApiSuccess } from './models/api.models'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiExternalPickupsService {\r\n  private appKey: string\r\n\r\n  constructor (\r\n    private httpClient: HttpClient,\r\n    @Inject('env') private environment: Environment\r\n  ) {\r\n    this.appKey = environment.apiExternalOperationsKey ?? ''\r\n  }\r\n\r\n  /**\r\n   * Getter method to retrieve the API's external operations URL.\r\n   * Fetches the URL from the `apiExternalOperationsUrl` property of the environment object.\r\n   * Defaults to an empty string if the property is undefined or null.\r\n   *\r\n   * @return {string} The external operations URL or an empty string if unavailable.\r\n   */\r\n  get url (): string {\r\n    return this.environment.apiExternalOperationsUrl ?? ''\r\n  }\r\n\r\n  /**\r\n   * Generates a delivery confirmation by sending the provided payload to the API.\r\n   *\r\n   * @param {DeliveryConfirmationGenerateIn} payload - The input payload required to generate the delivery confirmation.\r\n   * @return {Observable<DeliveryConfirmationGenerateOut>} An observable that emits the generated delivery confirmation data.\r\n   */\r\n  public postDeliveryConfirmationGenerate (payload: DeliveryConfirmationGenerateIn): Observable<DeliveryConfirmationGenerateOut> {\r\n    return this.httpClient.post<ApiSuccess<DeliveryConfirmationGenerateOut>>(\r\n      `${this.url}/delivery-confirmation/generate`,\r\n      payload, {\r\n        headers: { appkey: this.appKey }\r\n      }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Confirms the completion of a delivery operation by making a PATCH request.\r\n   *\r\n   * @param {Object} input - The input parameters for the method.\r\n   * @param {string} input.operationId - The unique identifier of the delivery operation to be confirmed.\r\n   * @param {string} input.keyOTP - The one-time password (OTP) key associated with the delivery confirmation.\r\n   * @return {Observable<Object>} - An observable containing the response data from the API.\r\n   */\r\n  public patchDeliveryConfirmationComplete ({\r\n    keyOTP,\r\n    operationId,\r\n  }: DeliveryConfirmationCompleteIn): Observable<{}> {\r\n    return this.httpClient.patch<ApiSuccess<{}>>(\r\n      `${this.url}/delivery-confirmation/completed/${keyOTP}`,\r\n      null, {\r\n        headers: { appkey: this.appKey },\r\n        params: { operation_id: operationId }\r\n      }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Cancels a delivery confirmation by sending an OTP and additional data to the server.\r\n   *\r\n   * @param {Object} param0 - The parameter object containing the required properties.\r\n   * @param {string} param0.otp - The one-time password to authenticate the cancellation request.\r\n   * @param {Object} param0.body - Additional body data required for cancellation.\r\n   * @return {Observable<Object>} An observable that emits the server's response when the cancellation is processed.\r\n   */\r\n  public putDeliveryConfirmation ({\r\n    otp,\r\n    ...body\r\n  }: DeliveryConfirmationIn): Observable<{}> {\r\n    return this.httpClient.put<ApiSuccess<{}>>(\r\n      `${this.url}/delivery-confirmation/confirmation/${otp}`,\r\n      body, {\r\n        headers: { appkey: this.appKey },\r\n      }).pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Inject, Injectable } from '@angular/core'\r\nimport { map, Observable } from 'rxjs'\r\nimport { Environment } from '../ngx-services.models'\r\nimport {\r\n  CancelPaymentReceiptIn,\r\n  CustomerDocumentTypesOut,\r\n  CustomersOut,\r\n  CustomerTypesOut,\r\n  InvoiceTypeCustomParamsIn,\r\n  OperationAccountPaymentIn,\r\n  OperationAccountPaymentOut,\r\n  OperationCancelBillingIn,\r\n  OperationDocumentIn,\r\n  OperationDocumentOut,\r\n  OperationPrintDocumentOut,\r\n  OperationShipmentExternalIn,\r\n  OperationShipmentExternalOut,\r\n  PrintCollectionReceiptOut\r\n} from './models/api-invoices.types'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiInvoicesService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) { }\r\n\r\n  /**\r\n   * Retrieves the API URL for invoices from the environments configuration.\r\n   *\r\n   * @return {string} The API URL for invoices.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiInvoicesUrl ?? ''\r\n  }\r\n\r\n  /**\r\n   * Sends an operation document to the server and processes the response.\r\n   *\r\n   * @param {OperationDocumentIn} body - The input data for the operation document.\r\n   * @return {Observable<OperationDocumentOut>} An observable containing the processed operation document output.\r\n   */\r\n  postOperationDocument (body: OperationDocumentIn): Observable<OperationDocumentOut> {\r\n    return this.http.post<ApiSuccess<OperationDocumentOut>>(`${this.url}/operation/document`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches and returns the collection receipt data for a given collection ID.\r\n   *\r\n   * @param {number} id - The unique identifier of the collection for which the receipt needs to be retrieved.\r\n   * @return {Observable<PrintCollectionReceiptOut>} An observable containing the collection receipt data.\r\n   */\r\n  getPrintCollectionReceipt (id: number): Observable<PrintCollectionReceiptOut> {\r\n    return this.http.get<ApiSuccess<PrintCollectionReceiptOut>>(`${this.url}/operation/print/collection-receipt/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Handles the account payment operation by sending a POST request to the specified endpoint.\r\n   * Processes the response and returns the operation data.\r\n   *\r\n   * @param {OperationAccountPaymentIn} body The payload containing information for the account payment operation.\r\n   * @return {Observable<OperationAccountPaymentOut>} An observable emitting the processed account payment operation data.\r\n   */\r\n  postOperationAccountPayment (body: OperationAccountPaymentIn): Observable<OperationAccountPaymentOut> {\r\n    return this.http.post<ApiSuccess<OperationAccountPaymentOut>>(`${this.url}/operation/account-payment`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Cancels a payment receipt based on the provided input.\r\n   * This method sends a POST request to cancel a document.\r\n   *\r\n   * @param body The data required to cancel the payment receipt, encapsulated in a CancelPaymentReceiptIn object.\r\n   * @return An Observable representing the result of the cancellation. Emits an empty object on success.\r\n   */\r\n  postOperationCancelDocument (body: CancelPaymentReceiptIn): Observable<{}> {\r\n    return this.http.post<ApiSuccess<{}>>(`${this.url}/operation/cancel-document`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Cancels an invoice based on the provided invoice ID and additional parameters.\r\n   *\r\n   * @param {Object} parameters - The parameters required to cancel the invoice, encapsulated in a CancelBillingIn object.\r\n   * @return {Observable<Object>} An observable that emits the response of the cancellation operation.\r\n   */\r\n  postOperationCancelBilling ({ invoiceId, ...body }: OperationCancelBillingIn): Observable<{}> {\r\n    return this.http.post<ApiSuccess<{}>>(`${this.url}/operation/cancel-billing/${invoiceId}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches a list of customer types from the server.\r\n   *\r\n   * @param {QueryParams} params - Query parameters to filter or customize the request.\r\n   * @return {Observable<CustomerTypesOut>} An observable emitting the customer types fetched from the server.\r\n   */\r\n  getCustomerTypes (params: QueryParams): Observable<CustomerTypesOut> {\r\n    return this.http.get<ApiSuccess<CustomerTypesOut>>(`${this.url}/customer-types`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves document types specific to a given country.\r\n   *\r\n   * @param {QueryParams} params - The query parameters containing country-specific information.\r\n   * @return {Observable<CustomerDocumentTypesOut>} An observable emitting the document types available for the specified country.\r\n   */\r\n  getCustomerDocumentTypes (params: QueryParams): Observable<CustomerDocumentTypesOut> {\r\n    return this.http.get<ApiSuccess<CustomerDocumentTypesOut>>(`${this.url}/customer-country-document-types`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches customer invoice details filtered by a custom invoice type.\r\n   *\r\n   * @param {InvoiceTypeCustomParamsIn} params - An object containing the filter parameters for the custom invoice type.\r\n   * @return {Observable<CustomersOut>} An observable containing customer invoice details of the specified type.\r\n   */\r\n  getCustomers (params: QueryParams): Observable<CustomersOut> {\r\n    return this.http.get<ApiSuccess<CustomersOut>>(`${this.url}/customers`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Sends a POST request to create or update an external shipment operation.\r\n   *\r\n   * @param {OperationShipmentExternalIn} params - The input parameters for the external shipment operation.\r\n   * @return {Observable<OperationShipmentExternalOut>} An observable that emits the result of the external shipment operation.\r\n   */\r\n  postOperationShipmentExternal (params: OperationShipmentExternalIn): Observable<OperationShipmentExternalOut> {\r\n    return this.http.post<ApiSuccess<OperationShipmentExternalOut>>(`${this.url}/operation/shipment/external`, params)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Processes an external payment operation for a shipment.\r\n   *\r\n   * @param {OperationShipmentExternalIn} params - The input parameters required for the external payment operation.\r\n   * @return {Observable<OperationShipmentExternalOut>} An observable that emits the result of the external payment operation for a shipment.\r\n   */\r\n  postOperationShipmentExternalPayment (params: OperationShipmentExternalIn): Observable<OperationShipmentExternalOut> {\r\n    return this.http.post<ApiSuccess<OperationShipmentExternalOut>>(`${this.url}/operation/shipment/external/payment`, params)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves and returns billing operation print details for a given document ID.\r\n   *\r\n   * @param {number} documentId - The ID of the document for which to fetch the print billing operation details.\r\n   * @return {Observable<OperationPrintDocumentOut>} An observable emitting the print billing operation details for the specified document.\r\n   */\r\n  getOperationPrintDocument (documentId: number): Observable<OperationPrintDocumentOut> {\r\n    return this.http.get<ApiSuccess<OperationPrintDocumentOut>>(`${this.url}/operation/print/document/${documentId}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport { OpenItemsOut, OtherInvoiceOut, PaymentOut } from './models/api-open-items.types'\r\nimport { map, Observable } from 'rxjs'\r\nimport { OtherInvoiceIn, PaymentOpenItemIn } from './models/api-open-items.interfaces'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiOpenItemsService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) {}\r\n\r\n  /**\r\n   * Retrieves the API URL for open-items from the environments' configuration.\r\n   *\r\n   * @return {string} The API URL for open-items.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiOpenItemsUrl ?? ''\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of open-items based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The parameters to use for querying open-items.\r\n   * @return {Observable<OpenItemsOut>} An observable that emits the open-item's data.\r\n   */\r\n  getOpenItems (params: QueryParams): Observable<OpenItemsOut> {\r\n    return this.http.get<ApiSuccess<OpenItemsOut>>(`${this.url}/open-items`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Processes a payment for an open item.\r\n   *\r\n   * @param {PaymentOpenItemIn} body - The payment details for the open item.\r\n   * @return {Observable<PaymentOut>} An observable that emits the result of the payment processing.\r\n   */\r\n  postPayment (body: PaymentOpenItemIn): Observable<PaymentOut> {\r\n    return this.http.post<ApiSuccess<PaymentOut>>(`${this.url}/payment`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Processes a payment for other invoice.\r\n   *\r\n   * @param {OtherInvoiceIn} body - The payment details for the other invoice.\r\n   * @return {Observable<OtherInvoiceOut>} An observable that emits the result of the payment processing.\r\n   */\r\n  postOtherInvoice (body: OtherInvoiceIn): Observable<OtherInvoiceOut> {\r\n    return this.http.post<ApiSuccess<OtherInvoiceOut>>(`${this.url}/other-invoices`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, Observable } from 'rxjs'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport {\r\n  CollectionPaymentsOut,\r\n  ExistPendingInvoicesIn,\r\n  ExistPendingPaymentsIn,\r\n  ExternalShipmentsOut,\r\n  ShipmentsReportOut\r\n} from './models/api-reports.types'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiReportsService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) { }\r\n\r\n  /**\r\n   * Retrieves the URL for the reports API from the environment configurations.\r\n   *\r\n   * @return {string} The URL of the reports API.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiReportsUrl ?? ''\r\n  }\r\n\r\n  /**\r\n   * Retrieves the list of collection payments\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to fetch the collection payments.\r\n   * @return {Observable<CollectionPaymentsOut[]>} An observable that emits an array of collection payment.\r\n   */\r\n  getCollectionPayments (params: QueryParams): Observable<CollectionPaymentsOut> {\r\n    return this.http.get<ApiSuccess<CollectionPaymentsOut>>(`${this.url}/collection-payment`, {\r\n      params\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the list of shipments with pending payments.\r\n   *\r\n   * @param {ExistPendingPaymentsIn} params - The parameters to filter pending payment shipments.\r\n   * @return {Observable<ShipmentsReportOut>} An observable emitting the shipments report data.\r\n   */\r\n  shipmentsPendingPayments (params: ExistPendingPaymentsIn): Observable<ShipmentsReportOut> {\r\n    return this.http.get<ApiSuccess<ShipmentsReportOut>>(`${this.url}/shipments-report`, {\r\n      params: {\r\n        ...params,\r\n        limit: 1,\r\n        offset: 0,\r\n        to_landing: true,\r\n        shipment_status_code: 'PMPEN',\r\n      },\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches shipment reports that are pending invoices based on the specified parameters.\r\n   * This method retrieves a filtered list of shipments with pending invoice statuses.\r\n   *\r\n   * @param {ExistPendingInvoicesIn} params - The parameters to filter the pending invoices, including\r\n   *                                           shipment status codes, and pagination options.\r\n   * @return {Observable<ShipmentsReportOut>} An observable that emits the shipment report data based on the filter criteria.\r\n   */\r\n  shipmentsPendingInvoices (params: ExistPendingInvoicesIn): Observable<ShipmentsReportOut> {\r\n    return this.http.get<ApiSuccess<ShipmentsReportOut>>(`${this.url}/shipments-report`, {\r\n      params: {\r\n        ...params,\r\n        limit: 1,\r\n        offset: 0,\r\n        to_landing: true,\r\n        'shipment_status_code[in]': 'IPMPE,IMPEN,IPPEN',\r\n      },\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches shipment reports based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters used to filter or define the shipment reports.\r\n   * @return {Observable<ShipmentsReportOut>} An observable emitting the shipment report data.\r\n   */\r\n  getShipmentsReport (params: QueryParams): Observable<ShipmentsReportOut> {\r\n    return this.http.get<ApiSuccess<ShipmentsReportOut>>(`${this.url}/shipments-report`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a report of external shipments based on the provided query parameters.\r\n   *\r\n   * @param {QueryParams} params - An object representing the query parameters for filtering the external shipments report.\r\n   * @return {Observable<ExternalShipmentsOut>} An observable that emits the external shipments report data.\r\n   */\r\n  getExternalShipmentsReport (params: QueryParams): Observable<ExternalShipmentsOut> {\r\n    return this.http.get<ApiSuccess<ExternalShipmentsOut>>(`${this.url}/external-shipments-report`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport {\r\n  AuthLoginIn,\r\n  AuthLoginOut,\r\n  AuthMeOut,\r\n  AuthUserLoginIn,\r\n  ChangeLanguageIn,\r\n  GetUserOut,\r\n  GetUsersOut,\r\n  ModulesOut,\r\n  PutUsersIn,\r\n  PutUsersOut,\r\n  RoleIn,\r\n  RoleOut,\r\n  RolesOut,\r\n  RoleTypesOut,\r\n  SessionIn,\r\n  SessionOut\r\n} from './models/api-security.types'\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { map, Observable, tap } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiSecurityService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private cookie: CookieService,\r\n    private http: HttpClient\r\n  ) {}\r\n\r\n  /**\r\n   * Retrieves the API security URL from the environments configuration.\r\n   *\r\n   * @return {string} The API security URL.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiSecurityUrl ?? ''\r\n  }\r\n\r\n  /**\r\n   * Handles the login authentication request by sending the login data to the authentication endpoint.\r\n   *\r\n   * @param {AuthLoginIn} body The payload containing login credentials.\r\n   * @return {Observable<AuthLoginOut>} An observable emitting the authentication response data.\r\n   */\r\n  postAuthLogin (body: AuthLoginIn): Observable<AuthLoginOut> {\r\n    return this.http.post<ApiSuccess<AuthLoginOut>>(`${this.url}/auth/login`, body)\r\n      .pipe(\r\n        map(({ data }) => data),\r\n        tap(({ access_token }) => this.cookie.set(this.environments.authCookie, access_token, { path: '/' }))\r\n      )\r\n  }\r\n\r\n  /**\r\n   * Handles the user login process by sending user credentials to the authentication endpoint.\r\n   *\r\n   * @param {AuthUserLoginIn} body - The request payload containing user login details such as username and password.\r\n   * @return {Observable<AuthLoginOut>} An observable that emits the authenticated user's login data upon successful login.\r\n   */\r\n  postAuthUserLogin (body: AuthUserLoginIn): Observable<AuthLoginOut> {\r\n    return this.http.post<ApiSuccess<AuthLoginOut>>(`${this.url}/auth/user-login`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Logs out the current user by making a POST request to the logout endpoint.\r\n   *\r\n   * This method deletes all cookies after a successful logout.\r\n   *\r\n   * @return {Observable<{}>} An observable that emits the server's response to the logout request.\r\n   */\r\n  postAuthLogout (): Observable<{}> {\r\n    return this.http.post<ApiSuccess<{}>>(`${this.url}/auth/logout`, null)\r\n      .pipe(\r\n        map(({ data }) => data),\r\n        tap(() => this.cookie.delete(this.environments.authCookie, '/'))\r\n      )\r\n  }\r\n\r\n  /**\r\n   * Creates a new session for a specified model.\r\n   *\r\n   * @param {Object} params - The parameters for creating the session.\r\n   * @param {string} params.modelType - The type of the model.\r\n   * @param {string} params.modelId - The ID of the model.\r\n   * @param {string} [params.token] - Optional authorization token.\r\n   *\r\n   * @return {Observable<SessionOut>} An observable containing the created session details.\r\n   */\r\n  postSession ({\r\n    modelType,\r\n    modelId,\r\n    token,\r\n  }: SessionIn): Observable<SessionOut> {\r\n    let headers = new HttpHeaders({})\r\n\r\n    if (token) { headers = headers.set('Authorization', `Bearer ${token}`) }\r\n\r\n    return this.http.post<ApiSuccess<SessionOut>>(\r\n      `${this.url}/sessions`, {\r\n        model_type: modelType,\r\n        model_id: modelId,\r\n      }, {\r\n        headers\r\n      }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the authenticated user's information.\r\n   * Sends a GET request to the endpoint '/auth/me' to retrieve information\r\n   * about the currently authenticated user.\r\n   *\r\n   * @return {Observable<AuthMeOut>} An observable that emits the authenticated user's data.\r\n   */\r\n  getAuthMe (): Observable<AuthMeOut> {\r\n    return this.http.get<ApiSuccess<AuthMeOut>>(`${this.url}/auth/me`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches the authenticated user's details from the server.\r\n   *\r\n   * @param token The JWT token used for authorization.\r\n   * @return An Observable that emits the user's details encapsulated in a MeOut object.\r\n   */\r\n  getOtherMe (token: string): Observable<AuthMeOut> {\r\n    return this.http.get<ApiSuccess<AuthMeOut>>(`${this.url}/auth/me`, {\r\n      headers: {\r\n        Authorization: `Bearer ${token}`\r\n      }\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches a user by their unique ID.\r\n   *\r\n   * @param {number} id - The unique identifier of the user to be fetched.\r\n   * @return {Observable<GetUserOut>} An observable containing the user information.\r\n   */\r\n  getUser (id: number): Observable<GetUserOut> {\r\n    return this.http.get<ApiSuccess<GetUserOut>>(`${this.url}/users/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Fetches a list of users from the server based on the specified query parameters.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter the list of users.\r\n   * @return {Observable<GetUsersOut>} An observable that emits the list of users retrieved from the server.\r\n   */\r\n  getUsers (params: QueryParams): Observable<GetUsersOut> {\r\n    return this.http.get<ApiSuccess<GetUsersOut>>(`${this.url}/users`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates the information of a specified user on the server.\r\n   *\r\n   * @param {Object} params - The parameter object.\r\n   * @param {Object} params.user - The user object containing updated data.\r\n   * @param {string} params.user.id - The unique identifier of the user to be updated.\r\n   *\r\n   * @return {void} This method does not return a value.\r\n   */\r\n  putUsers ({ user }: PutUsersIn) {\r\n    return this.http.put<ApiSuccess<PutUsersOut>>(`${this.url}/users/${user.id}`, user)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Changes the language for the authenticated user.\r\n   *\r\n   * @param {Object} params - The input parameters for changing the language.\r\n   * @param {string} params.languageId - The ID of the new language to be set.\r\n   * @return {Observable<ApiSuccess<AuthMeOut>>} An observable that emits the result of the language change request.\r\n   */\r\n  putChangeLanguage ({\r\n    languageId\r\n  }: ChangeLanguageIn): Observable<AuthMeOut> {\r\n    return this.http.put<ApiSuccess<AuthMeOut>>(`${this.url}/auth/me`, {\r\n      language_id: languageId\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of roles with their permissions.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to filter the roles.\r\n   * @returns {Observable<RoleIn[]>} An observable that emits an array of role permissions.\r\n   */\r\n  getRoles (params: QueryParams): Observable<RolesOut> {\r\n    return this.http.get<ApiSuccess<RolesOut>>(`${this.url}/roles`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves the role types from the API.\r\n   *\r\n   * @param {QueryParams} params - The query parameters to be sent with the request.\r\n   * @returns {Observable<RoleTypesOut>} An observable containing the role types output.\r\n   */\r\n  getRoleTypes (params: QueryParams): Observable<RoleTypesOut> {\r\n    return this.http.get<ApiSuccess<RoleTypesOut>>(`${this.url}/role-types`, { params })\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves roles by the specified ID.\r\n   *\r\n   * @param id - The ID of the role to retrieve.\r\n   * @returns An Observable that emits the role data.\r\n   */\r\n  getRole (id: number): Observable<RoleOut> {\r\n    return this.http.get<ApiSuccess<RoleOut>>(`${this.url}/roles/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Creates a new role with the specified permissions.\r\n   *\r\n   * @param {RoleIn} body - The permissions and details for the new role.\r\n   * @returns {Observable<RoleOut>} An observable containing the created role's permissions.\r\n   */\r\n  postRole (body: RoleIn): Observable<RoleOut> {\r\n    return this.http.post<ApiSuccess<RoleOut>>(`${this.url}/roles`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Updates the permissions of a specific role.\r\n   *\r\n   * @param id - The unique identifier of the role to update.\r\n   * @param body - The new permissions to assign to the role.\r\n   * @returns An Observable that emits the updated module permissions.\r\n   */\r\n  putRole (id: number, body: RoleIn): Observable<RoleOut> {\r\n    return this.http.put<ApiSuccess<RoleOut>>(`${this.url}/roles/${id}`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Deletes the permissions associated with a specific role.\r\n   *\r\n   * @param {number} id - The unique identifier of the role whose permissions are to be deleted.\r\n   * @returns {Observable<{}>} An observable that emits the result of the delete operation.\r\n   */\r\n  deleteRole (id: number): Observable<{}> {\r\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/roles/${id}`)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of modules and permissions\r\n   *\r\n   * @param queryParams - The query parameters to filter the modules.\r\n   * @returns Observable<ModulesOut[]> - An observable that emits an array of modules and permissions.\r\n   */\r\n  getModules (queryParams: QueryParams): Observable<ModulesOut> {\r\n    return this.http.get<ApiSuccess<ModulesOut>>(`${this.url}/modules`, {\r\n      params: queryParams\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of modules and permissions\r\n   *\r\n   * @param params.token - Custom token for authorization.\r\n   * @param params.queryParams - The query parameters to filter the modules.\r\n   * @returns Observable<ModulesOut[]> - An observable that emits an array of modules and permissions.\r\n   */\r\n  getModulesByToken (params: {\r\n    token: string,\r\n    queryParams: QueryParams\r\n  }): Observable<ModulesOut> {\r\n    return this.http.get<ApiSuccess<ModulesOut>>(`${this.url}/modules`, {\r\n      params: params.queryParams,\r\n      headers: {\r\n        Authorization: `Bearer ${params.token}`\r\n      }\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Inject, Injectable } from '@angular/core'\r\nimport { map, Observable } from 'rxjs'\r\nimport { Environment } from '../ngx-services.models'\r\nimport {\r\n  ManifestMultipleIn,\r\n  ManifestMultipleOut,\r\n  ShipmentEmployeeCustomer,\r\n  ShipmentCancellationIn,\r\n  ShipmentCancellationOut,\r\n  ValidateAccountIn,\r\n  ValidateAccountOut\r\n} from './models/api-shipments.types'\r\nimport { ApiSuccess } from './models/api.models'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiShipmentsService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment,\r\n    private http: HttpClient\r\n  ) { }\r\n\r\n  /**\r\n   * Retrieves the URL for the shipments API from the environment configurations.\r\n   *\r\n   * @return {string} The URL of the shipments API.\r\n   */\r\n  get url (): string {\r\n    return this.environments.apiShipmentUrl ?? ''\r\n  }\r\n\r\n  /**\r\n   * Retrieves the parameter values based on the provided parameter names.\r\n   *\r\n   * @param {ValidateAccountIn} body - An object of parameter names for which the values need to be fetched.\r\n   * @return {Observable<ValidateAccountIn>} An observable that emits the fetched parameter values\r\n   * @param body\r\n   */\r\n  postValidateAccount (body: ValidateAccountIn): Observable<ValidateAccountOut> {\r\n    return this.http.post<ApiSuccess<ValidateAccountOut>>(`${this.url}/accounts`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Sends a POST request to the shipments manifest endpoint with the provided body.\r\n   *\r\n   * @param body - The request payload of type `ManifestMultipleIn`.\r\n   * @returns An observable that emits the response data of type `ManifestMultipleOut`.\r\n   */\r\n  postManifestMultiple (body: ManifestMultipleIn) {\r\n    return this.http.post<ApiSuccess<ManifestMultipleOut>>(`${this.url}/shipments/manifest`, body)\r\n      .pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Validates and obtains the number of shipments allowed by an employee customer\r\n   *\r\n   * @param {id} params - The id employee customer\r\n   * @return {Observable<ShipmentEmployeeCustomer>} An observable containing the shipments allowed by an employee\r\n   */\r\n  getEmployeeCustomer (id: number): Observable<ShipmentEmployeeCustomer> {\r\n    return this.http.get<ApiSuccess<ShipmentEmployeeCustomer>>(`${this.url}/shipments/employee-customer/${id}`).pipe(map(({ data }) => data))\r\n  }\r\n\r\n  /**\r\n   * Cancels a specific shipment by providing its ID and a reason for cancellation.\r\n   * Sends a PATCH request to update the shipment's cancellation status with the specified reason.\r\n   *\r\n   * @param {Object} param0 - The input object containing shipment cancellation details.\r\n   * @param {string} param0.shipmentId - The unique identifier of the shipment to be canceled.\r\n   * @param {string} param0.reasonId - The unique identifier of the reason for cancellation.\r\n   * @return {Observable<ShipmentCancellationOut>} An observable emitting the result of the cancellation operation.\r\n   */\r\n  patchShipmentsCancellation ({ shipmentId, reasonId }: ShipmentCancellationIn) {\r\n    return this.http.patch<ApiSuccess<ShipmentCancellationOut>>(`${this.url}/shipments/${shipmentId}/cancellation`, {\r\n      cancellationReasonId: reasonId\r\n    }).pipe(map(({ data }) => data))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport Pusher, { Channel } from 'pusher-js'\r\nimport { Observable } from 'rxjs'\r\nimport { Environment } from '../ngx-services.models'\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class WebSocketsService {\r\n  private pusher: Pusher | null\r\n\r\n  constructor (\r\n    @Inject('env') private environments: Environment\r\n  ) {\r\n    this.pusher = null\r\n\r\n    this.connect()\r\n      .then((pusher) => {\r\n        if (!pusher) return\r\n\r\n        this.pusher = pusher\r\n      })\r\n  }\r\n\r\n  /**\r\n   * Publishes an event to the specified channel with the given data.\r\n   *\r\n   * @param {Channel} channel - The channel instance where the event will be published.\r\n   * @param {string} eventName - The name of the event to be published.\r\n   * @param {T} data - The payload data to be sent with the event.\r\n   * @return {Promise<boolean>} A promise that resolves to a boolean indicating\r\n   * whether the event was successfully triggered on the channel.\r\n   */\r\n  async pub<T> (channel: Channel, eventName: string, data: T) {\r\n    return channel.trigger(`client-${eventName}`, data)\r\n  }\r\n\r\n  /**\r\n   * Subscribes to a specified channel, retrying multiple times upon failure.\r\n   *\r\n   * @param {string} channelName - The name of the channel to be subscribed to.\r\n   * @return {Promise<Channel>} A promise that resolves to the subscribed channel object if successful.\r\n   * @throws {Error} If the subscription fails after the maximum number of retry attempts.\r\n   */\r\n  async channelSub (channelName: string): Promise<Channel> {\r\n    const attempts = 3\r\n\r\n    for (let attempt = 0; attempt <= attempts; attempt++) {\r\n      const channel = this.pusher?.channel(channelName)\r\n\r\n      if (channel?.subscribed) {\r\n        return channel\r\n      }\r\n\r\n      this.pusher?.subscribe(channelName)\r\n\r\n      if (attempt < attempts) {\r\n        await this.wait()\r\n      }\r\n    }\r\n\r\n    throw new Error(`Failed to subscribe to channel \"${channelName}\" after ${attempts} attempts.`)\r\n  }\r\n\r\n  /**\r\n   * Binds an event listener to a specified event on a given channel using Pusher or a Channel object,\r\n   * and returns an Observable that emits event data of type T.\r\n   *\r\n   * @param {Channel|string} channel - The channel to bind the event to. It can be a Channel object or a string representing the channel name.\r\n   * @param {string} event - The name of the event to bind to the channel.\r\n   * @return {Observable<T>} An Observable that emits data of type T when the specified event is triggered.\r\n   */\r\n  eventBind<T> (channel: Channel | string, event: string): Observable<T> {\r\n    return new Observable((subscriber) => {\r\n      if ((channel as Channel)?.name) {\r\n        (channel as Channel).bind(event, (data: T) => subscriber.next(data))\r\n      } else {\r\n        this.pusher?.subscribe((channel as string))\r\n          .bind(event, (data: T) => subscriber.next(data))\r\n      }\r\n    })\r\n  }\r\n\r\n  /**\r\n   * Unbinds an event from the specified channel and returns an observable\r\n   * that emits data when the event callback is triggered.\r\n   *\r\n   * @param {Channel} channel - The channel object from which the event should be unbound.\r\n   * @param {string} event - The name of the event to unbind.\r\n   * @return {Observable<T>} An observable that emits data from the unbound event callback.\r\n   */\r\n  eventUnbind<T> (channel: Channel, event: string) {\r\n    return new Observable((subscriber) =>\r\n      channel.unbind(event, (data: T) => subscriber.next(data)))\r\n  }\r\n\r\n  private connect () {\r\n    return new Promise<Pusher | false>((resolve) => {\r\n      const { sockets } = this.environments\r\n\r\n      if (!sockets) return resolve(false)\r\n\r\n      const pusher = new Pusher(sockets.app_key, {\r\n        wsHost: sockets.url,\r\n        wsPort: sockets.port,\r\n        enabledTransports: ['wss', 'ws'],\r\n        forceTLS: false,\r\n        enableStats: false,\r\n      })\r\n\r\n      if (sockets.debug) {\r\n        Pusher.logToConsole = true\r\n      }\r\n\r\n      return resolve(pusher)\r\n    })\r\n  }\r\n\r\n  private async wait (): Promise<void> {\r\n    const waitTime = 3 * 1000\r\n\r\n    return new Promise((resolve) => setTimeout(resolve, waitTime))\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CryptoService {\r\n  constructor (\r\n    @Inject('env') private environments: Environment\r\n  ) {\r\n  }\r\n\r\n  public async encryptAES (plaintext: string): Promise<string> {\r\n    const cryptoKey = await this.loadKey()\r\n\r\n    // Convert the plaintext in Uint8Array\r\n    const encoder = new TextEncoder()\r\n    const encoded = encoder.encode(plaintext)\r\n\r\n    // Generate a random Initialization Vector (IV)\r\n    const iv = crypto.getRandomValues(new Uint8Array(12))\r\n\r\n    // Encrypt the plaintext\r\n    const ciphertext = await crypto.subtle.encrypt(\r\n      {\r\n        name: 'AES-GCM',\r\n        iv,\r\n      },\r\n      cryptoKey,\r\n      encoded\r\n    )\r\n\r\n    return `${this.uint8ArrayToBase64(iv)}:${this.arrayBufferToBase64(ciphertext)}`\r\n  }\r\n\r\n  public async decryptAES (payload: string): Promise<string> {\r\n    // Extract the Initialization Vector (IV), and the cypher text\r\n    const [base64IV, base64Ciphertext] = payload.split(':')\r\n\r\n    if (!base64IV || !base64Ciphertext) { throw new Error('The payload must contain the IV and the cipher text.') }\r\n\r\n    const cryptoKey = await this.loadKey()\r\n\r\n    const iv = this.base64ToUint8Array(base64IV)\r\n    const cipherText = this.base64ToArrayBuffer(base64Ciphertext)\r\n\r\n    // Decrypt the cypher text\r\n    const decrypted = await crypto.subtle.decrypt(\r\n      {\r\n        name: 'AES-GCM',\r\n        iv,\r\n      },\r\n      cryptoKey,\r\n      cipherText\r\n    )\r\n\r\n    // Decode the decrypted text\r\n    const decoder = new TextDecoder()\r\n    return decoder.decode(decrypted)\r\n  }\r\n\r\n  private async loadKey () {\r\n    // Decode the base64 key to Uint8Array\r\n    const rawKey = this.base64ToUint8Array(this.environments.secretKey)\r\n\r\n    // Import the key to API Crypto\r\n    return await crypto.subtle.importKey(\r\n      'raw',\r\n      rawKey,\r\n      { name: 'AES-GCM' },\r\n      true,\r\n      ['encrypt', 'decrypt']\r\n    )\r\n  }\r\n\r\n  private uint8ArrayToBase64 (data: Uint8Array): string {\r\n    let binary = ''\r\n    const len = data.byteLength\r\n\r\n    for (let i = 0; i < len; i++) {\r\n      binary += String.fromCharCode(data[i])\r\n    }\r\n\r\n    return btoa(binary)\r\n  }\r\n\r\n  private base64ToUint8Array (base64: string): Uint8Array {\r\n    const binaryString = atob(base64)\r\n    const len = binaryString.length\r\n    const bytes = new Uint8Array(len)\r\n    for (let i = 0; i < len; i++) {\r\n      bytes[i] = binaryString.charCodeAt(i)\r\n    }\r\n    return bytes\r\n  }\r\n\r\n  private arrayBufferToBase64 (buffer: ArrayBuffer): string {\r\n    let binary = ''\r\n    const bytes = new Uint8Array(buffer)\r\n    const len = bytes.byteLength\r\n\r\n    for (let i = 0; i < len; i++) {\r\n      binary += String.fromCharCode(bytes[i])\r\n    }\r\n\r\n    return btoa(binary)\r\n  }\r\n\r\n  private base64ToArrayBuffer (base64: string): ArrayBuffer {\r\n    const binaryString = atob(base64)\r\n    const len = binaryString.length\r\n    const bytes = new Uint8Array(len)\r\n\r\n    for (let i = 0; i < len; i++) {\r\n      bytes[i] = binaryString.charCodeAt(i)\r\n    }\r\n\r\n    return bytes.buffer\r\n  }\r\n}\r\n","import { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\n\r\n/**\r\n * Intercepts an outgoing HTTP request and modifies its headers to include default values\r\n * for Cache-Control, Expires, Pragma, Content-Type, Accept, and Accept-Language if they\r\n * are not already present.\r\n *\r\n * @param {HttpRequest<unknown>} req - The outgoing HTTP request to be intercepted and modified.\r\n * @param {HttpHandlerFn} next - The next handler in the chain to pass the modified request to.\r\n * @return {Observable<HttpEvent<unknown>>} An observable of the HTTP event resulting from the processed request.\r\n */\r\nexport function apiHeadersInterceptor (req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\r\n  let { headers } = req\r\n\r\n  if (!headers.has('Content-Type') && !(req.body instanceof FormData)) {\r\n    headers = headers.set('Content-Type', 'application/json')\r\n  }\r\n\r\n  if (!headers.has('Accept')) {\r\n    headers = headers.set('Accept', 'application/json')\r\n  }\r\n\r\n  if (!headers.has('Accept-Language')) {\r\n    headers = headers.set('Accept-Language', localStorage.getItem('lang') ?? 'en')\r\n  }\r\n\r\n  req = req.clone({ headers })\r\n\r\n  return next(req)\r\n}\r\n","import { inject } from '@angular/core'\r\nimport { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\r\n\r\n/**\r\n * An HTTP interceptor to append an Authorization header with a Bearer token\r\n * to outgoing HTTP requests if certain conditions are met.\r\n *\r\n * @param {HttpRequest<unknown>} req - The outgoing HTTP request object which may be modified.\r\n * @param {HttpHandlerFn} next - The next handler in the HTTP request pipeline.\r\n * @return {Observable<HttpEvent<unknown>>} An observable of the HTTP event stream resulting from the request.\r\n */\r\nexport function apiTokenInterceptor (req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\r\n  const { authCookie } = inject(ENVIRONMENT_TOKEN)\r\n  const cookie = inject(CookieService)\r\n\r\n  if (req.headers.has('Authorization') || req.headers.has('AppKey')) {\r\n    return next(req)\r\n  }\r\n\r\n  const token = cookie.get(authCookie)\r\n\r\n  if (!token) return next(req)\r\n\r\n  req = req.clone({\r\n    setHeaders: {\r\n      Authorization: `Bearer ${token}`\r\n    }\r\n  })\r\n\r\n  return next(req)\r\n}\r\n","import { inject } from '@angular/core'\r\nimport { HttpEvent, HttpHandlerFn, HttpRequest, HttpResponse } from '@angular/common/http'\r\n\r\nimport { Observable, of } from 'rxjs'\r\nimport { tap } from 'rxjs/operators'\r\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\r\n\r\nconst DEFAULT_TTL = 10000 // ttl in ms\r\nconst cache = new Map<string, { ttl: number, res: HttpResponse<any> }>()\r\n\r\n/**\r\n * Interceptor function to handle HTTP caching for GET requests. It retrieves cached responses\r\n * if available and valid; otherwise, it processes the request and caches the response for future use.\r\n *\r\n * @param {HttpRequest<any>} req - The HTTP request object being intercepted.\r\n * @param {HttpHandlerFn} next - The next HTTP handler function in the chain to process the request.\r\n * @return {Observable<HttpEvent<any>>} An observable that emits the HTTP event, either from cache\r\n * or by invoking the next handler.\r\n */\r\nexport function httpCachingInterceptor (req: HttpRequest<any>, next: HttpHandlerFn): Observable<HttpEvent<any>> {\r\n  const { cacheTtl } = inject(ENVIRONMENT_TOKEN)\r\n\r\n  if (req.method !== 'GET') return next(req)\r\n\r\n  const cached = cache.get(req.urlWithParams)\r\n\r\n  if (cached) {\r\n    const isExpired = Date.now() > cached.ttl\r\n\r\n    if (!isExpired) { return of(cached.res) }\r\n\r\n    cache.delete(req.urlWithParams) // If expired, remove the entry from cache\r\n  }\r\n\r\n  return next(req).pipe(\r\n    tap((res) => {\r\n      if (!(res instanceof HttpResponse)) { return }\r\n\r\n      const ttl = Date.now() + (cacheTtl ?? DEFAULT_TTL)\r\n\r\n      cache.set(req.urlWithParams, { res, ttl })\r\n    })\r\n  )\r\n}\r\n","import { HttpHeaders, HttpParams } from '@angular/common/http'\r\nimport { QueryParams } from '../apis/models/api.models'\r\n\r\n/**\r\n * Convert an object of key-value pairs into a URL query string.\r\n *\r\n * @param {Object} params - The key-value pairs to converted into a query string.\r\n *\r\n * @return {string} - The generated query string.\r\n */\r\nexport const queryString = (params: QueryParams): string => {\r\n  const queryElements: string[] = []\r\n\r\n  Object.entries(params).forEach(([key, value]) => {\r\n    if (Array.isArray(value)) {\r\n      const arrayQuery = value\r\n        .map((item) => `${encodeURIComponent(key)}=${encodeURIComponent(item as string | number | boolean)}`)\r\n        .join('&')\r\n\r\n      queryElements.push(arrayQuery)\r\n    } else {\r\n      const encodedQuery = `${encodeURIComponent(key)}=${encodeURIComponent(value as string | number | boolean)}`\r\n\r\n      queryElements.push(encodedQuery)\r\n    }\r\n  })\r\n\r\n  const queryString = queryElements.join('&')\r\n\r\n  return queryString.length ? `?${queryString}` : ''\r\n}\r\n\r\n/**\r\n * Creates an instance of HttpParams using the provided params object.\r\n *\r\n * @param {Object} params - The object containing the params to the HttpParams constructor.\r\n *\r\n * @returns {HttpParams} - An instance of HttpParams created from the params object.\r\n */\r\nexport const httpParams = (\r\n  params: QueryParams\r\n): HttpParams => new HttpParams({\r\n  fromObject: params\r\n})\r\n\r\n/**\r\n * Returns the headers for generating PDF files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating PDF files.\r\n */\r\nexport const pdfHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n  const headers = {\r\n    Accept: 'application/pdf'\r\n  }\r\n\r\n  return format === 'object'\r\n    ? headers\r\n    : new HttpHeaders(headers)\r\n}\r\n\r\n/**\r\n * Returns the headers for generating XML files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating XML files.\r\n */\r\nexport const xmlHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n  const headers = {\r\n    Accept: 'application/xml',\r\n  }\r\n\r\n  return format === 'object'\r\n    ? headers\r\n    : new HttpHeaders(headers)\r\n}\r\n","/*\r\n * Public API Surface of ngx-services\r\n */\r\nexport * from './lib/ngx-services.models'\r\nexport * from './lib/ngx-services.module'\r\n\r\n// api services\r\nexport * from './lib/apis/api-billing-do.service'\r\nexport * from './lib/apis/api-billing-mx.service'\r\nexport * from './lib/apis/api-cash-operations.service'\r\nexport * from './lib/apis/api-catalogs.service'\r\nexport * from './lib/apis/api-companies.service'\r\nexport * from './lib/apis/api-e-tools-auto-billing.service'\r\nexport * from './lib/apis/api-external-pickups.service'\r\nexport * from './lib/apis/api-invoices.service'\r\nexport * from './lib/apis/api-open-items.service'\r\nexport * from './lib/apis/api-reports.service'\r\nexport * from './lib/apis/api-security.service'\r\nexport * from './lib/apis/api-shipments.service'\r\n\r\n// api models\r\nexport * from './lib/apis/models/api-billing.types'\r\nexport * from './lib/apis/models/api-cash-operations.interfaces'\r\nexport * from './lib/apis/models/api-cash-operations.types'\r\nexport * from './lib/apis/models/api-catalog.interfaces'\r\nexport * from './lib/apis/models/api-catalog.types'\r\nexport * from './lib/apis/models/api-companies.interfaces'\r\nexport * from './lib/apis/models/api-companies.types'\r\nexport * from './lib/apis/models/api-e-tools-auto-billing.interfaces'\r\nexport * from './lib/apis/models/api-e-tools-auto-billing.types'\r\nexport * from './lib/apis/models/api-external-pickups.types'\r\nexport * from './lib/apis/models/api-invoices.interfaces'\r\nexport * from './lib/apis/models/api-invoices.types'\r\nexport * from './lib/apis/models/api-open-items.interfaces'\r\nexport * from './lib/apis/models/api-open-items.types'\r\nexport * from './lib/apis/models/api-reports.interfaces'\r\nexport * from './lib/apis/models/api-security.interfaces'\r\nexport * from './lib/apis/models/api-security.types'\r\nexport * from './lib/apis/models/api-shipments.types'\r\nexport * from './lib/apis/models/api.models'\r\n\r\n// websockets\r\nexport * from './lib/websockets/web-sockets.service'\r\n\r\n// cypher\r\nexport * from './lib/cypher/crypto.service'\r\n\r\n// interceptors\r\nexport * from './lib/interceptors/api-headers.interceptor'\r\nexport * from './lib/interceptors/api-token.interceptor'\r\nexport * from './lib/interceptors/http-caching.interceptor'\r\n\r\n// helpers\r\nexport * from './lib/helpers/http'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","i1","i2","tap"],"mappings":"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"}