import { IsEnum, IsOptional, IsString, MaxLength, Matches } from 'class-validator';
import { Transform } from 'class-transformer';
import {
  DOCUMENT_URL_PATTERN,
  DOCUMENT_URL_MESSAGE,
} from '../../../common/validation/document-url';
import { TicketItemStatus, TicketDispatchVia } from '../../../entities/activity-ticket-item.entity';

export class UpdateTicketItemDto {
  @IsOptional()
  @IsEnum(TicketItemStatus)
  status?: TicketItemStatus;

  @IsOptional()
  @IsEnum(TicketDispatchVia)
  dispatched_via?: TicketDispatchVia;

  @IsOptional()
  @IsString()
  @MaxLength(500)
  @Matches(DOCUMENT_URL_PATTERN, { message: DOCUMENT_URL_MESSAGE })
  @Transform(({ value }) => (value === '' ? undefined : value))
  document_url?: string;

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