import { Controller, Get, Patch, Body, UseGuards, Request } from '@nestjs/common';
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
import { FamiliesService } from './families.service';
import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard';
import { IsOptional, IsString } from 'class-validator';

class UpdateFamilyDto {
  @IsOptional() @IsString() name?: string;
  @IsOptional() @IsString() timezone?: string;
}

@ApiTags('families')
@ApiBearerAuth()
@UseGuards(JwtAuthGuard)
@Controller({ path: 'families', version: '1' })
export class FamiliesController {
  constructor(private readonly service: FamiliesService) {}

  @Get('my')
  @ApiOperation({ summary: 'Minha família' })
  getMyFamily(@Request() req: any) {
    return this.service.getMyFamily(req.user.sub);
  }

  @Get('dashboard')
  @ApiOperation({ summary: 'Dashboard da família' })
  getDashboard(@Request() req: any) {
    return this.service.getDashboard(req.user.sub);
  }

  @Patch('my')
  @ApiOperation({ summary: 'Atualizar família' })
  update(@Body() dto: UpdateFamilyDto, @Request() req: any) {
    return this.service.updateFamily(req.user.sub, dto);
  }
}
