import {
    IsBoolean,
    IsEmail,
    IsIn,
    IsNotEmpty,
    IsNumberString,
    IsOptional,
    IsString,
    IsUUID,
    MaxLength,
  } from 'class-validator';

  const TYPES = ['head', 'branch', 'sub_branch', 'service_center'] as const;

  export class CreateOfficeDto {
    @IsString()
    @IsNotEmpty()
    @MaxLength(50)
    code!: string;

    @IsString()
    @IsNotEmpty()
    @MaxLength(200)
    name!: string;

    @IsIn([...TYPES])
    type!: (typeof TYPES)[number];

    @IsOptional()
    @IsUUID()
    parentOfficeId?: string;

    @IsOptional()
    @IsString()
    @MaxLength(50)
    phone?: string;

    @IsOptional()
    @IsEmail()
    email?: string;

    @IsOptional()
    @IsString()
    address?: string;

    @IsOptional()
    @IsNumberString()
    latitude?: string;

    @IsOptional()
    @IsNumberString()
    longitude?: string;

    @IsOptional()
    @IsBoolean()
    active?: boolean;
  }

  export class UpdateOfficeDto {
    @IsOptional() @IsString() @MaxLength(200) name?: string;
    @IsOptional() @IsIn([...TYPES]) type?: (typeof TYPES)[number];
    @IsOptional() @IsUUID() parentOfficeId?: string;
    @IsOptional() @IsString() @MaxLength(50) phone?: string;
    @IsOptional() @IsEmail() email?: string;
    @IsOptional() @IsString() address?: string;
    @IsOptional() @IsNumberString() latitude?: string;
    @IsOptional() @IsNumberString() longitude?: string;
    @IsOptional() @IsBoolean() active?: boolean;
  }
  