File

src/modules/partner/controllers/partner.controller.ts

Prefix

Partners

Index

Methods

Methods

Async deleteTask
deleteTask(id: string)
Decorators :
@Delete('/:uuid')
@UseGuards(AuthGuard, RolesGuard)
@ApiBearerAuth()
@HttpCode(HttpStatus.OK)
@Roles(RoleType.ADMIN, RoleType.ROOT)
@ApiOkResponse({status: undefined, description: 'Successfully deleted'})
Parameters :
Name Type Optional
id string No
Returns : Promise<void>
Async getAvailableParnters
getAvailableParnters(pageOptionsDto: PartnersPageOptionsDto)
Decorators :
@Get('/')
@UseGuards(AuthGuard, RolesGuard)
@ApiBearerAuth()
@HttpCode(HttpStatus.OK)
@Roles(RoleType.ADMIN, RoleType.ROOT)
@ApiOkResponse({status: undefined, description: 'Get Partners', type: PartnersPageDto})
Parameters :
Name Type Optional
pageOptionsDto PartnersPageOptionsDto No
Async getPartnerData
getPartnerData(uuid: string)
Decorators :
@Get('/:uuid')
@UseGuards(AuthGuard, RolesGuard)
@ApiBearerAuth()
@Roles(RoleType.ADMIN, RoleType.ROOT)
@HttpCode(HttpStatus.OK)
@ApiOkResponse({status: undefined, description: 'Get Partner', type: PartnerDto})
Parameters :
Name Type Optional
uuid string No
Async partnerRegister
partnerRegister(user: UserEntity, partnerRegisterDto: PartnerRegisterDto)
Decorators :
@Post('/')
@UseGuards(AuthGuard, RolesGuard)
@ApiBearerAuth()
@HttpCode(HttpStatus.OK)
@Roles(RoleType.ADMIN, RoleType.ROOT)
@ApiOkResponse({status: undefined, type: PartnerDto, description: 'Successfully Created'})
Parameters :
Name Type Optional
user UserEntity No
partnerRegisterDto PartnerRegisterDto No
Returns : Promise<any>
Async setPartnerData
setPartnerData(uuid: string, partnerUpdateDto: PartnerUpdateDto)
Decorators :
@Patch('/:uuid')
@UseGuards(AuthGuard, RolesGuard)
@ApiBearerAuth()
@HttpCode(HttpStatus.OK)
@Roles(RoleType.ADMIN, RoleType.ROOT)
@ApiOkResponse({status: undefined, type: PartnerDto, description: 'Successfully Updated'})
Parameters :
Name Type Optional
uuid string No
partnerUpdateDto PartnerUpdateDto No
Async setPartnersData
setPartnersData(uuid: string, partnerUpdateDto: PartnerUpdateDto)
Decorators :
@Put('/:uuid')
@UseGuards(AuthGuard, RolesGuard)
@ApiBearerAuth()
@HttpCode(HttpStatus.OK)
@Roles(RoleType.ADMIN, RoleType.ROOT)
@ApiOkResponse({status: undefined, type: PartnerDto, description: 'Successfully updated'})
Parameters :
Name Type Optional
uuid string No
partnerUpdateDto PartnerUpdateDto No
import {
    Controller,
    Get,
    Post,
    Put,
    HttpCode,
    HttpStatus,
    Param,
    Patch,
    Delete,
    UseGuards,
    UseInterceptors,
    Body,
    Query,
    ValidationPipe,
  } from '@nestjs/common';
import { ApiBearerAuth, ApiOkResponse, ApiResponse, ApiTags } from '@nestjs/swagger';
import { AuthUser, Roles } from 'decorators';
import { RoleType } from 'common/constants';
import { UserEntity } from 'modules/user/entities';
import { UserService } from 'modules/user/services';
import { AuthGuard, RolesGuard } from 'guards';
import {
    PartnerDto,
    PartnerRegisterDto,
    PartnerUpdateDto,
    PartnersPageDto,
    PartnersPageOptionsDto,
  } from 'modules/partner/dtos';
  import { UserDto, UserUpdateDto, UsersPageOptionsDto, UsersPageDto } from 'modules/user/dtos'; 
import { PartnerService } from 'modules/partner/services';


@Controller('Partners')
@ApiTags('Partners')
export class PartnerController {
    constructor(
      private readonly _userService: UserService,
      private readonly _partnerService: PartnerService
      ) {}

    @Get('/')
    @UseGuards(AuthGuard, RolesGuard)
    @ApiBearerAuth()
    @HttpCode(HttpStatus.OK)
    @Roles(RoleType.ADMIN, RoleType.ROOT)
    @ApiOkResponse({
      status: HttpStatus.OK,
      description: 'Get Partners',
      type: PartnersPageDto,
    })
    async getAvailableParnters(
      @Query(new ValidationPipe({ transform: true }))
      pageOptionsDto: PartnersPageOptionsDto,
    ): Promise<PartnersPageDto> {
      return this._partnerService.getPartners(pageOptionsDto);
    }

    @Get('/:uuid')
    @UseGuards(AuthGuard, RolesGuard)
    @ApiBearerAuth()
    @Roles(RoleType.ADMIN, RoleType.ROOT)
    @HttpCode(HttpStatus.OK)
    @ApiOkResponse({
      status: HttpStatus.OK,
      description: 'Get Partner',
      type: PartnerDto,
    })
    async getPartnerData(
      @Param('uuid') uuid: string
    ): Promise<PartnerDto> {
      return await this._partnerService.getPartner({ uuid: uuid });
    }

    @Post('/')
    @UseGuards(AuthGuard, RolesGuard)
    @ApiBearerAuth()
    @HttpCode(HttpStatus.OK)
    @Roles(RoleType.ADMIN, RoleType.ROOT)
    @ApiOkResponse({
      status: HttpStatus.OK,
      type: PartnerDto,
      description: 'Successfully Created',
    })
    async partnerRegister(
      @AuthUser() user: UserEntity,
      @Body() partnerRegisterDto: PartnerRegisterDto,
    ): Promise<any> {
      const partner = await this._partnerService.createPartner(partnerRegisterDto);
      const { adminFirstName : firstName, adminLastName :lastName, adminEmail : email, adminPassword : password } = partnerRegisterDto
      const admin = await this._userService.createUser({firstName, lastName, email , partner , password}, user, 'P_ADMIN');
      
      if(partner && admin){
        return await this._partnerService.getPartner({ uuid: partner.uuid });
      }
    }

    @Put('/:uuid')
    @UseGuards(AuthGuard, RolesGuard)
    @ApiBearerAuth()
    @HttpCode(HttpStatus.OK)
    @Roles(RoleType.ADMIN, RoleType.ROOT)
    @ApiOkResponse({
      status: HttpStatus.OK,
      type: PartnerDto,
      description: 'Successfully updated',
    })
    async setPartnersData(
      @Param('uuid') uuid: string,
      @Body() partnerUpdateDto: PartnerUpdateDto,
    ): Promise<PartnerDto> {
      const updatedPartner = await this._partnerService.updatePartnerData(
        uuid,
        partnerUpdateDto,
      );
      return updatedPartner.toDto();
    }

    @Delete('/:uuid')
    @UseGuards(AuthGuard, RolesGuard)
    @ApiBearerAuth()
    @HttpCode(HttpStatus.OK)
    @Roles(RoleType.ADMIN, RoleType.ROOT)
    @ApiOkResponse({
      status: HttpStatus.OK,
      description: 'Successfully deleted',
    })
    async deleteTask(@Param('uuid') id: string): Promise<void> {
      return this._partnerService.deletePartner(id);
    }

    @Patch('/:uuid')
    @UseGuards(AuthGuard, RolesGuard)
    @ApiBearerAuth()
    @HttpCode(HttpStatus.OK)
    @Roles(RoleType.ADMIN, RoleType.ROOT)
    @ApiOkResponse({
      status: HttpStatus.OK,
      type: PartnerDto,
      description: 'Successfully Updated',
    })
    async setPartnerData(
      @Param('uuid') uuid: string,
      @Body() partnerUpdateDto: PartnerUpdateDto,
    ): Promise<PartnerDto> {
      const partnerWithNewData = await this._partnerService.updatePartnerData(
        uuid,
        partnerUpdateDto,
      );
      return partnerWithNewData.toDto();
    }

    // /**
    //  * for Partner_ADMIN - only show the partner it manages.
    //  * for ADMIN/ROOT allow manual UUID
    //  * @param uuid 
    //  * @param pageOptionsDto 
    //  */
    // @Get('/:uuid/users')
    // @UseGuards(AuthGuard, RolesGuard)
    // @ApiBearerAuth()
    // @HttpCode(HttpStatus.OK)
    // @Roles(RoleType.ADMIN, RoleType.ROOT)
    // @ApiOkResponse({
    //   status: HttpStatus.OK,
    //   description: `Get Partner's Users`,
    //   type: UsersPageDto,
    // })
    // async getUsersByPartner(
    //   @Param('uuid') uuid: string,
    //   @Query(new ValidationPipe({ transform: true }))
    //   pageOptionsDto: UsersPageOptionsDto,
    // ): Promise<UsersPageDto> {
    //   const partner = await this._partnerService.getPartner({uuid: uuid})
    //   return this._userService.getUsers(pageOptionsDto, partner.id);
    // }
}

result-matching ""

    No results matching ""