import { coloredToast } from '@/lib/toast';

interface Promotion {
    type: string;
    name: string;
    amount: number;
    start_date: Date;
    end_date: Date;
    is_active: boolean;
    products: [];
}

export const SaveProductPromotion = (promotionForm: Promotion) => {
    const validationError = validateInput(promotionForm);

    if (validationError) {
        coloredToast('warning', validationError);
        return { status: false };
    }

    const data = {
        type: promotionForm.type,
        name: promotionForm.name,
        amount: promotionForm.amount,
        start_date: promotionForm.start_date,
        end_date: promotionForm.end_date,
        is_active: promotionForm.is_active,
        products: promotionForm.products.map((product: any) => product.value),
    };

    return {
        status: true,
        data,
    };
};

const validateInput = (promotionForm: Promotion): string | null => {
    if (!promotionForm.name) {
        return 'Flah sale name is required.';
    }
    if (!promotionForm.type) {
        return 'Type is required.';
    }
    if (!promotionForm.amount || promotionForm.amount <= 0) {
        return 'Amount must greater than 0.';
    }
    if (promotionForm.type === 'discount' && promotionForm.amount > 100) {
        return 'Discount amount promotion cannot greater than 100%';
    }

    const startDate = new Date(promotionForm.start_date);
    const endDate = new Date(promotionForm.end_date);

    if (promotionForm.start_date && promotionForm.end_date) {
        if (startDate > endDate) {
            return 'Start date is later than end date';
        }
    }

    if (promotionForm.products.length <= 0) {
        return 'Please add at least 1 product to proceed';
    }
    return null;
};
