import { ActionData, ActivationData } from "#domain/DTOs/objeniousapi.js" import { HttpClient } from "#shared/infrastructure/HTTPClient.js" import { AxiosError } from "axios" import { Result } from "#shared/domain/Result" // TODO: // - Pasar a un archivo de DTOs // - Mucha repeticion por funcion, deberia hacer una plantilla export class SimUseCases { private httpClient: HttpClient constructor(args: { httpClient: HttpClient }) { this.httpClient = args.httpClient } public activate(activationData: ActivationData): () => Promise> { const OPERATION_URL = "/actions/activateLine" return async () => { // TODO: validacion de campos const req = this.httpClient.client.post(OPERATION_URL, { ...activationData }) try { const response = await req console.log("[!] El status de la respuesta es", response.status) if (response.status == 200) { console.log("Activacion con exito", response.data.response) return >{ error: undefined, data: true } } else { return { error: String(response.status), data: undefined } } } catch (error) { console.error("[Sim.usecase] Error activando ", (error as AxiosError).response?.status) return { error: "Error general de la petiacion", data: undefined } } } } public preActivate(pauseData: ActionData): () => Promise> { const OPERATION_URL = "/actions/preactivateLine" return async () => { const req = this.httpClient.client.post(OPERATION_URL, { ...pauseData }) try { const e = await req console.log("Sim preactivada con exito", e.data) return >{ error: undefined, data: true } } catch (error) { console.error("Error preactivacion", error) return >{ error: "Error preactivando la sim" + pauseData.identifier, data: true } } } } public reActivate(pauseData: ActionData): () => Promise> { const OPERATION_URL = "/actions/reactivateLine" return async () => { const req = this.httpClient.client.post(OPERATION_URL, { ...pauseData }) try { const e = await req console.log("Sim reactivada con exito", e.data) return >{ error: undefined, data: true } } catch (error) { console.error("Error reactivacion", error) return >{ error: "Error reactivando la sim" + pauseData.identifier, data: true } } } } public suspend(suspendData: ActionData): () => Promise> { const OPERATION_URL = "/actions/suspendLine" return async () => { const req = this.httpClient.client.post(OPERATION_URL, { ...suspendData }) try { const e = await req console.log("Sim pausada/suspendida con exito", e.data) return >{ error: undefined, data: true } } catch (error) { console.error("Error pausa", error) return { error: "Error general pausando/suspendiendo la sim" + suspendData.identifier, data: undefined } } } } public terminate(terminationData: ActionData): () => Promise> { const OPERATION_URL = "/actions/terminateLine" return async () => { const req = this.httpClient.client.post(OPERATION_URL, { ...terminationData }) // TODO: para cuando estemos listos. throw new Error("Peticion no reversible desactivada de momento") try { const e = await req console.log("Sim cancelada con exito", e.data) return >{ error: undefined, data: true } } catch (error) { console.error("Error pausa", error) return >{ error: "Error cancelando/terminate la sim" + terminationData.identifier, data: undefined } } } } }