Sim comun para nos
This commit is contained in:
@@ -5,13 +5,13 @@ meta {
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseurl}}/sim/select?iccid=8934909001500561503
|
||||
url: {{baseurl}}/sim/select?iccid=8935103196306448300
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
iccid: 8934909001500561503
|
||||
iccid: 8935103196306448300
|
||||
}
|
||||
|
||||
settings {
|
||||
|
||||
@@ -5,6 +5,7 @@ import { EventBus } from "sim-shared/domain/EventBus.port.js";
|
||||
import { Result } from "sim-shared/domain/Result.js";
|
||||
import { SimEvents } from "sim-shared/domain/SimEvents.js";
|
||||
import { iccidValidator } from "./httpValidators.js";
|
||||
import { alaiSimToCommonSim } from "#domain/transformers.js";
|
||||
|
||||
export class SimAlaiController {
|
||||
|
||||
@@ -155,7 +156,9 @@ export class SimAlaiController {
|
||||
res.status(500).json(usecaseRes)
|
||||
return;
|
||||
} else {
|
||||
res.send(usecaseRes)
|
||||
const { sim, subscription, imei } = usecaseRes.data
|
||||
const simData = alaiSimToCommonSim(sim, subscription, imei)
|
||||
res.send(simData)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,22 +18,27 @@ const alaiNetworkStates = new Map<AlaiAPI.NetworkStatus, CommonSim<any>["network
|
||||
["ACTIVE", "ACTIVE"],
|
||||
["PRE_ACTIVE", "PREACTIVATED"],
|
||||
["BLOCKED", "SUSPENDED"],
|
||||
["DEACTIVATE", "TERMINATED"],
|
||||
["DEACTIVATE", "SUSPENDED"],
|
||||
["FRAUD", "TERMINATED"]
|
||||
])
|
||||
|
||||
export function alaiSimToCommonSim(alaiSim: AlaiAPI.Sim, alaiSubscription: AlaiAPI.Subscription): Result<string, CommonSim<AlaiAPI.Sim>> {
|
||||
export function alaiSimToCommonSim(alaiSim: AlaiAPI.Sim, alaiSubscription: AlaiAPI.Subscription, imeiSubscription: AlaiAPI.GetImeiSubscriptionDTO):
|
||||
Result<string, CommonSim<AlaiAPI.Subscription>> {
|
||||
|
||||
const status = alaiStates.get(alaiSubscription.status) ?? "UNKNOWN"
|
||||
const networkStatus = alaiNetworkStates.get(alaiSubscription.networkStatus) ?? "UNKNOWN"
|
||||
|
||||
const commonSim: CommonSim<AlaiAPI.Sim> = {
|
||||
const commonSim: CommonSim<AlaiAPI.Subscription> = {
|
||||
company: "ALAI",
|
||||
tariff: alaiSubscription.name,
|
||||
iccid: alaiSim.id,
|
||||
msisdn: alaiSubscription.lastMsisdnID,
|
||||
billing_status: status,
|
||||
network_status: networkStatus,
|
||||
raw: alaiSim
|
||||
raw: alaiSubscription,
|
||||
imei: imeiSubscription.content[0].id ?? "0",
|
||||
preactivation_date: new Date(alaiSubscription.creationDate),
|
||||
activation_date: new Date(alaiSubscription.firstActivationDate)
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -5,6 +5,8 @@ import { EventBus } from "sim-shared/domain/EventBus.port.js";
|
||||
import { Result } from "sim-shared/domain/Result.js";
|
||||
import { SimEvents } from "sim-shared/domain/SimEvents.js";
|
||||
import { iccidValidator } from "./httpValidators.js";
|
||||
import { error } from "node:console";
|
||||
import { nosSimToCommonSim } from "#domain/transformers.js";
|
||||
|
||||
export class SimNosController {
|
||||
|
||||
@@ -142,12 +144,17 @@ export class SimNosController {
|
||||
res.status(500).json(usecaseRes)
|
||||
return;
|
||||
} else {
|
||||
res.send(usecaseRes.data)
|
||||
const simComun = nosSimToCommonSim(usecaseRes.data)
|
||||
res.status(200).send({ data: simComun })
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
res.status(200).json(validateBody)
|
||||
res.status(501).json({
|
||||
errors: {
|
||||
msg: "No está implementada la busqueda por lista de iccid"
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,7 +175,7 @@ export class SimNosController {
|
||||
res.status(500).json(usecaseRes)
|
||||
return;
|
||||
} else {
|
||||
res.status(200).send(usecaseRes.data)
|
||||
res.status(200).send(usecaseRes)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ export namespace NosApi {
|
||||
|
||||
export type NetworkState = {
|
||||
currentStateId: number
|
||||
currentState: string
|
||||
currentState: "active" | "barred" | "terminated"
|
||||
isTransferring: boolean
|
||||
lastTransferred: number
|
||||
isOnline: boolean
|
||||
@@ -112,7 +112,7 @@ export namespace NosApi {
|
||||
|
||||
export type BillingState = {
|
||||
currentStateId: number
|
||||
currentState: string
|
||||
currentState: "active" | "terminated"
|
||||
}
|
||||
|
||||
export type BarData = {
|
||||
|
||||
39
packages/sim-consumidor-nos/domain/transformers.ts
Normal file
39
packages/sim-consumidor-nos/domain/transformers.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { CommonSim } from "sim-shared/domain/CommonSim.js";
|
||||
import { NosApi } from "./NosAPI.js";
|
||||
|
||||
const billingStates = new Map<
|
||||
NosApi.LineData["billingState"]["currentState"],
|
||||
CommonSim<any>["billing_status"]>([
|
||||
["active", "ACTIVE"],
|
||||
["terminated", "TERMINATED"]
|
||||
])
|
||||
|
||||
const networkStates = new Map<
|
||||
NosApi.LineData["networkState"]["currentState"],
|
||||
CommonSim<any>["network_status"]
|
||||
>([
|
||||
["active", "ACTIVE"],
|
||||
["terminated", "TERMINATED"],
|
||||
["barred", "SUSPENDED"]
|
||||
])
|
||||
|
||||
export function nosSimToCommonSim(nosSim: NosApi.LineData): CommonSim<NosApi.LineData> {
|
||||
const billingState = billingStates.get(nosSim.billingState.currentState) ?? "UNKNOWN"
|
||||
const networkState = networkStates.get(nosSim.networkState.currentState) ?? "UNKNOWN"
|
||||
|
||||
const commonSim: CommonSim<NosApi.LineData> = {
|
||||
company: "NOS",
|
||||
tariff: nosSim.tariffName,
|
||||
iccid: nosSim.physicalId,
|
||||
msisdn: nosSim.subscriberId,
|
||||
billing_status: billingState!,
|
||||
network_status: networkState!,
|
||||
raw: nosSim,
|
||||
imei: nosSim.imei,
|
||||
activation_date: new Date(nosSim.connectionDate),
|
||||
termination_date: new Date(nosSim.terminateDate),
|
||||
suspension_date: null // NOS no especifica la fecha de de 'barred' que equivale a la suspension
|
||||
}
|
||||
|
||||
return commonSim
|
||||
}
|
||||
@@ -56,12 +56,27 @@ const validNumericId = <Validator<{ id?: number }>>{
|
||||
validationFunc: (e) => e.id! >= 0
|
||||
}
|
||||
|
||||
/**
|
||||
* Por un problema arrastrado de alai, se tiene que guardar el orderId del pedido
|
||||
* de la sim en un campo de Alai.
|
||||
*/
|
||||
const ifAlaiOrderId = <Validator<{ iccid: string, orderId?: string }>>{
|
||||
field: "orderId",
|
||||
errorMsg: "Es necesario incluir un id de pedido (orderId) en las activaciones de Alai",
|
||||
validationFunc: (e) => {
|
||||
const company = companyFromIccid(e.iccid)
|
||||
if (company == "alai" && e.orderId == undefined) return false
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
export const activationValidator = new BodyValidator<{ iccid: string, offer: string }>(
|
||||
[
|
||||
iccidRequired,
|
||||
iccidLongitudValidator,
|
||||
iccidWithValidCompany,
|
||||
offerExists,
|
||||
ifAlaiOrderId
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
@@ -12,3 +12,15 @@ export type CommonSim<T> = {
|
||||
imei?: string,
|
||||
raw: T
|
||||
}
|
||||
|
||||
/**
|
||||
* Acorde a una peticion rest donde `raw` va a depender de `company`
|
||||
*/
|
||||
export type CommonSimDTO = CommonSim<Record<string, string>> & {
|
||||
preactivation_date?: string | null,
|
||||
activation_date?: string | null,
|
||||
suspension_date?: string | null,
|
||||
termination_date?: string | null,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user