import { Body, Controller, Get, Put, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
import { successfulResult } from 'src/utils';
import { JwtAuthGuard } from '../auth/jwt/jwt.guard';
import { Permissions } from '../auth/permission/permissions.decorator';
import { PermissionsGuard } from '../auth/permission/permissions.guard';
import { PermissionsType } from '../role/entities/permission.entity';
import { UpdateSiteInfoDto } from './dto/update-site-info.dto';
import { SiteInfoService } from './site-info.service';

@ApiTags('Site info')
@Controller('site-infos')
export class SiteInfoController {
  constructor(private siteInfoService: SiteInfoService) {}

  /**
   * -------------------------------------------------------
   * GET /site-infos
   */
  @Get('admin')
  @ApiBearerAuth()
  @UseGuards(JwtAuthGuard, PermissionsGuard)
  @Permissions(PermissionsType.GET_SITE_INFO)
  async get() {
    const data = await this.siteInfoService.getInfo();
    return successfulResult([], data);
  }

  /**
   * -------------------------------------------------------
   * PUT /site-infos
   */
  @Put('admin')
  @ApiBearerAuth()
  @ApiBearerAuth()
  @UseGuards(JwtAuthGuard, PermissionsGuard)
  @Permissions(PermissionsType.UPDATE_SITE_INFO)
  async update(@Body() dto: UpdateSiteInfoDto) {
    await this.siteInfoService.update(dto);
    return successfulResult(['اطلاعات سایت، با موفقیت ویرایش شد']);
  }
}
