private void PopulateDebtInfo(Tbl_Account account, Tbl_ComplaintMain complaint)
 {
     complaint.Tbl_Account.AccountNumber = account.AccountNumber;
     complaint.Tbl_Account.FirstName = account.FirstName;
     complaint.Tbl_Account.LastName = account.LastName;
     complaint.Tbl_Account.Address = account.Address;
     complaint.Tbl_Account.City = account.City;
     complaint.Tbl_Account.StateId = account.StateId;
     complaint.Tbl_Account.Zip = account.Zip;
     complaint.Tbl_Account.LastFourSSN = account.LastFourSSN;
     complaint.Tbl_Account.MobilePhone = account.MobilePhone;
     complaint.Tbl_Account.HomePhone = account.HomePhone;
     complaint.Tbl_Account.WorkPhone = account.WorkPhone;
     complaint.Tbl_Account.DebtCurrentBalance = account.DebtCurrentBalance;
     complaint.Tbl_Account.DebtPurchaseBalance = account.DebtPurchaseBalance;
     complaint.Tbl_Account.CreditorName = account.CreditorName;
 }
示例#2
0
        public JsonResult UploadDocument()
        {
            string account = Request.Form["hdnAccount"];
            string complaintId = Request.Form["hdnComplaintId"];
            string agency = Request.Form["hdnAgency"];
            string complaintDocument, debtOwnerProcessDocument;

            complaintDocument        = Request.Files["complaintDocument"].FileName;
            debtOwnerProcessDocument = Request.Files["debtOwnerProcessDocument"].FileName;
            UnitOfWork uo = new UnitOfWork("CCATDBEntities");

            MSI.CCAT.Data.Models.Tbl_ComplaintMain complaint = (from existingComplaint in uo.Repository <MSI.CCAT.Data.Models.Tbl_ComplaintMain>().GetAll().Where(record => record.AccountNumber == account && record.ComplaintId == complaintId)
                                                                select existingComplaint).First();
            string fileGuid = "";
            string fileName = "";

            if (!string.IsNullOrEmpty(complaintDocument))
            {
                complaint.ComplaintDocument = fileProcessor.SaveUploadedFile(Request.Files["complaintDocument"]) + "_" + complaintDocument;
                uo.Repository <MSI.CCAT.Data.Models.Tbl_ComplaintMain>().Update(complaint);
                uo.Save();
                fileGuid = complaint.ComplaintDocument;
                fileName = complaintDocument;
            }
            if (!string.IsNullOrEmpty(debtOwnerProcessDocument))
            {
                complaint.DebtOwnerProcessDocument = fileProcessor.SaveUploadedFile(Request.Files["debtOwnerProcessDocument"]) + "_" + debtOwnerProcessDocument;
                uo.Repository <MSI.CCAT.Data.Models.Tbl_ComplaintMain>().Update(complaint);
                uo.Save();
                fileGuid = complaint.DebtOwnerProcessDocument;
                fileName = debtOwnerProcessDocument;
            }
            ViewBag.Account  = (string.IsNullOrEmpty(account)) ? "" : account;
            ViewBag.AgencyID = (string.IsNullOrEmpty(agency)) ? "" : agency;
            return(Json(new { success = true, fileGuid = fileGuid, file = fileName }, JsonRequestBehavior.AllowGet));
        }
        public Tbl_ComplaintMain Get(string accountNumber, string complaintId, string userAgency = "", string userRole = "", string createUpdateMode = "")
        {
            //MSI_ComplaintMainRepository repository = null;
            UnitOfWork uo = null;
            Tbl_ComplaintMain complaint = null; ;
            try
            {
                //repository = new MSI_ComplaintMainRepository();
                uo = new UnitOfWork("CCATDBEntities");

                if (createUpdateMode != "create")
                {
                    if (string.IsNullOrEmpty(accountNumber) || string.IsNullOrEmpty(complaintId))
                        throw new Exception("Accountnumber and CompaintId is required to search");

                    complaint = uo.Repository<Tbl_ComplaintMain>().GetAll().Where(record => record.AccountNumber == accountNumber && record.ComplaintId == complaintId).FirstOrDefault();
                    if (!string.IsNullOrEmpty(userRole))
                    {
                        if (userRole == UserRole.DebtOwner.ToString() || userRole == UserRole.AgencyCompliance.ToString() || userRole == UserRole.AgencyManager.ToString())
                        {
                            complaint.IsViewedByOwner = true;
                            if (complaint.ComplaintStatusId == (int)ComplaintStatus.SFOA)
                                complaint.ComplaintStatusId = (int)ComplaintStatus.ORIP;
                        }
                        if (userRole == UserRole.CollectionAgency.ToString() || userRole == UserRole.AgencyCollector.ToString())
                            complaint.IsViewedByAgency = true;
                        uo.Repository<Tbl_ComplaintMain>().Update(complaint);
                        uo.Save();
                    }
                }
                else
                {
                    complaint = new Tbl_ComplaintMain();
                    complaint.AccountNumber = accountNumber;
                    complaint.IssuesId = 29;//default
                    complaint.ComplaintDate = DateTime.Now;
                }
                //complaint.Tbl_Account = uo.Repository<Tbl_Account>().GetAll().Where(account => account.AccountNumber == accountNumber).Single();
                complaint.Tbl_Account = uo.AccountRepository.GetAccounts( accountNumber).Single();
                complaint.Tbl_Account.Tbl_Agency = uo.Repository<Tbl_Agency>().GetById(complaint.Tbl_Account.AgencyId.Value);
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException validationException)
            {
                foreach (System.Data.Entity.Validation.DbEntityValidationResult errorResult in validationException.EntityValidationErrors)
                {
                    foreach (System.Data.Entity.Validation.DbValidationError error in errorResult.ValidationErrors)
                    {
                        string data = error.ErrorMessage;
                        throw new Exception(data);
                    }
                }
            }
            catch (Exception ex)    
            {
                throw ex;
            }
            return complaint;
        }
        private ComplaintStatus DualGetComplaintStatus(Tbl_ComplaintMain presentComplaint, Tbl_ComplaintMain complaintToAnalize)
        {
            ComplaintStatus complaintStatus = ComplaintStatus.BLANK;
            try
            {
                if (presentComplaint == null)
                {
                    return complaintStatus = GetInitialStatus(complaintToAnalize);
                }
                
                complaintStatus = (ComplaintStatus)presentComplaint.ComplaintStatusId;

                complaintStatus = GetNCIPStatus(complaintStatus, complaintToAnalize);

                complaintStatus = GetAAIStatus(complaintStatus, complaintToAnalize, presentComplaint);
                
                complaintStatus = GetORIPStatus(complaintStatus, complaintToAnalize);
                
                complaintStatus = GetSOFAStatus(complaintStatus, complaintToAnalize);
                
                complaintStatus = GetACRStatus(complaintStatus, complaintToAnalize);
                
                complaintStatus = GetRCStatus(complaintStatus, complaintToAnalize);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return complaintStatus;

        }
 private ComplaintStatus GetACRStatus(ComplaintStatus status, Tbl_ComplaintMain complaintToAnalize)
 {
     if (status == ComplaintStatus.ACR
            && complaintToAnalize.AgencyResponseToDebtorDate.HasValue == true
            && complaintToAnalize.FinalActionStepId.HasValue == false)
         return ComplaintStatus.ACR;
     else if (status == ComplaintStatus.ORIP
             && complaintToAnalize.OwnerResponseId.HasValue == true
             && complaintToAnalize.OwnerResponseDate.HasValue == true)
         return ComplaintStatus.ACR;
     else
         return status;
 }
 private ComplaintStatus GetRCStatus(ComplaintStatus status, Tbl_ComplaintMain complaintToAnalize)
 {
     if (status == ComplaintStatus.ACR
         && complaintToAnalize.AgencyResponseToDebtorDate.HasValue == true
         && complaintToAnalize.FinalActionStepId.HasValue == true)
         return ComplaintStatus.RC;
     else
         return status;
 }
        private ComplaintStatus GetORIPStatus(ComplaintStatus status, Tbl_ComplaintMain complaintToAnalize){
            #region ORIP

            if (status == ComplaintStatus.AAI
                && complaintToAnalize.MoreInfoFromAgencyYN.Value == true
                && complaintToAnalize.MoreInfoFromAgencyRequestedDate.HasValue == true
                && (!string.IsNullOrEmpty(complaintToAnalize.MoreInfoFromAgencyRequested))
                && complaintToAnalize.MoreInfoFromAgencyReceivedYN.Value == true
                && complaintToAnalize.MoreInfoFromAgencyReceivedDate.HasValue == true
                && (!string.IsNullOrEmpty(complaintToAnalize.MoreInfoFromAgencyReceived)))
                return ComplaintStatus.ORIP;
            else
                return status;

            #endregion
        }
        private ComplaintStatus GetSOFAStatus(ComplaintStatus status, Tbl_ComplaintMain complaintToAnalize)
        {
            if (status == ComplaintStatus.NCIP
                    && complaintToAnalize.ComplaintSubmittedToOwnerYN.Value == true
                    && complaintToAnalize.ComplaintSubmittedDate.HasValue == true
                    && complaintToAnalize.DebtorAgreeYN.Value == false
                    && complaintToAnalize.FinalActionStepId.HasValue == false)
                return ComplaintStatus.SFOA;

            else if (status == ComplaintStatus.AAI
                && complaintToAnalize.MoreInfoReceivedFromDebtorYN.Value == true
                && complaintToAnalize.MoreInfoReceivedDate.HasValue == true
                && complaintToAnalize.MoreInfoFromAgencyReceivedYN.Value == false
                && complaintToAnalize.MoreInfoFromAgencyReceivedDate.HasValue == false
                && complaintToAnalize.ComplaintSubmittedToOwnerYN.Value == true
                && complaintToAnalize.ComplaintSubmittedDate.HasValue == true)
                return ComplaintStatus.SFOA;

            else if (status == ComplaintStatus.AAI
                && complaintToAnalize.MoreInfoFromAgencyReceivedYN.Value == true
                && complaintToAnalize.MoreInfoFromAgencyReceivedDate.HasValue == true
                && complaintToAnalize.ComplaintSubmittedToOwnerYN.Value == true
                && complaintToAnalize.ComplaintSubmittedDate.HasValue == true)
                return ComplaintStatus.SFOA;

            else if (status == ComplaintStatus.NCIP
                    && complaintToAnalize.ComplaintSubmittedToOwnerYN.Value == true
                    && complaintToAnalize.ComplaintSubmittedDate.HasValue == true)
                return  ComplaintStatus.SFOA;
            else
                return status;
        }
        private ComplaintStatus GetAAIStatus(ComplaintStatus status, Tbl_ComplaintMain complaintToAnalize, Tbl_ComplaintMain presentComplaint)
        {
            if (status == ComplaintStatus.NCRA
                    && complaintToAnalize.DebtorIdentityVerifiedYN.Value == true
                    && complaintToAnalize.MoreInfoReqdFromDebtorYN.Value == true
                    && complaintToAnalize.MoreInfoRequestedDate.HasValue == true
                    && !string.IsNullOrEmpty(complaintToAnalize.MoreInfoRequested))
                return  ComplaintStatus.AAI;

            else if (status == ComplaintStatus.NCIP
                && complaintToAnalize.MoreInfoReqdFromDebtorYN.Value == true
                && complaintToAnalize.MoreInfoRequestedDate.HasValue == true
                && (!string.IsNullOrEmpty(complaintToAnalize.MoreInfoRequested)
                && complaintToAnalize.ComplaintSubmittedToOwnerYN.Value == false
                && complaintToAnalize.ComplaintSubmittedDate.HasValue == false))
                return ComplaintStatus.AAI;
            else if (status == ComplaintStatus.ORIP
                && complaintToAnalize.MoreInfoReqdFromDebtorYN.Value == true
                && complaintToAnalize.MoreInfoRequestedDate.HasValue == true
                && (!string.IsNullOrEmpty(complaintToAnalize.MoreInfoRequested))
                && complaintToAnalize.MoreInfoFromAgencyYN.Value == false
                && complaintToAnalize.MoreInfoFromAgencyRequestedDate.HasValue == false
                && complaintToAnalize.OwnerResponseId.HasValue == false
                && complaintToAnalize.OwnerResponseDate.HasValue == false)
                return  ComplaintStatus.AAI;

            else if (status == ComplaintStatus.ORIP
                && complaintToAnalize.MoreInfoFromAgencyYN.Value == true
                && complaintToAnalize.MoreInfoFromAgencyRequestedDate.HasValue == true
                && (!string.IsNullOrEmpty(complaintToAnalize.MoreInfoFromAgencyRequested))
                && complaintToAnalize.OwnerResponseId.HasValue == false
                && complaintToAnalize.OwnerResponseDate.HasValue == false)
                return ComplaintStatus.AAI;

            else if (status == ComplaintStatus.ORIP
                && presentComplaint.MoreInfoReqdFromDebtorYN.Value == true
                && presentComplaint.MoreInfoRequestedDate.HasValue == true
                && complaintToAnalize.MoreInfoReqdFromDebtorYN.Value == true
                && presentComplaint.MoreInfoRequested.Length <= complaintToAnalize.MoreInfoRequested.Length
                && complaintToAnalize.OwnerResponseId.HasValue == false
                && complaintToAnalize.OwnerResponseDate.HasValue == false)
                return ComplaintStatus.AAI;

            else if (status == ComplaintStatus.ORIP
                && presentComplaint.MoreInfoReqdFromDebtorYN.Value == false
                && presentComplaint.MoreInfoRequestedDate.HasValue == false
                && complaintToAnalize.MoreInfoReqdFromDebtorYN.Value == true
                && complaintToAnalize.MoreInfoRequestedDate.HasValue == true
                && (!string.IsNullOrEmpty(complaintToAnalize.MoreInfoRequested))
                && complaintToAnalize.OwnerResponseId.HasValue == false
                && complaintToAnalize.OwnerResponseDate.HasValue == false)
                return ComplaintStatus.AAI;
            else
                return status;
        }
 private ComplaintStatus GetNCIPStatus(ComplaintStatus status, Tbl_ComplaintMain complaint)
 {
     if (status == ComplaintStatus.NCRA
             && complaint.DebtorIdentityVerifiedYN.Value == true
             && complaint.MoreInfoReqdFromDebtorYN.Value == false
             && complaint.MoreInfoRequestedDate.HasValue == false)
         return ComplaintStatus.NCIP;
     else if (status == ComplaintStatus.AAI
         && complaint.MoreInfoReceivedFromDebtorYN.Value == true
         && complaint.MoreInfoReceivedDate.HasValue == true
         && complaint.MoreInfoFromAgencyReceivedYN.Value == false
         && complaint.MoreInfoFromAgencyReceivedDate.HasValue == false
         && complaint.ComplaintSubmittedToOwnerYN.Value == false
         && complaint.ComplaintSubmittedDate.HasValue == false)
         return ComplaintStatus.NCIP;
     else if (status == ComplaintStatus.AAI
         && complaint.MoreInfoFromAgencyReceivedYN.Value == true
         && complaint.MoreInfoFromAgencyReceivedDate.HasValue == true
         && complaint.ComplaintSubmittedToOwnerYN.Value == false
         && complaint.ComplaintSubmittedDate.HasValue == false)
         return ComplaintStatus.NCIP;
     else
         return status;
 }
 private ComplaintStatus GetInitialStatus(Tbl_ComplaintMain complaint)
 {
     return (complaint.DebtorIdentityVerifiedYN.Value) ? ComplaintStatus.NCIP : ComplaintStatus.NCRA;
 }
        private ComplaintStatus GetComplaintStatus(UserRole userRole, string accountNumber, Tbl_ComplaintMain complaintToAnalize)
        {
            UnitOfWork uo;
            ComplaintStatus complaintStatus = ComplaintStatus.BLANK;;
            try
            {
                uo = new UnitOfWork("CCATDBEntities");
                if (userRole == UserRole.CollectionAgency || userRole == UserRole.AgencyCollector)
                {
                    return CollectionAgencyGetComplaintStatus(uo.Repository<Tbl_ComplaintMain>().GetAll().Where(r => r.AccountNumber == accountNumber && r.ComplaintId == complaintToAnalize.ComplaintId).SingleOrDefault(), complaintToAnalize);
                }
                if (userRole == UserRole.DebtOwner)
                {
                    return DebtOwnerGetComplaintStatus(uo.Repository<Tbl_ComplaintMain>().GetAll().Where(r => r.AccountNumber == accountNumber && r.ComplaintId == complaintToAnalize.ComplaintId).SingleOrDefault(), complaintToAnalize);
                }
                if (userRole == UserRole.AgencyCompliance || userRole == UserRole.AgencyManager)
                {
                    return DualGetComplaintStatus(uo.Repository<Tbl_ComplaintMain>().GetAll().Where(r => r.AccountNumber == accountNumber && r.ComplaintId == complaintToAnalize.ComplaintId).SingleOrDefault(), complaintToAnalize);
                }
            }
            catch (Exception ex)
            {
                throw ex;

            }
            return complaintStatus;
        }
        public Tbl_ComplaintMain Post(Tbl_ComplaintMain complaint)
        {
            Tbl_ComplaintMain complaintToSave = null;
            UnitOfWork uo = null;
            bool editingRequired = true;
            UserRole role;
            try
            {
                if (string.IsNullOrEmpty(complaint.AccountNumber) || string.IsNullOrEmpty(complaint.ComplaintId))
                    throw new Exception("Accountnumber and ComplaintId is required to save complaint.");

                role = MSI.CCAT.Business.AccountBus.GetUserRole(complaint.CreatedBy.ToString());
                uo = new UnitOfWork("CCATDBEntities");
                IEnumerable<Tbl_ComplaintMain> data = (from existingComplaint in uo.Repository<Tbl_ComplaintMain>().GetAll().Where(record => record.AccountNumber == complaint.AccountNumber && record.ComplaintId == complaint.ComplaintId)
                                                       select existingComplaint);

                if (data.Count() > 0)
                {
                    complaintToSave = data.First();
                }
                else
                {
                    editingRequired = false;
                    complaintToSave = new Tbl_ComplaintMain();
                }

                complaintToSave.Tbl_Account = uo.AccountRepository.GetAccounts(complaint.AccountNumber).Single();
                complaintToSave.Tbl_Account.Tbl_Agency = uo.Repository<Tbl_Agency>().GetById(complaintToSave.Tbl_Account.AgencyId.Value);
                complaintToSave.AccountNumber = complaint.AccountNumber;
                complaintToSave.DebtorIdentityVerifiedYN = complaint.DebtorIdentityVerifiedYN;
                complaintToSave.DebtorContactMethodId = complaint.DebtorContactMethodId;
                complaintToSave.DebtorContactTimeId = complaint.DebtorContactTimeId;                
                complaintToSave.DebtorProductId = complaint.DebtorProductId;
                complaintToSave.DisputeDebtYN = complaint.DisputeDebtYN;
                complaintToSave.DisputeDebtAmountYN = complaint.DisputeDebtAmountYN;
                complaintToSave.DisputeDebtDueDateYN = complaint.DisputeDebtDueDateYN;
                complaintToSave.ComplaintId = complaint.ComplaintId;
                complaintToSave.ComplaintDate = DateHelper.GetDateWithTimings(complaint.ComplaintDate);
                complaintToSave.ReceivedByMethodId = complaint.ReceivedByMethodId;
                complaintToSave.IssuesId = complaint.IssuesId;
                complaintToSave.ComplaintNotes = complaint.ComplaintNotes;
                complaintToSave.ComplaintSubmittedToAgencyYN = complaint.ComplaintSubmittedToAgencyYN;
                if(complaint.ComplaintSubmittedToAgencyDate.HasValue)
                    complaintToSave.ComplaintSubmittedToAgencyDate = DateHelper.GetDateWithTimings(complaint.ComplaintSubmittedToAgencyDate.Value);
                complaintToSave.MoreInfoReqdFromDebtorYN = complaint.MoreInfoReqdFromDebtorYN;
                if (complaint.MoreInfoRequestedDate.HasValue)
                    complaintToSave.MoreInfoRequestedDate = DateHelper.GetDateWithTimings(complaint.MoreInfoRequestedDate.Value);
                complaintToSave.MoreInfoRequested = complaint.MoreInfoRequested;
                complaintToSave.MoreInfoReceivedFromDebtorYN = complaint.MoreInfoReceivedFromDebtorYN;
                if( complaint.MoreInfoReceivedDate.HasValue)
                    complaintToSave.MoreInfoReceivedDate = DateHelper.GetDateWithTimings(complaint.MoreInfoReceivedDate.Value);
                complaintToSave.MoreInfoReceived = complaint.MoreInfoReceived;
                complaintToSave.ComplaintSubmittedToOwnerYN = complaint.ComplaintSubmittedToOwnerYN;
                if (complaint.ComplaintSubmittedDate.HasValue)
                    complaintToSave.ComplaintSubmittedDate = DateHelper.GetDateWithTimings(complaint.ComplaintSubmittedDate.Value);
                complaintToSave.TimeToSubmitDays = complaint.TimeToSubmitDays;
                complaintToSave.MoreInfoFromAgencyYN = complaint.MoreInfoFromAgencyYN;
                if (complaint.MoreInfoFromAgencyRequestedDate.HasValue)
                    complaintToSave.MoreInfoFromAgencyRequestedDate = DateHelper.GetDateWithTimings(complaint.MoreInfoFromAgencyRequestedDate.Value);
                complaintToSave.MoreInfoFromAgencyRequested = complaint.MoreInfoFromAgencyRequested;
                complaintToSave.MoreInfoFromAgencyReceived = complaint.MoreInfoFromAgencyReceived;
                complaintToSave.MoreInfoFromAgencyReceivedYN = complaint.MoreInfoFromAgencyReceivedYN;
                if (complaint.MoreInfoFromAgencyReceivedDate.HasValue)
                    complaintToSave.MoreInfoFromAgencyReceivedDate = DateHelper.GetDateWithTimings(complaint.MoreInfoFromAgencyReceivedDate.Value);
                complaintToSave.OwnerResponseId = complaint.OwnerResponseId;
                if(complaint.OwnerResponseDate.HasValue)
                    complaintToSave.OwnerResponseDate = DateHelper.GetDateWithTimings(complaint.OwnerResponseDate.Value);
                complaintToSave.OwnerResponseDays = complaint.OwnerResponseDays;
                if (complaint.AgencyResponseToDebtorDate.HasValue)
                    complaintToSave.AgencyResponseToDebtorDate = DateHelper.GetDateWithTimings(complaint.AgencyResponseToDebtorDate.Value);
                complaintToSave.TotalResponseTimeDays = complaint.TotalResponseTimeDays;
                complaintToSave.DebtorAgreeYN = complaint.DebtorAgreeYN;
                complaintToSave.NeedFurtherActionYN = complaint.NeedFurtherActionYN;
                complaintToSave.FinalActionStepId = complaint.FinalActionStepId;
                if (complaint.ComplaintSubmittedToOwnerYN.Value)
                    complaintToSave.IsViewedByOwner = false;
                complaintToSave.IsViewedByAgency = complaint.IsViewedByAgency;
                complaintToSave.IsActive = true;
                complaintToSave.ComplaintStatusId = (int)GetComplaintStatus(role, complaint.AccountNumber, complaintToSave);
                complaintToSave.ComplaintTypeID = complaint.ComplaintTypeID;
                if (editingRequired)
                {
                    if(complaintToSave.ComplaintSubmittedDate.HasValue && complaintToSave.ComplaintDate != null)
                        complaintToSave.TimeToSubmitDays = complaintToSave.ComplaintSubmittedDate.Value.Subtract(complaintToSave.ComplaintDate.Value).Days;
                    if (complaintToSave.OwnerResponseDate.HasValue && complaintToSave.ComplaintSubmittedDate.HasValue)
                        complaintToSave.OwnerResponseDays = complaintToSave.OwnerResponseDate.Value.Subtract(complaintToSave.ComplaintSubmittedDate.Value).Days;
                    if (complaintToSave.AgencyResponseToDebtorDate.HasValue && complaintToSave.ComplaintDate != null)
                        complaintToSave.TotalResponseTimeDays = complaintToSave.AgencyResponseToDebtorDate.Value.Subtract(complaintToSave.ComplaintDate.Value).Days;
                    uo.Repository<Tbl_ComplaintMain>().Update(complaintToSave);
                    complaintToSave.UpdatedBy = complaint.UpdatedBy;
                    complaintToSave.UpdatedDateTime = DateTime.Now;
                    if (string.IsNullOrEmpty(complaintToSave.AgencyCollectorUserId.ToString()) && role == UserRole.AgencyCollector)
                        complaintToSave.AgencyCollectorUserId = complaint.UpdatedBy;
                }
                else
                {
                    complaintToSave.CreatedBy = complaint.CreatedBy;
                    complaintToSave.UpdatedBy = complaint.UpdatedBy;
                    complaintToSave.CreatedDateTime = DateTime.Now;
                    complaintToSave.UpdatedDateTime = DateTime.Now;
                    uo.Repository<Tbl_ComplaintMain>().Add(complaintToSave);
                    if (role == UserRole.AgencyCollector)
                        complaintToSave.AgencyCollectorUserId = complaint.CreatedBy;
                }
                uo.Save();
                
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException validationException)
            {
                foreach (System.Data.Entity.Validation.DbEntityValidationResult errorResult in validationException.EntityValidationErrors)
                {
                    foreach (System.Data.Entity.Validation.DbValidationError error in errorResult.ValidationErrors)
                    {
                        string data = error.ErrorMessage;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return complaintToSave;
        }