Fix de gestion de orders
Proceso de cancelacion verificado
This commit is contained in:
@@ -11,7 +11,7 @@ post {
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
iccid: 8933201124059176320
|
||||
iccid: 8933201125068886692
|
||||
}
|
||||
|
||||
settings {
|
||||
|
||||
@@ -84,6 +84,7 @@ export class SimController {
|
||||
}
|
||||
|
||||
const resp = await this.tryUseCase(msg, this.useCases.activate({
|
||||
correlation_id: msgData.headers?.message_id,
|
||||
dueDate: this.genDueDate(DUE_DATE_SECONDS).toISOString(),
|
||||
customerAccountCode: env.OBJ_CUSTOMER_CODE,
|
||||
identifier: {
|
||||
@@ -118,6 +119,7 @@ export class SimController {
|
||||
|
||||
const iccid = msgData.payload.iccid
|
||||
const res = await this.tryUseCase(msg, this.useCases.preActivate({
|
||||
correlation_id: msgData.headers?.message_id,
|
||||
dueDate: this.genDueDate(2 * 60).toISOString(),
|
||||
identifier: {
|
||||
identifierType: "ICCID",
|
||||
@@ -144,6 +146,7 @@ export class SimController {
|
||||
|
||||
const iccid = msgData.payload.iccid
|
||||
const res = await this.tryUseCase(msg, this.useCases.reActivate({
|
||||
correlation_id: msgData.headers?.message_id,
|
||||
dueDate: this.genDueDate(2 * 60).toISOString(),
|
||||
identifier: {
|
||||
identifierType: "ICCID",
|
||||
@@ -169,6 +172,7 @@ export class SimController {
|
||||
|
||||
const iccid = msgData.payload.iccid
|
||||
const res = await this.tryUseCase(msg, this.useCases.suspend({
|
||||
correlation_id: msgData.headers?.message_id,
|
||||
dueDate: this.genDueDate(2 * 60).toISOString(),
|
||||
identifier: {
|
||||
identifierType: "ICCID",
|
||||
@@ -192,8 +196,9 @@ export class SimController {
|
||||
return Promise.reject("Mensaje invalido")
|
||||
}
|
||||
const iccid = msgData.payload.iccid
|
||||
console.log("Mensaje procesado", String(msgData))
|
||||
console.log("Mensaje procesado", msgData)
|
||||
const res = await this.tryUseCase(msg, this.useCases.terminate({
|
||||
correlation_id: msgData.headers?.message_id,
|
||||
dueDate: this.genDueDate(2 * 60).toISOString(),
|
||||
identifier: {
|
||||
identifierType: "ICCID",
|
||||
|
||||
@@ -18,7 +18,7 @@ export class SimRouter {
|
||||
this.routes = new Map([
|
||||
["activate", this.simController.activate()],
|
||||
["pause", this.simController.suspend()],
|
||||
["cancel", this.simController.terminate()], // terminate
|
||||
["cancel", this.simController.terminate()],
|
||||
["reActivate", this.simController.reActivate()],
|
||||
["preActivate", this.simController.preActivate()]
|
||||
]);
|
||||
|
||||
@@ -239,7 +239,7 @@ export class SimUseCases {
|
||||
operationPayload: terminationData,
|
||||
url: OPERATION_URL,
|
||||
iccid: terminationData.identifier.identifiers[0], //
|
||||
operation: "suspend"
|
||||
operation: "terminate"
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -140,6 +140,8 @@ export class SimController {
|
||||
msg: e
|
||||
}
|
||||
})
|
||||
console.error("[!] Error validando mensaje")
|
||||
return;
|
||||
}
|
||||
|
||||
const { iccid, offer } = req.body
|
||||
@@ -163,6 +165,8 @@ export class SimController {
|
||||
iccid: iccid,
|
||||
operation: "activation"
|
||||
}).send()
|
||||
return;
|
||||
|
||||
} catch (err) {
|
||||
console.error("Error activando la sim ", req.body)
|
||||
res.status(500).json({
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
import { describe, it } from "node:test";
|
||||
import { iccidValidator } from "./httpValidators.js";
|
||||
import assert from "node:assert";
|
||||
|
||||
describe("test validators", () => {
|
||||
it("should validate 19 char iccid", () => {
|
||||
const validBody = {
|
||||
iccid: "8933201125068886692"
|
||||
}
|
||||
const res = iccidValidator.validate(validBody)
|
||||
assert(res == true)
|
||||
}),
|
||||
|
||||
it("shouldnt validate empty string iccid", () => {
|
||||
const validBody = {
|
||||
iccid: ""
|
||||
}
|
||||
|
||||
assert
|
||||
.throws(() => iccidValidator.validate(validBody), { message: "La longitud del iccid es incorrecta debera ser de 19 caracteres" })
|
||||
|
||||
}),
|
||||
|
||||
it("shouldnt validate >19 char iccid", () => {
|
||||
const validBody = {
|
||||
iccid: "893320112506888669212345"
|
||||
}
|
||||
assert
|
||||
.throws(() => iccidValidator.validate(validBody), { message: "La longitud del iccid es incorrecta debera ser de 19 caracteres" })
|
||||
}),
|
||||
it("shouldnt validate <19 char iccid", () => {
|
||||
const validBody = {
|
||||
iccid: "8933201125"
|
||||
}
|
||||
assert
|
||||
.throws(() => iccidValidator.validate(validBody), { message: "La longitud del iccid es incorrecta debera ser de 19 caracteres" })
|
||||
})
|
||||
})
|
||||
@@ -63,7 +63,7 @@ export const activationValidator = new BodyValidator<{ iccid: string, offer: str
|
||||
]
|
||||
)
|
||||
|
||||
export const iccidValidator = new BodyValidator<{ iccid: string, offer: string }>(
|
||||
export const iccidValidator = new BodyValidator<{ iccid: string }>(
|
||||
[
|
||||
iccidRequired,
|
||||
iccidLongitudValidator,
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"test": "node --import tsx --test ./**/*.test.ts",
|
||||
"build": "tsc --build && tsc-alias -p tsconfig.json && cp package.json ../../dist/packages/sim-entrada-eventos/",
|
||||
"dev": "tsx watch index.ts",
|
||||
"start": "node ../../dist/packages/sim-entrada-eventos/index.js"
|
||||
|
||||
@@ -117,7 +117,7 @@ export class CheckObjeniousRequests {
|
||||
updatedAction.last_change_date = new Date().toISOString()
|
||||
updatedAction.end_date = originalAction.last_change_date
|
||||
|
||||
if (uorStatus /*== "finished"*/) {
|
||||
if (uorStatus == "finished") {
|
||||
console.log(" ****> Status", uorStatus)
|
||||
if (uorStatus != "finished") {
|
||||
console.error("!!! Notificando estado no finished")
|
||||
@@ -135,18 +135,21 @@ export class CheckObjeniousRequests {
|
||||
console.error(e)
|
||||
})
|
||||
}
|
||||
this.notifyFinalization({
|
||||
...originalAction,
|
||||
msisdn
|
||||
})
|
||||
// TODO la accion no siempre es activacion!
|
||||
.then(e => {
|
||||
console.log("[o] Notificada la activacion de ", originalAction.iccids)
|
||||
})
|
||||
.catch(e => {
|
||||
console.error("[x] Error enviando la activacion de ", originalAction)
|
||||
console.error(e)
|
||||
|
||||
if (originalAction.operation == "activation") {
|
||||
this.notifyFinalization({
|
||||
...originalAction,
|
||||
msisdn
|
||||
})
|
||||
// TODO la accion no siempre es activacion!
|
||||
.then(e => {
|
||||
console.log("[o] Notificada la activacion de ", originalAction.iccids)
|
||||
})
|
||||
.catch(e => {
|
||||
console.error("[x] Error enviando la activacion de ", originalAction)
|
||||
console.error(e)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (info != undefined) {
|
||||
@@ -173,7 +176,8 @@ export class CheckObjeniousRequests {
|
||||
// ! Importante las claves siempre en minuscula, los valores son cammelCase
|
||||
const equivalentMap = new Map<string, StatusEnum>([
|
||||
["en cours", "running"],
|
||||
["terminé", "finished"]
|
||||
["terminé", "finished"],
|
||||
["annulé", "finished"]
|
||||
])
|
||||
const res = equivalentMap.get(sanitizedStatus)
|
||||
if (res == undefined) return "running"
|
||||
|
||||
@@ -240,7 +240,7 @@ export class OrderRepository {
|
||||
)
|
||||
RETURNING id;
|
||||
`
|
||||
const vOrderHistory = [args.id, currentOrder.status, args.new_status, args.reason]
|
||||
const vOrderHistory = [orderId, currentOrder.status, args.new_status, args.reason]
|
||||
const newOrderHistoryResult = await this.getFirst(
|
||||
client.query<{ id: number }>(iOrderHistory, vOrderHistory)
|
||||
)
|
||||
@@ -331,7 +331,7 @@ export class OrderRepository {
|
||||
)
|
||||
RETURNING id;
|
||||
`
|
||||
const vOrderHistory = [args.id, currentOrder.status, args.reason ?? "finished successfully"]
|
||||
const vOrderHistory = [orderId, currentOrder.status, args.reason ?? "finished successfully"]
|
||||
const newOrderHistoryResult = await this.getFirst(
|
||||
client.query<{ id: number }>(iOrderHistory, vOrderHistory)
|
||||
)
|
||||
@@ -352,6 +352,7 @@ export class OrderRepository {
|
||||
return updatedOrder
|
||||
}
|
||||
|
||||
// TODO: tema de poder filtrar por correlation_id
|
||||
public async errorOrder(args: {
|
||||
id: number,
|
||||
status: "failed" | "dlx",
|
||||
|
||||
Reference in New Issue
Block a user