using dodohold.core;

namespace molilian.core
{
    [Table("coupon_center_platforms")]
    public class CouponCenterPlatformEntityDTO
    {
        [Key]
        public string id { get; set; } = string.Empty;
        public string name { get; set; } = string.Empty;
        public string icon_url { get; set; } = string.Empty;
        public int sort { get; set; } = 0;
        public bool status { get; set; } = true;
        public DateTime create_time { get; set; } = DateTime.Now;
        public DateTime update_time { get; set; } = DateTime.Now;
    }

    [Table("coupon_center_activities")]
    public class CouponCenterActivityEntityDTO
    {
        [Key]
        public string id { get; set; } = string.Empty;
        public string platform_id { get; set; } = string.Empty;
        public string name { get; set; } = string.Empty;
        public string short_desc { get; set; } = string.Empty;
        public string deeplink { get; set; } = string.Empty;
        public int sort { get; set; } = 0;
        public bool status { get; set; } = true;
        public DateTime create_time { get; set; } = DateTime.Now;
        public DateTime update_time { get; set; } = DateTime.Now;
    }

    [Table("coupon_center_coupons")]
    public class CouponCenterCouponEntityDTO
    {
        [Key]
        public string id { get; set; } = string.Empty;
        public string activity_id { get; set; } = string.Empty;
        public string value { get; set; } = string.Empty;
        public string expire_time { get; set; } = string.Empty;
        public string category { get; set; } = string.Empty;
        public string threshold { get; set; } = string.Empty;
        public string coupon_status { get; set; } = string.Empty;
        public int sort { get; set; } = 0;
        public bool status { get; set; } = true;
        public DateTime create_time { get; set; } = DateTime.Now;
        public DateTime update_time { get; set; } = DateTime.Now;
    }

    public class CouponCenterPlatformDTO
    {
        public string id { get; set; } = string.Empty;
        public string name { get; set; } = string.Empty;
        public string iconUrl { get; set; } = string.Empty;
    }

    public class CouponCenterCouponDTO
    {
        public string id { get; set; } = string.Empty;
        public string value { get; set; } = string.Empty;
        public string expireTime { get; set; } = string.Empty;
        public string category { get; set; } = string.Empty;
        public string threshold { get; set; } = string.Empty;
        public string status { get; set; } = string.Empty;
    }

    public class CouponCenterActivityDTO
    {
        public string id { get; set; } = string.Empty;
        public string platformId { get; set; } = string.Empty;
        public string name { get; set; } = string.Empty;
        public string shortDesc { get; set; } = string.Empty;
        public string deeplink { get; set; } = string.Empty;
        public List<CouponCenterCouponDTO> coupons { get; set; } = [];
    }

    public class CouponCenterPaginationDTO
    {
        public bool hasMore { get; set; } = false;
        public string? nextCursor { get; set; }
    }

    public class CouponCenterActivitiesResponseDTO
    {
        public string version { get; set; } = string.Empty;
        public List<CouponCenterPlatformDTO> platforms { get; set; } = [];
        public List<CouponCenterActivityDTO> activities { get; set; } = [];
        public CouponCenterPaginationDTO pagination { get; set; } = new();
    }
}
