using Lada.Framework.Data.Enums;
using Microsoft.AspNetCore.Http;

namespace Ladaer.BackEnd.Infrastructures.DTO.Models.Premises
{
    /// <summary>
    /// Model tạo/cập nhật mặt bằng
    /// </summary>
    public class PremiseModel
    {
        public int Id { get; set; }
        public string Code { get; set; } = string.Empty;
        public int AgencyId { get; set; }
        public int CityId { get; set; }
        public int DistrictId { get; set; }
        public int WardId { get; set; }
        public string AddressDetail { get; set; } = string.Empty;
        public double? Latitude { get; set; }
        public double? Longitude { get; set; }
        public string? GoogleMapUrl { get; set; }
        public string? Description { get; set; }

        /// <summary>
        /// Danh sách liên hệ
        /// </summary>
        public List<PremiseContactModel> Contacts { get; set; } = new();

        /// <summary>
        /// Danh sách điểm chấm theo tiêu chí
        /// </summary>
        public List<PremiseScoreModel> Scores { get; set; } = new();

        /// <summary>
        /// Thông tin tài chính (optional)
        /// </summary>
        public PremiseFinancialModel? Financial { get; set; }

        /// <summary>
        /// Danh sách file ảnh upload mới
        /// </summary>
        public List<IFormFile>? NewMediaFiles { get; set; }

        /// <summary>
        /// Loại media tương ứng với từng file (FrontageImage, InsideImage, StreetImage...)
        /// </summary>
        public List<PremiseMediaType>? NewMediaTypes { get; set; }

        /// <summary>
        /// Danh sách PremiseMedia.Id cần xóa (khi chỉnh sửa)
        /// </summary>
        public List<int>? DeleteMediaIds { get; set; }

        // Audit
        public int UpdatedBy { get; set; }
        public string UpdatedByUserName { get; set; } = string.Empty;
    }

    /// <summary>
    /// Model cập nhật trạng thái mặt bằng
    /// </summary>
    public class PremiseStatusModel
    {
        public int Id { get; set; }
        public PremiseStatus Status { get; set; }
        public int UpdatedBy { get; set; }
        public string UpdatedByUserName { get; set; } = string.Empty;
    }
}
