using Meezi.Core.Entities;
using Meezi.Core.Enums;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;

namespace Meezi.Infrastructure.Data;

public static class DemoCouponSeeder
{
    public static async Task EnsureCouponsAsync(AppDbContext db, string cafeId, ILogger logger)
    {
        if (await db.Coupons.AnyAsync(c => c.CafeId == cafeId && c.Code == "WELCOME10"))
            return;

        db.Coupons.AddRange(
            new Coupon
            {
                Id = "coupon_demo_welcome10",
                CafeId = cafeId,
                Code = "WELCOME10",
                Type = CouponType.Percentage,
                Value = 10,
                MaxDiscount = 50_000,
                MinOrderAmount = 100_000,
                UsageLimit = 100,
                IsActive = true
            },
            new Coupon
            {
                Id = "coupon_demo_save20k",
                CafeId = cafeId,
                Code = "SAVE20",
                Type = CouponType.FixedAmount,
                Value = 20_000,
                MinOrderAmount = 150_000,
                UsageLimit = 50,
                IsActive = true
            });

        await db.SaveChangesAsync();
        logger.LogInformation("Demo coupons seeded: WELCOME10, SAVE20 for cafe {CafeId}", cafeId);
    }
}
