using Lada.Framework.Data.Enums;
using System.ComponentModel.DataAnnotations;

namespace Ladaer.BackEnd.Infrastructures.DTO.Items.Crm
{
    /// <summary>
    /// CallLog Item - DTO cho hiển thị danh sách cuộc gọi
    /// </summary>
    public class CallLogItem
    {
        /// <summary>
        /// Identity
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// Call number - mỗi cuộc gọi có một số, nội bộ của 3CX
        /// </summary>
        public string HistoryID { get; set; } = string.Empty;

        /// <summary>
        /// Call ID - định danh duy nhất của cuộc gọi
        /// </summary>
        public string CallID { get; set; } = string.Empty;

        /// <summary>
        /// Thời gian cuộc gọi
        /// </summary>
        public string Duration { get; set; } = string.Empty;

        /// <summary>
        /// Thời gian bắt đầu cuộc gọi
        /// </summary>
        public DateTime? TimeStart { get; set; }

        /// <summary>
        /// Thời gian trả lời
        /// </summary>
        public DateTime? TimeAnswered { get; set; }

        /// <summary>
        /// Thời gian kết thúc cuộc gọi
        /// </summary>
        public DateTime? TimeEnd { get; set; }

        /// <summary>
        /// Lý do cuộc gọi bị chấm dứt
        /// </summary>
        public string ReasonTerminated { get; set; } = string.Empty;

        /// <summary>
        /// Số điện thoại nguồn
        /// </summary>
        public string FromNo { get; set; } = string.Empty;

        /// <summary>
        /// Số điện thoại đích
        /// </summary>
        public string ToNo { get; set; } = string.Empty;

        /// <summary>
        /// Số được quay
        /// </summary>
        public string DialNo { get; set; } = string.Empty;

        /// <summary>
        /// Số cuối cùng
        /// </summary>
        public string FinalNumber { get; set; } = string.Empty;

        /// <summary>
        /// Chi phí của cuộc gọi
        /// </summary>
        public decimal? BillCost { get; set; }

        /// <summary>
        /// Tên tỷ lệ của biến thể thanh toán
        /// </summary>
        public string BillName { get; set; } = string.Empty;

        /// <summary>
        /// Loại nguồn
        /// </summary>
        public string FromType { get; set; } = string.Empty;

        /// <summary>
        /// Loại đích
        /// </summary>
        public string ToType { get; set; } = string.Empty;

        /// <summary>
        /// Tên hiển thị nguồn
        /// </summary>
        public string FromDispName { get; set; } = string.Empty;

        /// <summary>
        /// Tên hiển thị đích
        /// </summary>
        public string ToDispName { get; set; } = string.Empty;

        /// <summary>
        /// Distinguished name cuối cùng
        /// </summary>
        public string FinalDN { get; set; } = string.Empty;

        /// <summary>
        /// Tên hiển thị cuối cùng
        /// </summary>
        public string FinalDispName { get; set; } = string.Empty;

        /// <summary>
        /// Cuộc gọi nhỡ (FinalDN = GRP0000)
        /// </summary>
        public bool IsMissedCall { get; set; }

        /// <summary>
        /// Loại cuộc gọi
        /// </summary>
        public string CallType { get; set; } = string.Empty;

        /// <summary>
        /// Trạng thái Lead
        /// </summary>
        public LeadStatus LeadStatus { get; set; } = LeadStatus.New;

        /// <summary>
        /// Trạng thái Lead dạng string
        /// </summary>
        public string LeadStatusStr { get; set; } = string.Empty;

        /// <summary>
        /// Nội dung trạng thái
        /// </summary>
        public string StatusContent { get; set; } = string.Empty;

        /// <summary>
        /// Thời gian tạo
        /// </summary>
        public string CreatedTime { get; set; } = string.Empty;

        /// <summary>
        /// Thời gian cập nhật
        /// </summary>
        public string UpdatedTime { get; set; } = string.Empty;

        /// <summary>
        /// Người tạo
        /// </summary>
        public string CreatedByUserName { get; set; } = string.Empty;

        /// <summary>
        /// Người cập nhật
        /// </summary>
        public string UpdatedByUserName { get; set; } = string.Empty;

        /// <summary>
        /// ID của user được mapping từ FinalDN
        /// </summary>
        public int? UserId { get; set; }

        /// <summary>
        /// Tên user được mapping từ FinalDN
        /// </summary>
        public string UserName { get; set; } = string.Empty;
    }
}
