import { Body, Controller, Middlewares, Post, Response, Route, SuccessResponse } from "tsoa"; import { ApiValidationError } from "../../../Models/Server.Error.model"; import { sysAdminAuthMiddleware } from "../../../middleware/sysadminAuth"; import { SysAdminExtendUserSubscriptionParams, SysAdminExtendUserSubscriptionResult, SysAdminFinalizeUserSubscriptionParams, SysAdminFinalizeUserSubscriptionResult, SysAdminUserSubscriptionDetailsParams, SysAdminUserSubscriptionDetailsResult, } from "../../../Models/Users/Users.Interface"; import { SysAdminSubscriptionsService } from "./SysAdminSubscriptions.Service"; @Route("sysadmin/subscriptions") @Middlewares(sysAdminAuthMiddleware) export class SysAdminSubscriptionsController extends Controller { @Response(500, "Ha ocurrido un error") @SuccessResponse(200, "Done") @Post("extend-user") public async extendUserSubscription( @Body() requestBody: SysAdminExtendUserSubscriptionParams ): Promise { try { const result = await new SysAdminSubscriptionsService().extendUserSubscription(requestBody); this.setStatus(200); return result; } catch (e) { const errorOccurred: Error = e as Error; this.setStatus(500); return new ApiValidationError(500, errorOccurred.message); } } @Response(500, "Ha ocurrido un error") @SuccessResponse(200, "Done") @Post("finalize-user") public async finalizeUserSubscription( @Body() requestBody: SysAdminFinalizeUserSubscriptionParams ): Promise { try { const result = await new SysAdminSubscriptionsService().finalizeUserSubscription(requestBody); this.setStatus(200); return result; } catch (e) { const errorOccurred: Error = e as Error; this.setStatus(500); return new ApiValidationError(500, errorOccurred.message); } } @Response(500, "Ha ocurrido un error") @SuccessResponse(200, "Done") @Post("user-details") public async getUserSubscriptionDetails( @Body() requestBody: SysAdminUserSubscriptionDetailsParams ): Promise { try { const result = await new SysAdminSubscriptionsService().getUserSubscriptionDetails(requestBody); this.setStatus(200); return result; } catch (e) { const errorOccurred: Error = e as Error; this.setStatus(500); return new ApiValidationError(500, errorOccurred.message); } } }