import { Controller, Post, Body, Get, Patch, Delete, Param } from '@nestjs/common';

import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';


@Controller('users') // plural for Postman URLs
export class UserController {
  constructor(private readonly userService: UserService) {}

  // ✅ Create user
  @Post('create')
  async create(@Body() createUserDto: CreateUserDto) {
    return this.userService.create(createUserDto);
  }

  // ✅ Get all users
  @Get()
  async findAll() {
    return this.userService.findAll();
  }

  // ✅ Get user by ID
  @Get(':id')
  async findOne(@Param('id') id: string) {
    return this.userService.findOne(+id);
  }

  // ✅ Update user
  @Patch(':id')
  async update(
    @Param('id') id: string,
    @Body() updateUserDto: Partial<CreateUserDto & { isActive?: boolean }>,
  ) {
    return this.userService.update(+id, updateUserDto);
  }

  // ✅ Delete user
  @Delete(':id')
  async remove(@Param('id') id: string) {
    return this.userService.remove(+id);
  }

  // ✅ Assign roles
  @Post('assign-roles')
  async assignRoles(
    @Body() body: { userId: number; roleIds: number[] },
  ) {
    return this.userService.assignRolesToUser(+body.userId, body.roleIds);

  }

  // ✅ Assign permissions
  @Post('assign-permissions')
  async assignPermissions(
    @Body() body: { userId: number; permissionIds: number[] },
  ) {
    return this.userService.assignPermissionsToUser(+body.userId, body.permissionIds);

  }
}
