import { IsNotEmpty, IsEnum } from 'class-validator';
import { validationMessages } from '../../../messages/validation-messages';
import { ApiProperty } from '@nestjs/swagger';
import { ProfilePrivacy } from 'src/entities/campaign.entity';

export class CampaignUpdateDto
{
@ApiProperty({ example: 'Campaign 1', required: true })
  @IsNotEmpty({ message: validationMessages.campaign.campaign_name_required })
  campaign_name: string;

  @ApiProperty({ example: 100.0, required: true })
  @IsNotEmpty({ message: validationMessages.campaign.budget_per_influencer_required })
  budget_per_influencer: number;

  @ApiProperty({ example: 5, required: true })
  @IsNotEmpty({ message: validationMessages.campaign.number_of_influencers_required })
  number_of_influencers: number;

  @ApiProperty({ example: 'Content Type 1', required: true })
  @IsNotEmpty({ message: validationMessages.campaign.content_type_required })
  content_type: string;

  @ApiProperty({ example: 'Influencer Type 1', required: true })
  @IsNotEmpty({ message: validationMessages.campaign.influencer_type_required })
  influencer_type: string;

  @ApiProperty({ example: 'Job Requirement 1', required: true })
  @IsNotEmpty({ message: validationMessages.campaign.job_requirement_required })
  job_requirement: string;

  @ApiProperty({ example: '2024-10-01', required: true })
  @IsNotEmpty({ message: validationMessages.campaign.posting_start_date_required })
  posting_start_date: Date;

  @ApiProperty({ example: '2024-10-10', required: true })
  @IsNotEmpty({ message: validationMessages.campaign.posting_end_date_required })
  posting_end_date: Date;

  @ApiProperty({ example: '2024-10-05', required: true })
  @IsNotEmpty({ message: validationMessages.campaign.first_draft_estimated_date_required })
  first_draft_date: Date;

  @ApiProperty({ example: 'Public', required: true })
  @IsEnum(ProfilePrivacy, { message: validationMessages.campaign.profile_privacy_required })
  @IsNotEmpty({ message: validationMessages.campaign.profile_privacy_required })
  profile_privacy: string;

  @ApiProperty({ example: 'Campaign Requirements...', required: false })
  campaign_requirements?: string;

  @ApiProperty({ example: 'attachment.jpg', required: false })
  attachment?: string;
}
