using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LHDN.CRM.Models.ViewModels
{
    public class ActivityUpdateViewModel
    {
        public ActivityDetailViewModel Activity { get; set; }
        public List<ChangeHistoryUpdateViewModel> ChangeHistory { get; set; } 
        public bool IsEditTPData { get; set; }  
        public bool IsEditAnsuranActData { get; set; }
        public bool IsSelfSelectOutbound { get; set; } //manual call tp from outbound profile
        public OutboundUpdateViewModel Outbound { get; set; } 
       
        public OutboundInfo OutboundInfo { get; set; }
        public bool IsSaveDraft { get; set; }
        public bool IsCFFDraft { get; set; }
    }

    public class ActivityDetailViewModel
    {
        public long ActivityID { get; set; } 
        //public string ActRefNo { get; set; }
        public long? TPID { get; set; }
        public long? CaseID { get; set; }
        public long? OutboundID { get; set; }
        public long? HCLEmailBlastID { get; set; }
        public string AssignedOfficerLogin { get; set; }
        public string AssignedOfficerName { get; set; }
        public string AssignedOfficerEmail { get; set; }
        public DateTime? AssignedDateTime { get; set; }
        //public Boolean? IsTransferToCase { get; set; }
        //public Boolean? IsInboundMissCall { get; set; }
        public Boolean? IsOrphanActivity { get; set; }
        public Boolean?IsDraft { get; set; }
        public string InteractionID { get; set; }
        public int? ActChannelID { get; set; }
        public int? SumberID { get; set; }
        public int? Kategori1ID { get; set; }
        public int? Kategori2ID { get; set; }
        public int? Kategori3ID { get; set; }
        public int? ActStatusID { get; set; }
        public string Reason { get; set; }
        public int? ActStatus1ID { get; set; }
        public int? ActStatus2ID { get; set; }
        public int? ActStatus3ID { get; set; }
        public int? AliranID { get; set; }
        public int? LanguageID { get; set; }
        public string Skillset { get; set; }
        public DateTime? PromiseToPayDate { get; set; }
        public int? KodSelesaiID { get; set; }
        public string NoBaucer { get; set; }
        public int? TindakanSusulanID { get; set; }
        public int? TahunTaksiran { get; set; }
        public decimal? NilaiKes { get; set; }
        public int? StatusBayaranS104S22ID { get; set; }
        public int? TahapID { get; set; }
        public string TelefonInteraksi { get; set; }
        public string EmailInteraksi { get; set; }
        public string SocialMediaInteraksiID { get; set; }
        public string SocialMediaInteraksiName { get; set; }
        public Int16? CallAttempts { get; set; }
        public int? JenisPelangganID { get; set; }
        public bool? IsPelangganPembayarSama { get; set; }
        public long? PelangganTPID { get; set; }
        public string PelangganNama { get; set; }
        public string PelangganNoCukai { get; set; }
        public string PelangganTelefon { get; set; }
        public string PelangganEmail { get; set; }
        public int? PelangganIDType { get; set; }
        public string PelangganIDNumber { get; set; }
        public int? PelangganOtherIDType { get; set; }
        public string PelangganOtherIDNumber { get; set; }
        public int? PelangganLokasiID { get; set; }
        public string PelangganJawatan { get; set; }
        public string TPName { get; set; }
        public string TPNoCukai { get; set; }
        public int? TPIDType { get; set; }
        public string TPIDNumber { get; set; }
        public string TPEmail { get; set; }
        public string TPEmailMB { get; set; }
        public string TPTelefon { get; set; }
        public string TPTelefonMB { get; set; }
        public string TPTelefonPejabat { get; set; } 
        //public string TPTelefonJPDP { get; set; }
        public string TPFBID { get; set; }
        public string TPFBDisplayName { get; set; }
        public string TPTWID { get; set; }
        public string TPTWDisplayName { get; set; }
        public string Transcript { get; set; }
        public int? JenisKempenID { get; set; }
        //public string Description { get; set; }
        public DateTime? LetterFaxReceived { get; set; } 
        public string CreatedBy { get; set; } 
        public string CreatedByName { get; set; } 
        public DateTime? CreatedDateTime { get; set; }
        public string LastUpdatedBy { get; set; }
        public string LastUpdatedByName { get; set; }
        public DateTime? LastUpdatedDateTime { get; set; }
        public byte[] ChangeStamp { get; set; }
        //Ansuran fields only
        public int? BilanganAnsuran { get; set; }
        public string MajikanNoCukai { get; set; }
        public string MajikanTelefon { get; set; }
        public string MajikanEmail { get; set; }
        public DateTime? TarikhMulaAnsuran { get; set; }
        public int? JenisAnsuranID { get; set; }
        public decimal? AnggaranAnsuranPC { get; set; }
        public string UUID { get; set; }

        public string CatatanTranskipPerbualan { get; set; }

        //public OutboundAnsuranActDetailsViewModel OriAnsuranActDetails { get; set; } //Original Ansuran Act data before user made changes
        public TPForActivityViewModel TP { get; set; } //Original TP data before user made changes
        public ActVerificationViewModel ActVerification { get; set; }
        public List<ActCatatanViewModel> ActCatatans { get; set; }
        public List<ActAdditionalKategoriUpdateViewModel> AdditionalKategoris { get; set; }
        public ActEmailViewModel ActEmail { get; set; }
        public ActCFFViewModel ActCFF { get; set; }
        public CaseViewModel Case { get; set; }
        public List<ActDocReceivedViewModel> ActDocReceived { get; set; }
        public NotaTemudugaViewModel NotaTemuduga { get; set; } 
        public List<AttachmentViewModel> ActAttachmentList { get; set; }
        //public ActSessionViewModel ActSession { get; set; }  
    }


    public class ActAdditionalKategoriUpdateViewModel
    {
        //public long ActivityID { get; set; }
        public long? ActAddKategoriID { get; set; }
        public int? Kategori1ID { get; set; }
        public int? Kategori2ID { get; set; }
        public int? Kategori3ID { get; set; }
        public string Description { get; set; }
    }

    public class OutboundInfo {
        public string ReMSTableName { get; set; } //Not for update 
        public int JenisKempenKategoriSysID { get; set; } //Not for update
        public bool IsCancelVoiceQueue { get; set; }
        public string CCCampaignName { get; set; }
        public string OutboundPhone { get; set; }
    }
      
}
