import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsString, IsOptional, IsNumber, IsDate, IsEnum, IsBoolean } from 'class-validator';
import { Type } from 'class-transformer';
import { PlanEnum } from '../interface/plan.interface';

export class CreateRestaurantDto {
  @ApiProperty({ example: 'کافه ژیوان', description: 'نام رستوران' })
  @IsString()
  name!: string;

  @ApiPropertyOptional({ example: 'zhivan', description: 'شناسه (slug) رستوران، لاتین و بدون فاصله (اختیاری - در صورت عدم ارسال، از نام رستوران تولید می‌شود)' })
  @IsOptional()
  @IsString()
  slug?: string;

  @ApiPropertyOptional({ example: 'zhivan.dmenu.ir', description: 'دامنه اختصاصی رستوران' })
  @IsOptional()
  @IsString()
  domain?: string;

  @ApiPropertyOptional({ example: 2020, description: 'سال تأسیس' })
  @IsOptional()
  @IsNumber()
  establishedYear: number;

  @ApiPropertyOptional({ example: '09123456789', description: 'شماره تلفن' })
  @IsOptional()
  @IsString()
  phone: string;

  @ApiProperty({ example: 'base', enum: PlanEnum, description: 'پلن رستوران' })
  @IsEnum(PlanEnum)
  plan!: PlanEnum;

  @ApiProperty({ example: 'sub_1234567890', description: 'شناسه اشتراک' })
  @IsString()
  subscriptionId!: string;

  @ApiProperty({ example: '2025-12-26', description: 'تاریخ انقضای اشتراک' })
  @Type(() => Date)
  @IsDate()
  subscriptionEndDate!: Date;

  @ApiProperty({ example: '2025-12-26', description: 'تاریخ شروع اشتراک' })
  @Type(() => Date)
  @IsDate()
  subscriptionStartDate!: Date;


  @ApiProperty()
  @IsBoolean()
  isActive?: boolean;

}
