import { Body, Controller, Middlewares, Post, Response, Route, SuccessResponse } from "tsoa"; import { ApiValidationError } from "../../../Models/Server.Error.model"; import { sysAdminAuthMiddleware } from "../../../middleware/sysadminAuth"; import { SysAdminRecalculatePlanUsageCycleParams, SysAdminRecalculatePlanUsageCycleResult, } from "../../../Models/PlanUsageCycle/PlanUsageCycle.Interface"; import { SysAdminPlanUsageCycleService } from "./SysAdminPlanUsageCycle.Service"; @Route("sysadmin/plan-usage-cycle") @Middlewares(sysAdminAuthMiddleware) export class SysAdminPlanUsageCycleController extends Controller { @Response(500, "Ha ocurrido un error") @SuccessResponse(200, "Done") @Post("recalculate-user") public async recalculateUserUsageCycle( @Body() requestBody: SysAdminRecalculatePlanUsageCycleParams ): Promise { try { const result = await new SysAdminPlanUsageCycleService().recalculateUserUsageCycle(requestBody); this.setStatus(200); return result; } catch (e) { const errorOccurred: Error = e as Error; this.setStatus(500); return new ApiValidationError(500, errorOccurred.message); } } }