import { Controller, Get, Post, Body, Request, Put, UseGuards } from "@nestjs/common";
import { AdminService } from "./admin.service";
import { CreateAdminDto } from "./dto/create-Admin.dto";
import { LoginAdminDto } from "./dto/login-Admin.dto";
import { UpdateUserDto } from "./dto/update-user.dto";
import { RoleGuard } from "src/guard/role.guard";

@Controller("admin")
export class AdminController {
  constructor(private readonly adminService: AdminService) {}
  // register as a admin
  @Post("register")
  async register(@Body() createAdminDto: CreateAdminDto): Promise<{ message }> {
    return this.adminService.register(createAdminDto);
  }
  //login as admin
  @Post("login")
  async login(@Body() loginAdminDto: LoginAdminDto): Promise<{ accessToken }> {
    return this.adminService.login(loginAdminDto);
  }
  //logout user
  @UseGuards(RoleGuard)
  @Get("logout")
  async logout(@Request() req) {
    const userId = req.user.id;
    return this.adminService.logout(userId);
  }
  //get a new access token
  @UseGuards(RoleGuard)
  @Get("new-token")
  async newAccessToken(@Request() req) {
    const userId = req.user.id
    return this.adminService.refreshToken(userId);
  }
  //edit admin profile
  @UseGuards(RoleGuard)
  @Put()
  async editAdminProfile(@Request() req, @Body() updateAdminDto: UpdateUserDto): Promise<{ message }> {
    const userId = req.user.id;
    return this.adminService.editAdminProfile(userId, updateAdminDto);
  }
}