diff --git a/packages/sim-consumidor-objenious/aplication/Sim.usecases.ts b/packages/sim-consumidor-objenious/aplication/Sim.usecases.ts index f17086a..28bbe61 100644 --- a/packages/sim-consumidor-objenious/aplication/Sim.usecases.ts +++ b/packages/sim-consumidor-objenious/aplication/Sim.usecases.ts @@ -116,6 +116,16 @@ export class SimUseCases { public activate(activationData: ActivationData): () => Promise> { const OPERATION_URL = "/actions/activateLine" return async () => { + const iccid = activationData.identifier.identifiers + // Comporbación excepcional para saber si la linea está suspendida + console.log("statusLinea, ", iccid) + const statusLinea = await this.objeniousRepository.getLinesAPI("ICCID", [String(iccid)]) + + if (statusLinea.data != undefined && statusLinea.data[0].status.billingStatus == "SUSPENDED") { + const res = await this.reActivate(activationData)() + return res; + } + const req = this.httpClient.client.post(OPERATION_URL, { dueDate: activationData.dueDate, identifier: activationData.identifier, diff --git a/packages/sim-shared/infrastructure/ObjeniousOperationRepository.test.ts b/packages/sim-shared/infrastructure/ObjeniousOperationRepository.test.ts index 8ab56d3..8304b64 100644 --- a/packages/sim-shared/infrastructure/ObjeniousOperationRepository.test.ts +++ b/packages/sim-shared/infrastructure/ObjeniousOperationRepository.test.ts @@ -1,6 +1,20 @@ -import { describe, it } from "node:test"; +import { before, describe, it } from "node:test"; import { ObjeniousOperationsRepository } from "./ObjeniousOperationRepository.js"; import { httpObjClient, postgresClient } from "../config/config.test.js"; +import { ObjeniousOperation } from "../domain/operationsRepository.port.js"; + +const correctOperation: ObjeniousOperation = { + iccids: "test", + operation: "activate", + status: "finished" +} + +const errorOperation: ObjeniousOperation = { + iccids: "test", + operation: "terminate", + status: "error", + error: "mensaje de error" +} describe("[Integration] Test API requests", () => { const repository = new ObjeniousOperationsRepository( @@ -8,7 +22,18 @@ describe("[Integration] Test API requests", () => { postgresClient ) - it("Read last sucessfull operation by line", () => { + before(async () => { + await repository.createOperation(correctOperation) + await repository.createOperation(errorOperation) + }) + it("Read last operation by line", () => { + /** + * Objetivo: + * - Cuando se va a hacer una operacion de sim hay que cancelarla directamente si: + * - Ya hay una en curso del mismo tipo. + * - Ya ha terminado una del mismo tipo. + * - Se ignoran las errorneas + */ }) }) diff --git a/packages/sim-shared/infrastructure/ObjeniousOperationRepository.ts b/packages/sim-shared/infrastructure/ObjeniousOperationRepository.ts index 6dc51fd..4346ff7 100644 --- a/packages/sim-shared/infrastructure/ObjeniousOperationRepository.ts +++ b/packages/sim-shared/infrastructure/ObjeniousOperationRepository.ts @@ -150,7 +150,7 @@ export class ObjeniousOperationsRepository implements IOperationsRepository { async getLastOperationOfLine(iccid: string) { const query = ` SELECT * FROM public.objenious_operation - WHERE iccids = $1 + WHERE iccids = $1 and error is null ORDER BY id asc limit 1 ` const values = [iccid];