import { PaginateCompaniesResults, SysAdminPaginateCompaniesParams, SysAdminUpdateCompanyParams, SysAdminSetCompanyBannedParams, SysAdminCompanyInsightsParams, SysAdminCompanyInsightsResult, } from "../../../Models/Companies/Companies.Interface"; import { ApiValidationError } from "../../../Models/Server.Error.model"; import { ApiVoidResult } from "../../../Models/Api.VoidResult.type"; import { Body, Controller, Middlewares, Post, Response, Route, SuccessResponse } from "tsoa"; import { SA_CompaniesService } from "./SysAdminCompanies.Service"; import { sysAdminAuthMiddleware } from "../../../middleware/sysadminAuth"; @Route("sysadmin/companies") export class SysAdminCompaniesController extends Controller { @Response(500, "Ha ocurrido un error") @SuccessResponse(200, "Done") @Post("paginate") @Middlewares(sysAdminAuthMiddleware) public async sysAdminPaginate( @Body() requestBody: SysAdminPaginateCompaniesParams, ): Promise { try { const { payload, ...cleanRequestBody } = requestBody as any; const result = await new SA_CompaniesService().sysAdminPaginate(cleanRequestBody); 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("update") @Middlewares(sysAdminAuthMiddleware) public async sysAdminUpdate( @Body() requestBody: SysAdminUpdateCompanyParams, ): Promise { try { await new SA_CompaniesService().sysAdminUpdate(requestBody); this.setStatus(200); return { success: true, message: "ok" }; } 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("set-banned") @Middlewares(sysAdminAuthMiddleware) public async sysAdminSetBanned( @Body() requestBody: SysAdminSetCompanyBannedParams, ): Promise { try { await new SA_CompaniesService().sysAdminSetBanned(requestBody); this.setStatus(200); return { success: true, message: "ok" }; } 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("insights") @Middlewares(sysAdminAuthMiddleware) public async sysAdminGetInsights( @Body() requestBody: SysAdminCompanyInsightsParams, ): Promise { try { const { payload, ...cleanRequestBody } = requestBody as any; const result = await new SA_CompaniesService().sysAdminGetInsights(cleanRequestBody); this.setStatus(200); return result; } catch (e) { const errorOccurred: Error = e as Error; this.setStatus(500); return new ApiValidationError(500, errorOccurred.message); } } }