Problema de actuallizacion de operation resuelto
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { IOperationsRepository, Objenious, ObjeniousOperation, ObjeniousOperationChange } from "#objenious-shared/domain/operationsRepository.port.js"
|
||||
import { IOperationsRepository, Objenious, ObjeniousOperation, ObjeniousOperationChange, StatusEnum } from "#objenious-shared/domain/operationsRepository.port.js"
|
||||
import { HttpClient } from "#shared/infrastructure/HTTPClient.js";
|
||||
import { constants } from "node:buffer";
|
||||
|
||||
export class CheckObjeniousRequests {
|
||||
constructor(
|
||||
@@ -52,71 +53,93 @@ export class CheckObjeniousRequests {
|
||||
if (requestList.length == 0) return;
|
||||
|
||||
const operationsList = structuredClone(requestList)
|
||||
const PATH = "/actions/massActions"
|
||||
const PATH = "/actions/massActions/"
|
||||
const updated = []
|
||||
|
||||
const iccids = operationsList
|
||||
.map(e => e.iccids)
|
||||
.flat()
|
||||
|
||||
const mass_actions = operationsList
|
||||
.filter(e => e.mass_action_id != undefined)
|
||||
|
||||
const iccidSet = new Set<string>(iccids)
|
||||
console.log("iccidSet", iccidSet)
|
||||
|
||||
const req = this.httpClient.client.get<Objenious.ResponseGetMassAction[]>(PATH, {
|
||||
params: <Objenious.ParametersGetMassAction>{
|
||||
"identifier.identifierType": "ICCID",
|
||||
"identifier.identifiers": Array.from(iccidSet)
|
||||
}
|
||||
})
|
||||
let res;
|
||||
// 1. Comprobacion de la request.
|
||||
try {
|
||||
res = await req
|
||||
} catch (e) {
|
||||
console.error("Error comprobando el estado de ", iccidSet, e)
|
||||
return;
|
||||
}
|
||||
// 1. Una peticion por cada accion a comprobar
|
||||
// Las peticiones por iccid u otro filtro tardan ~50s
|
||||
for (const originalAction of mass_actions) {
|
||||
|
||||
const { data, status } = res
|
||||
|
||||
if (status != 200 || data == undefined) {
|
||||
console.error("Error buscando los massActions")
|
||||
return
|
||||
}
|
||||
|
||||
if (data.length == 0) return;
|
||||
|
||||
// 2. Por cada elemento de la respuesta se comprueba si ha habido un cambio de estado
|
||||
for (const action of data) {
|
||||
const { id, status } = action
|
||||
const original = operationsList.find(e => e.id == id)
|
||||
|
||||
console.log("Comprobando", action, original)
|
||||
|
||||
if (original == undefined) continue;
|
||||
|
||||
if (status != original?.status) {
|
||||
console.log("Actualizando", action, original)
|
||||
const updateData: ObjeniousOperationChange = {
|
||||
operation_id: original.id!,
|
||||
new_status: status,
|
||||
const req = this.httpClient.client.get<Objenious.ResponseGetMassAction>(PATH + originalAction.mass_action_id, {
|
||||
params: <Objenious.ParametersGetMassAction>{
|
||||
}
|
||||
original.status = status;
|
||||
original.last_change_date = new Date().toISOString()
|
||||
})
|
||||
|
||||
if (action.info != undefined) {
|
||||
updateData.info = action.info
|
||||
let res;
|
||||
// 1. Comprobacion de la request.
|
||||
try {
|
||||
res = await req
|
||||
} catch (e) {
|
||||
console.error("Error comprobando el estado de ", originalAction)
|
||||
console.error("Error: ", e)
|
||||
return;
|
||||
}
|
||||
|
||||
const { data } = res
|
||||
|
||||
console.log("Estado de : ", originalAction.mass_action_id, originalAction.iccids)
|
||||
console.log(res.status, data)
|
||||
|
||||
if (res.status != 200 || data == undefined) {
|
||||
console.error("Error buscando los massActions")
|
||||
continue;
|
||||
}
|
||||
|
||||
// 2. Se comprueba si ha habido un cambio de estado
|
||||
const { id, status, info } = data
|
||||
|
||||
if (status != originalAction.objenioius_status) {
|
||||
console.log("Actualizando", originalAction, status)
|
||||
const uorStatus = this.mapStatus(status)
|
||||
const updateData: ObjeniousOperationChange = {
|
||||
operation_id: originalAction.id!,
|
||||
new_objenious_status: status,
|
||||
previous_objenious_status: originalAction.objenioius_status,
|
||||
new_status: uorStatus,
|
||||
previous_status: originalAction.status
|
||||
}
|
||||
|
||||
originalAction.status = uorStatus;
|
||||
originalAction.objenioius_status = status;
|
||||
originalAction.last_change_date = new Date().toISOString()
|
||||
|
||||
if (info != undefined) {
|
||||
updateData.info = info
|
||||
}
|
||||
|
||||
try {
|
||||
console.log("Subiendo un update")
|
||||
console.log(updateData)
|
||||
await this.operationsRepository.updateOperation(updateData)
|
||||
updated.push(action)
|
||||
updated.push(originalAction)
|
||||
} catch (e) {
|
||||
console.error("Error actualizando el estado de ", action, e)
|
||||
console.error("Error actualizando el estado de ", originalAction, e)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private mapStatus(objStatus: string) {
|
||||
const sanitizedStatus = objStatus.trim().toLowerCase()
|
||||
// No tengo el resto porque no aparecen en la documentación
|
||||
// asumo que todos los demas sn running y se deben volver a comrobar
|
||||
const equivalentMap = new Map<string, StatusEnum>([
|
||||
["terminé", "finished"]
|
||||
])
|
||||
const res = equivalentMap.get(objStatus)
|
||||
if (res == undefined) return "running"
|
||||
return res
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -154,7 +177,7 @@ export class CheckObjeniousRequests {
|
||||
if (res.status == 200 && res.data != undefined && massActionId != undefined) {
|
||||
const updateData: ObjeniousOperationChange = {
|
||||
operation_id: request.id,
|
||||
new_status: "IN_PROGRESS",
|
||||
new_status: "running",
|
||||
new_mass_action_id: String(massActionId)
|
||||
}
|
||||
|
||||
@@ -163,7 +186,7 @@ export class CheckObjeniousRequests {
|
||||
request.mass_action_id = String(massActionId)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log("Error actualizando ell estado de ", request)
|
||||
console.log("Error actualizando el estado de ", request)
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user