import { ApiProperty } from "@nestjs/swagger";
import { IsString, IsOptional, IsEnum, IsBoolean, IsNumber, Min, Max } from "class-validator";
import { PaymentGateway, SubscriptionCheckoutType } from "../schema/settings.schema";

export class UpdateSettingsDto {
    
    @ApiProperty({ description: 'Default vendor commission percentage', required: false })
    @IsOptional()
    @IsNumber()
    @Min(0)
    @Max(100)
    vendor_commission_percentage?: number;

    @ApiProperty({ description: 'Description', required: false })
    @IsOptional()
    @IsString()
    description?: string;



    @ApiProperty({ description: 'Default tax in percentage', required: false, default : 18 })
    @IsOptional()
    @IsNumber()
    @Min(0)
    @Max(100)
    tax?: number;


    @ApiProperty({ description: 'Default currency', required: false, default : 'USD' })
    @IsOptional()
    @IsString()
    currency?: string;

    @ApiProperty({ description: 'Referral reward amount', required: false, default: 0 })
    @IsOptional()
    @IsNumber()
    @Min(0)
    referral_amount?: number;

    @ApiProperty({ description: 'If true, reward immediately. If false, wait for order completion', required: false, default: true })
    @IsOptional()
    @IsBoolean()
    is_instant_referral_reward?: boolean;

    @ApiProperty({ description: 'Number of orders required to get referral reward', required: false, default: 0 })
    @IsOptional()
    @IsNumber()
    @Min(0)
    referral_required_orders?: number;

    @ApiProperty({ description: 'Days to complete required orders', required: false, default: 30 })
    @IsOptional()
    @IsNumber()
    @Min(1)
    referral_time_limit_days?: number;

    @ApiProperty({ 
        description: 'Subscription checkout type: in_app for in-app checkout, outside_app for web/external checkout', 
        required: false, 
        enum: SubscriptionCheckoutType,
        default: SubscriptionCheckoutType.OUTSIDE_APP_CHECKOUT 
    })
    @IsOptional()
    @IsEnum(SubscriptionCheckoutType)
    subscription_checkout_type?: SubscriptionCheckoutType;

    @ApiProperty({ description: 'If true, enable in-app purchased feature', required: false, default: false })
    @IsOptional()
    @IsBoolean()
    in_app_purchased_enable?: boolean;

}

export class UpdateVendorCommissionDto {
    @ApiProperty({ description: 'Vendor commission percentage' })
    @IsNumber()
    @Min(0)
    @Max(100)
    commission_percentage: number;
}
