import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { PermissionService } from './permission.service';
import { CreatePermissionDto } from './dto/create-permission.dto';
import { UpdatePermissionDto } from './dto/update-permission.dto';
import { ResponseService } from 'src/services/response/response.service';

@Controller('permission')
export class PermissionController {
  constructor(private readonly permissionService: PermissionService, private responseService: ResponseService) {}

  @Post()
  async create(@Body() createPermissionDto: CreatePermissionDto) {
    return this.responseService.success('',await this.permissionService.create(createPermissionDto));
  }

  @Get()
  async findAll() {
    return this.responseService.success('',await this.permissionService.findAll());
  }

  @Get(':id')
  async findOne(@Param('id') id: string) {
    return this.responseService.success('',await this.permissionService.findOne(+id));
  }

  @Patch(':id')
  async update(@Param('id') id: string, @Body() updatePermissionDto: UpdatePermissionDto) {
    return this.responseService.success('', await this.permissionService.update(+id, updatePermissionDto));
  }

  @Delete(':id')
  async remove(@Param('id') id: string) {
    this.permissionService.remove(+id)
    return this.responseService.success('Permission supprimée',null);
  }

  @Get('assign/:idPermission/profil/:idProfil')
  async assignPermission(@Param('idPermission') idPermission: string, @Param('idProfil') idProfil: string){
    await this.permissionService.assignPermission(+idPermission,+idProfil)
  }

  @Get('remove/:idPermission/profil/:idProfil')
  async removePermission(@Param('idPermission') idPermission: string, @Param('idProfil') idProfil: string){
    await this.permissionService.removePermission(+idPermission,+idProfil)
  }
}
