import { IsString, IsNotEmpty, IsOptional, IsNumber, IsEnum, Length } from 'class-validator';
import { Type } from 'class-transformer';

export class ApplyMerchantDto {
  @IsString()
  @IsNotEmpty({ message: '店铺名称不能为空' })
  @Length(2, 100)
  shopName: string;

  @IsString()
  @IsNotEmpty({ message: '联系电话不能为空' })
  phone: string;

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

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

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

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

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

  @IsString()
  @IsNotEmpty({ message: '门店营业执照不能为空' })
  storeLicense: string;

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

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

  @IsString()
  @IsNotEmpty({ message: '签约类型不能为空' })
  @IsEnum(['personal', 'company'], { message: '签约类型必须是personal或company' })
  contractType: string;

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

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

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

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

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

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

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

  @IsString()
  @IsNotEmpty({ message: '账户类型不能为空' })
  @IsEnum(['company', 'personal'], { message: '账户类型必须是company或personal' })
  accountType: string;

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

  @IsString()
  @IsNotEmpty({ message: '银行账号不能为空' })
  bankAccount: string;

  @IsString()
  @IsNotEmpty({ message: '开户银行不能为空' })
  bankName: string;

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

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

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

  @IsOptional()
  @IsString()
  accountIdCardBack?: string;
}

export class UpdateMerchantDto {
  @IsOptional()
  @IsString()
  shopName?: string;

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

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

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

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

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

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

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

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

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

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

  @IsOptional()
  @IsString()
  legalPerson?: string;
}

export class QueryMerchantDto {
  @IsOptional()
  @Type(() => Number)
  page?: number = 1;

  @IsOptional()
  @Type(() => Number)
  pageSize?: number = 10;

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

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

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

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

  @IsOptional()
  @IsString()
  checkOutDate?: string;
}
