diff --git a/apps/backend/src/api/routes/agencies.controller.ts b/apps/backend/src/api/routes/agencies.controller.ts index 54f7c777..e2849f96 100644 --- a/apps/backend/src/api/routes/agencies.controller.ts +++ b/apps/backend/src/api/routes/agencies.controller.ts @@ -1,4 +1,4 @@ -import { Body, Controller, Get, Post } from '@nestjs/common'; +import { Body, Controller, Get, Param, Post } from '@nestjs/common'; import { User } from '@prisma/client'; import { ApiTags } from '@nestjs/swagger'; import { AgenciesService } from '@gitroom/nestjs-libraries/database/prisma/agencies/agencies.service'; @@ -21,4 +21,17 @@ export class AgenciesController { ) { return this._agenciesService.createAgency(user, body); } + + @Post('/action/:action/:id') + async updateAgency( + @GetUserFromRequest() user: User, + @Param('action') action: string, + @Param('id') id: string + ) { + if (!user.isSuperAdmin) { + return 400; + } + + return this._agenciesService.approveOrDecline(user.email, action, id); + } } diff --git a/libraries/nestjs-libraries/src/database/prisma/agencies/agencies.repository.ts b/libraries/nestjs-libraries/src/database/prisma/agencies/agencies.repository.ts index 27eab628..e0206fe4 100644 --- a/libraries/nestjs-libraries/src/database/prisma/agencies/agencies.repository.ts +++ b/libraries/nestjs-libraries/src/database/prisma/agencies/agencies.repository.ts @@ -44,6 +44,31 @@ export class AgenciesRepository { }); } + approveOrDecline(action: string, id: string) { + return this._socialMediaAgencies.model.socialMediaAgency.update({ + where: { + id, + }, + data: { + approved: action === 'approve', + }, + }); + } + + getAgencyById(id: string) { + return this._socialMediaAgencies.model.socialMediaAgency.findFirst({ + where: { + id, + deletedAt: null, + approved: true, + }, + include: { + logo: true, + niches: true, + }, + }); + } + getAgencyInformation(agency: string) { return this._socialMediaAgencies.model.socialMediaAgency.findFirst({ where: { diff --git a/libraries/nestjs-libraries/src/database/prisma/agencies/agencies.service.ts b/libraries/nestjs-libraries/src/database/prisma/agencies/agencies.service.ts index 0c0cd70c..77855362 100644 --- a/libraries/nestjs-libraries/src/database/prisma/agencies/agencies.service.ts +++ b/libraries/nestjs-libraries/src/database/prisma/agencies/agencies.service.ts @@ -30,6 +30,58 @@ export class AgenciesService { return this._agenciesRepository.getAgencyInformation(agency); } + async approveOrDecline(email: string, action: string, id: string) { + await this._agenciesRepository.approveOrDecline(action, id); + const agency = await this._agenciesRepository.getAgencyById(id); + + if (action === 'approve') { + await this._emailService.sendEmail( + email, + 'Your Agency has been approved and added to Postiz 🚀', + ` + + +
+ + +