diff --git a/docs/sim-alai/Change External ID.yml b/docs/sim-alai/Change External ID.yml new file mode 100644 index 0000000..8f11ee6 --- /dev/null +++ b/docs/sim-alai/Change External ID.yml @@ -0,0 +1,32 @@ +info: + name: Change External ID + type: http + seq: 7 + +http: + method: GET + url: "{{baseurl}}/v1/subscription/{{subscription}}?action=MODIFY" + params: + - name: action + value: MODIFY + type: query + body: + type: json + data: |- + { + "externalID":"" + } + auth: + type: bearer + token: "{{alai_token}}" + +runtime: + variables: + - name: subscription + value: "" + +settings: + encodeUrl: true + timeout: 0 + followRedirects: true + maxRedirects: 5 diff --git a/docs/sim-alai/IMEI of subscription.yml b/docs/sim-alai/IMEI of subscription.yml new file mode 100644 index 0000000..8d946f2 --- /dev/null +++ b/docs/sim-alai/IMEI of subscription.yml @@ -0,0 +1,22 @@ +info: + name: IMEI of subscription + type: http + seq: 5 + +http: + method: GET + url: "{{baseurl}}/v1/subscription/{{subscription}}/imei" + auth: + type: bearer + token: "{{alai_token}}" + +runtime: + variables: + - name: subscription + value: SID1848557_TS1766417781101_0 + +settings: + encodeUrl: true + timeout: 0 + followRedirects: true + maxRedirects: 5 diff --git a/docs/sim-alai/Login.yml b/docs/sim-alai/Login.yml index 0256ae9..02e84c0 100644 --- a/docs/sim-alai/Login.yml +++ b/docs/sim-alai/Login.yml @@ -22,7 +22,7 @@ runtime: code: |- const data = res.getBody(); - if (data.staus != 200) { + if (data.status != 200) { console.error("Error de login: ", data) return 1; } diff --git a/docs/sim-alai/SIM.yml b/docs/sim-alai/SIM.yml index ac38dd9..34377ee 100644 --- a/docs/sim-alai/SIM.yml +++ b/docs/sim-alai/SIM.yml @@ -8,7 +8,7 @@ http: url: "{{baseurl}}/v1/sim/{{iccid}}" auth: type: bearer - token: "" + token: "{{alai_token}}" runtime: variables: diff --git a/docs/sim-alai/Subscription.yml b/docs/sim-alai/Subscription.yml new file mode 100644 index 0000000..5ba5f45 --- /dev/null +++ b/docs/sim-alai/Subscription.yml @@ -0,0 +1,22 @@ +info: + name: Subscription + type: http + seq: 4 + +http: + method: GET + url: "{{baseurl}}/v1/subscription/{{subscription}}" + auth: + type: bearer + token: "{{alai_token}}" + +runtime: + variables: + - name: subscription + value: SID1776275_TS1759238704226_0 + +settings: + encodeUrl: true + timeout: 0 + followRedirects: true + maxRedirects: 5 diff --git a/docs/sim-alai/environments/prod.yml b/docs/sim-alai/environments/prod.yml index 58204fa..7f83d83 100644 --- a/docs/sim-alai/environments/prod.yml +++ b/docs/sim-alai/environments/prod.yml @@ -11,3 +11,5 @@ variables: name: certPasswd - name: brandId value: savefamily + - name: alai_token + value: eyJhbGciOiJIUzM4NCJ9.eyJiciI6InNhdmVmYW1pbHkiLCJpcCI6Ijg4LjE1LjE1Ny4xNjciLCJzdWIiOiJwYWxvbWFpYmFuZXoiLCJzIjoiRVdTMTY0YWJhYWRlNjA3ZDAyIiwicG9zIjoic2F2ZWZhbWlseUNhYyIsImlkV3NVc2VyIjoiODYiLCJpc012bmEiOmZhbHNlLCJkb21haW4iOiJBbGFpfHNhdmVmYW1pbHkiLCJpYXQiOjE3NzgxNTEzMzYsImV4cCI6MTc3ODE2MjEzNn0.zCFBJJsa0Krc7n5vUFF00z9Tq7m0dRlCGzs2Od67jaLCCn-mnIyyU424PkazacRW diff --git a/packages/sim-consumidor-alai/aplication/AlaiTokenManager.ts b/packages/sim-consumidor-alai/aplication/AlaiTokenManager.ts index ebb1cc9..5a7b69d 100644 --- a/packages/sim-consumidor-alai/aplication/AlaiTokenManager.ts +++ b/packages/sim-consumidor-alai/aplication/AlaiTokenManager.ts @@ -16,6 +16,7 @@ export class AlaiTokenManager implements JWTProvider<{}> { if (res.error != undefined) { console.error("Error obteniendo el token de ALAI", res.error) } else { + console.log("Obtenido token de ALAI: ", res) this.authToken = new JWTToken(res.data.accessToken) } } diff --git a/packages/sim-consumidor-alai/aplication/SimAlai.controller.ts b/packages/sim-consumidor-alai/aplication/SimAlai.controller.ts index 0dddca4..859d6b7 100644 --- a/packages/sim-consumidor-alai/aplication/SimAlai.controller.ts +++ b/packages/sim-consumidor-alai/aplication/SimAlai.controller.ts @@ -154,7 +154,7 @@ export class SimAlaiController { res.status(500).json(usecaseRes) return; } else { - res.send(usecaseRes.data) + res.send(usecaseRes) return; } } diff --git a/packages/sim-consumidor-alai/domain/AlaiAPI.ts b/packages/sim-consumidor-alai/domain/AlaiAPI.ts index 9e4223a..70a0994 100644 --- a/packages/sim-consumidor-alai/domain/AlaiAPI.ts +++ b/packages/sim-consumidor-alai/domain/AlaiAPI.ts @@ -1,3 +1,5 @@ +import { StringMappingType } from "typescript" + export namespace AlaiAPI { export type LoginResponseDTO = { @@ -61,10 +63,10 @@ export namespace AlaiAPI { id: string, name: string, domain: string, - status: string, - networkStatus: string, - type: string, - portabilityStatus: string, + status: Status, + networkStatus: NetworkStatus, + type: "RETAIL" | string, + portabilityStatus: "NO_PORTABILITY" | string, billingType: string, creationDate: string, // ISODATE firstActivationDate: string, // ISODATE @@ -77,6 +79,13 @@ export namespace AlaiAPI { ntwID: string, publicIdentity: string, externalID: string, + lastMsisdnID: string, + msisdn: { + id: string, + name: string, + links: Link[] + }, + lastIccID: string, priceplan: { id: string, name: string, @@ -123,6 +132,16 @@ export namespace AlaiAPI { mexicoSpecial: unknown, brazilSpecial: unknown, }, + msisdnList: { + id: string, + name: string, + links: Link[] + }[], + terminalList: { + id: string, + name: string, + links: Link[] + }[] } @@ -179,6 +198,24 @@ export namespace AlaiAPI { links: Link[] } + export type NetworkStatus = + "ACTIVE" | + "BLOCKED" | + "DEACTIVATE" | + "FRAUD" | + "PRE_ACTIVE" + + export type Status = + "ABORTED" | + "ACTIVE" | + "BLOCKEDCORE" | + "BLOCKEDFRAUD" | + "CANCELLED" | + "CONFIGURING" | + "DELETED" | + "PRE_ACTIVE" | + "TERMINATED" + export type Sim = { id: string, name: string, @@ -227,5 +264,31 @@ export namespace AlaiAPI { }, links: Link[] } + + export type GetImeiSubscriptionDTO = { + links: Link[], + content: { + id: string, + sim: { + id: string, + links: Link[] + }, + imsi: string, + lastChange: string, //ISODATE + lastUpdate: string, //ISODATE + model: string, + subscription: { + id: string, + links: Link[] + }, + links: Link[] + }[], + page: { + size: number, + totalElements: number, + totalPages: number, + number: number + } + } } diff --git a/packages/sim-consumidor-alai/domain/transformers.ts b/packages/sim-consumidor-alai/domain/transformers.ts new file mode 100644 index 0000000..cfdcdbf --- /dev/null +++ b/packages/sim-consumidor-alai/domain/transformers.ts @@ -0,0 +1,42 @@ +import { Result } from "sim-shared/domain/Result.js"; +import { AlaiAPI } from "./AlaiAPI.js"; +import { CommonSim } from "sim-shared/domain/CommonSim.js"; + +const alaiStates = new Map["billing_status"]>([ + ["ABORTED", "SUSPENDED"], + ["ACTIVE", "ACTIVE"], + ["BLOCKEDCORE", "SUSPENDED"], + ["BLOCKEDFRAUD", "SUSPENDED"], + ["CANCELLED", "TERMINATED"], + ["CONFIGURING", "SUSPENDED"], + ["DELETED", "TERMINATED"], + ["PRE_ACTIVE", "PREACTIVATED"], + ["TERMINATED", "TERMINATED"] +]) + +const alaiNetworkStates = new Map["network_status"]>([ + ["ACTIVE", "ACTIVE"], + ["PRE_ACTIVE", "PREACTIVATED"], + ["BLOCKED", "SUSPENDED"], + ["DEACTIVATE", "TERMINATED"], + ["FRAUD", "TERMINATED"] +]) + +export function alaiSimToCommonSim(alaiSim: AlaiAPI.Sim, alaiSubscription: AlaiAPI.Subscription): Result> { + + const status = alaiStates.get(alaiSubscription.status) ?? "UNKNOWN" + const networkStatus = alaiNetworkStates.get(alaiSubscription.networkStatus) ?? "UNKNOWN" + + const commonSim: CommonSim = { + company: "ALAI", + iccid: alaiSim.id, + msisdn: alaiSubscription.lastMsisdnID, + billing_status: status, + network_status: networkStatus, + raw: alaiSim + } + + return { + data: commonSim + } +} diff --git a/packages/sim-consumidor-alai/infrastructure/AlaiRepository.ts b/packages/sim-consumidor-alai/infrastructure/AlaiRepository.ts index 932412f..794a7bb 100644 --- a/packages/sim-consumidor-alai/infrastructure/AlaiRepository.ts +++ b/packages/sim-consumidor-alai/infrastructure/AlaiRepository.ts @@ -180,4 +180,11 @@ export class AlaiRepository { const res = await this.manageRequest(promReq) return res } + + public async getImeiFromSubscription(subscriptionId: string) { + const endpoint = `/v1/subscription/${subscriptionId}/imei` + const promReq = this.httpClient.patch(endpoint) + const res = await this.manageRequest(promReq) + return res + } } diff --git a/packages/sim-shared/domain/CommonSim.ts b/packages/sim-shared/domain/CommonSim.ts index e233fde..01e1573 100644 --- a/packages/sim-shared/domain/CommonSim.ts +++ b/packages/sim-shared/domain/CommonSim.ts @@ -1,14 +1,14 @@ -export type CommonSim = { +export type CommonSim = { company: "NOS" | "OBJ" | "ALAI", iccid: string, msisdn: string, tariff: string, // Depende de la compaƱia - billing_state: "AVAILABLE" | "PREACTIVATED" | "ACTIVATED" | "SUSPENDED" | "TERMINATED" | "UNKNOWN", - network_state: "AVAILABLE" | "PREACTIVATED" | "ACTIVATED" | "SUSPENDED" | "TERMINATED" | "UNKNOWN", + billing_status: "PREACTIVATED" | "ACTIVE" | "SUSPENDED" | "TERMINATED" | "UNKNOWN", + network_status: "AVAILABLE" | "PREACTIVATED" | "ACTIVE" | "SUSPENDED" | "TERMINATED" | "UNKNOWN", preactivation_date?: Date | null, activation_date?: Date | null, suspension_date?: Date | null, termination_date?: Date | null, imei: string, - raw: any + raw: T }