src/modules/partner/controllers/partner.controller.ts
Partners
Methods |
|
Async deleteTask | ||||||
deleteTask(id: string)
|
||||||
Decorators :
@Delete('/:uuid')
|
||||||
Parameters :
Returns :
Promise<void>
|
Async getAvailableParnters | ||||||
getAvailableParnters(pageOptionsDto: PartnersPageOptionsDto)
|
||||||
Decorators :
@Get('/')
|
||||||
Parameters :
Returns :
Promise<PartnersPageDto>
|
Async getPartnerData | ||||||
getPartnerData(uuid: string)
|
||||||
Decorators :
@Get('/:uuid')
|
||||||
Parameters :
Returns :
Promise<PartnerDto>
|
Async partnerRegister | |||||||||
partnerRegister(user: UserEntity, partnerRegisterDto: PartnerRegisterDto)
|
|||||||||
Decorators :
@Post('/')
|
|||||||||
Parameters :
Returns :
Promise<any>
|
Async setPartnerData | |||||||||
setPartnerData(uuid: string, partnerUpdateDto: PartnerUpdateDto)
|
|||||||||
Decorators :
@Patch('/:uuid')
|
|||||||||
Parameters :
Returns :
Promise<PartnerDto>
|
Async setPartnersData | |||||||||
setPartnersData(uuid: string, partnerUpdateDto: PartnerUpdateDto)
|
|||||||||
Decorators :
@Put('/:uuid')
|
|||||||||
Parameters :
Returns :
Promise<PartnerDto>
|
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);
// }
}