using System;
using System.ComponentModel.DataAnnotations;

namespace Common.Http
{
    // =============== BANNER ===============
    public class BannerLoadReq
    {
        public string? lang { get; set; } = "lo";
        public int pageNumber { get; set; } = 0;
        public int pageSize { get; set; } = 10;
        /// <summary>Position filter: "home", "sidebar", etc.</summary>
        public string? position { get; set; }
    }

    // =============== CUSTOMER REVIEW ===============
    public class CustomerReviewLoadReq
    {
        public string? lang { get; set; } = "lo";
        public int pageNumber { get; set; } = 0;
        public int pageSize { get; set; } = 10;
        /// <summary>Filter featured reviews only</summary>
        public bool? isFeatured { get; set; }
    }

    public class CustomerReviewCreateReq
    {
        public string? lang { get; set; } = "lo";
        
        [Required(ErrorMessage = "Customer name is required")]
        public string customerName { get; set; } = null!;
        
        [Required(ErrorMessage = "Review content is required")]
        public string reviewContent { get; set; } = null!;
        
        public string? destination { get; set; }
        public int rating { get; set; }
    }

    // =============== FAQ ===============
    public class FaqCategoryLoadReq
    {
        public string? lang { get; set; } = "lo";
        public int pageNumber { get; set; } = 0;
        public int pageSize { get; set; } = 10;
        /// <summary>Parent category ID (null = get root categories)</summary>
        public int? parentId { get; set; }
    }

    public class FaqLoadReq
    {
        public string? lang { get; set; } = "lo";
        public int pageNumber { get; set; } = 0;
        public int pageSize { get; set; } = 10;
        /// <summary>Filter by category ID</summary>
        public int? categoryId { get; set; }
        /// <summary>Filter featured FAQs only</summary>
        public bool? isFeatured { get; set; }
    }
}
