예제 #1
0
        /// <summary>
        /// Retrieve Email details for selected email
        /// </summary>
        /// <param name="emailId"></param>
        /// <returns></returns>
        public ActionResult ShowEmailDetails(String emailId)
        {
            UserAccount loggedUser = null;

            if (HttpContext != null && HttpContext.Session != null && HttpContext.Session[SessionHelper.UserData] != null)
            {
                loggedUser = ( UserAccount )HttpContext.Session[SessionHelper.UserData];
            }
            else
            {
                // TODO: Handle if user don't have priviledges to see this log
                throw new UnauthorizedAccessException("User is not authorized to access this method!");
            }

            Int32 mailId = 0;

            if (emailId != null)
            {
                Int32.TryParse(emailId, out mailId);
            }

            if (mailId == 0)
            {
                throw new ArgumentNullException("Email Id is not correct!");
            }

            var email = ContactServiceFacade.RetrieveSentEmailItem(mailId, loggedUser.UserAccountId);

            ViewBag.IsWhatIfRateOption = email.IsWhatIfRateOption.GetValueOrDefault() ? "WhatIfRateOption" : "EmailRateOption";

            ViewBag.EmailHeader  = email.DateCreated.ToString("ddd, dd MMM yyyy hh':'mm':'ss tt");
            ViewBag.EmailContent = email.HtmlContent;

            return(PartialView("_emaildetails"));
        }
예제 #2
0
        public ActionResult UpdateRateOptionsNote(SentEmailItem data)
        {
            //var messageModelReload = new AppraisalConfirmationMessage();

            //var messageModel = new ErrorMessage();
            UserAccount loggedUser = null;

            try
            {
                if (HttpContext != null && HttpContext.Session != null && HttpContext.Session[SessionHelper.UserData] != null)
                {
                    loggedUser = ( UserAccount )HttpContext.Session[SessionHelper.UserData];
                }
                else
                {
                    // TODO: Handle if user don't have priviledges to see this log
                    throw new UnauthorizedAccessException("User is not authorized to access this method!");
                }
                ContactServiceFacade.UpdateSentEmailItemNote(data, loggedUser.UserAccountId);
            }
            catch (Exception exception)
            {
                TraceHelper.Error(TraceCategory.OrderAppraisal, "Failed to save appraisal order", exception);
            }

            return(Json(true));
        }
        public Boolean ManageProspectsSave(ManageProspectsViewModel manageProspectsViewModel)
        {
            var user = AccountHelper.GetUserAccount(HttpContext);

            Int32 status     = 0;
            Int32 concierge  = 0;
            Int32 callCenter = 0;
            Int32 loa        = 0;

            if (!String.IsNullOrEmpty(manageProspectsViewModel.SelectedCallCenter))
            {
                Int32.TryParse(manageProspectsViewModel.SelectedCallCenter, out callCenter);
            }

            if (!String.IsNullOrEmpty(manageProspectsViewModel.SelectedLoa))
            {
                Int32.TryParse(manageProspectsViewModel.SelectedLoa, out loa);
            }

            if (!String.IsNullOrEmpty(manageProspectsViewModel.SelectedStatus))
            {
                Int32.TryParse(manageProspectsViewModel.SelectedStatus, out status);
            }

            if (!String.IsNullOrEmpty(manageProspectsViewModel.SelectedConcierge))
            {
                Int32.TryParse(manageProspectsViewModel.SelectedConcierge, out concierge);
            }

            Guid companyId = Guid.Empty;

            if (!String.IsNullOrEmpty(manageProspectsViewModel.CompanyId))
            {
                Guid.TryParse(manageProspectsViewModel.CompanyId, out companyId);
            }

            var updated = ContactServiceFacade.UpdateContactProspect(
                manageProspectsViewModel.ProspectId, status, concierge, user.UserAccountId, companyId, manageProspectsViewModel.ChannelId, manageProspectsViewModel.DivisionId, manageProspectsViewModel.BranchId, callCenter, loa);

            if (manageProspectsViewModel.LoanId == Guid.Empty)
            {
                return(updated);
            }



            bool isSubmited = LoanServiceFacade.AssignOfficersToLoan(manageProspectsViewModel.LoanId, companyId, manageProspectsViewModel.ChannelId, manageProspectsViewModel.DivisionId, manageProspectsViewModel.BranchId, concierge, callCenter, loa);

            if (!isSubmited)
            {
                return(false);
            }

            ActivitiesServiceFacade.ExecuteActivityRulesConcierge(
                ActivitiesServiceFacade.RetrieveActivity(manageProspectsViewModel.LoanId, ActivityType.CompleteLoanApplication, user.UserAccountId).Id,
                ActivityStatus.Completed, ActivityMode.None, false, ActionIntent.LoanNoAndConciergeAssigned, user.Party.Id, user.UserAccountId);

            return(true);
        }
예제 #4
0
        public void Execute()
        {
            UserAccount user = null;

            if (_httpContext.Session[SessionHelper.UserData] != null && ((UserAccount)_httpContext.Session[SessionHelper.UserData]).Username == _httpContext.User.Identity.Name)
            {
                user = (UserAccount)_httpContext.Session[SessionHelper.UserData];
            }
            else
            {
                user = UserAccountServiceFacade.GetUserByName(_httpContext.User.Identity.Name);
            }

            if (user == null)
            {
                throw new InvalidOperationException("User is null");
            }

            /* parameter processing */
            Int32 contactId = 0;

            if (!InputParameters.ContainsKey("ContactId"))
            {
                throw new ArgumentException("ContactId was expected!");
            }
            else
            {
                contactId = Convert.ToInt32(InputParameters["ContactId"]);
            }

            Int32 newOwnerAccountId;

            if (!InputParameters.ContainsKey("NewOwnerAccountId"))
            {
                throw new ArgumentException("NewOwnerAccountId was expected!");
            }
            else
            {
                newOwnerAccountId = Convert.ToInt32(InputParameters["NewOwnerAccountId"]);
            }

            /* Command processing */
            var result = ContactServiceFacade.UpdateContactOwner(contactId, newOwnerAccountId, user.UserAccountId);

            if (result == true)
            {
                _viewName  = string.Empty;
                _viewModel = null;
            }
            else
            {
                // return Error View?
                throw new ApplicationException("Prospect owner was not updated");
            }
        }
예제 #5
0
        private void LoadLeadSourceInformation(AppraisalViewModel userAppraisalViewModel, Guid loanId, Int32 prospectId, UserAccount user)
        {
            userAppraisalViewModel.TitleInformation = ConciergeWorkQueueServiceFacade.ExecuteSPGetBorrowerData("GetBorrowerData", loanId, user.UserAccountId);

            var leadSourceInformation = ContactServiceFacade.RetrieveLeadSourceByContactIdAndLoanId(prospectId, loanId, user.UserAccountId);

            if (leadSourceInformation != null)
            {
                userAppraisalViewModel.LeadSourceInformation = leadSourceInformation.LeadSourceId + " " + leadSourceInformation.Description;
            }
        }
        public ActionResult ChangeProspectLO(int contactId, int newOwnerAccountId, string lid)
        {
            try
            {
                UserAccount loggedUser = null;
                if (HttpContext != null && HttpContext.Session != null && HttpContext.Session[SessionHelper.UserData] != null)
                {
                    loggedUser = ( UserAccount )HttpContext.Session[SessionHelper.UserData];
                }
                else
                {
                    // TODO: Handle if user don't have priviledges to see this log
                    throw new UnauthorizedAccessException("User is not authorized to access this method!");
                }

                var licenseExpiredClass   = "notdisplayed";
                var licenseExpiredMessage = String.Empty;

                var updated = ContactServiceFacade.UpdateContactOwner(contactId, newOwnerAccountId, loggedUser.UserAccountId);

                if (!updated || newOwnerAccountId == 0 || !WebCommonHelper.LicensingEnabled())
                {
                    return(Json(new
                    {
                        LicenseExpiredClass = licenseExpiredClass,
                        LicenseExpiredMessage = licenseExpiredMessage
                    }, JsonRequestBehavior.AllowGet));
                }

                Guid loanId;
                Guid.TryParse(lid, out loanId);

                // Check if concierge/branch is licensed
                var isUserStateLicensedForLoan = UserAccountServiceFacade.IsUserStateLicensedForLoan(newOwnerAccountId, loanId, contactId);

                licenseExpiredMessage = LicenseHelper.ConfigureLicenseExpiredMessage(licenseExpiredMessage, isUserStateLicensedForLoan);
                if (!String.IsNullOrEmpty(licenseExpiredMessage))
                {
                    licenseExpiredClass = "licenseExpiredNotification";
                }

                return(Json(new
                {
                    LicenseExpiredClass = licenseExpiredClass,
                    LicenseExpiredMessage = licenseExpiredMessage
                }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                TraceHelper.Error(TraceCategory.Global, "LoanController::ChangeProspectLO", ex);
                return(Json(null, JsonRequestBehavior.AllowGet));
            }
        }
        public void Execute()
        {
            UserAccount user = null;

            if (_httpContext.Session[SessionHelper.UserData] != null && ((UserAccount)_httpContext.Session[SessionHelper.UserData]).Username == _httpContext.User.Identity.Name)
            {
                user = (UserAccount)_httpContext.Session[SessionHelper.UserData];
            }
            else
            {
                user = UserAccountServiceFacade.GetUserByName(_httpContext.User.Identity.Name);
            }

            if (user == null)
            {
                throw new InvalidOperationException("User is null");
            }

            /* parameter processing */
            Int32 contactId = 0;

            if (!InputParameters.ContainsKey("ContactId"))
            {
                throw new ArgumentException("ContactId was expected!");
            }
            else
            {
                contactId = Convert.ToInt32(InputParameters["ContactId"]);
            }

            /* Command processing */
            var result = ContactServiceFacade.RetrieveContactView(contactId, user.UserAccountId);

            if (result != null)
            {
                _viewName  = "_sourceofbusinesstooltip";
                _viewModel = result;
            }
            else
            {
                _viewName  = string.Empty;
                _viewModel = null;
            }
        }
예제 #8
0
        //
        // GET: /OpenRateOptionNotesPopupCommand/

/*
 *      public ActionResult Index()
 *      {
 *          return View();
 *      }
 */
        public override void Execute()
        {
            base.Execute();
            try
            {
                var emailId = 0;
                if (InputParameters.ContainsKey("SentMailId"))
                {
                    Int32.TryParse(InputParameters["SentMailId"].ToString().TrimEnd(), out emailId);
                }


                if (emailId == 0)
                {
                    throw new InvalidOperationException("Missing sent email Id!");
                }

                RateOptionViewModel model = new RateOptionViewModel();



                SentEmailItem bussinesContactViewModel = ContactServiceFacade.RetrieveSentEmailItemNote(emailId, base.User.UserAccountId);

                if (bussinesContactViewModel != null)
                {
                    model.SentEmailNote      = bussinesContactViewModel.Notes;
                    model.SentEmailIdCurrent = emailId;
                }

                ViewName = "Commands/_rateOptionsNotePopup";
                ViewData = model;
            }
            catch (Exception ex)
            {
                TraceHelper.Error(TraceCategory.LoanCenter, "There is some issues in method OpenBusinessContactPopupCommand.Execute(): " + ex.Message, ex);
                throw;
            }
        }
예제 #9
0
        private void RetrieveContacts(List <int> newUserAccountIds, String searchValue)
        {
            ContactListState contactListState = null;

            if ((base.HttpContext != null) && (base.HttpContext.Session[SessionHelper.ContactListState] != null))
            {
                contactListState = ( ContactListState )base.HttpContext.Session[SessionHelper.ContactListState];
            }
            else
            {
                contactListState = new ContactListState();
            }

            // reset page to 1st on user change
            FilterViewModel userFilterViewModel = null;

            if ((base.HttpContext != null) && (base.HttpContext.Session[SessionHelper.FilterViewModel] != null))
            {
                userFilterViewModel = new FilterViewModel().FromXml(base.HttpContext.Session[SessionHelper.FilterViewModel].ToString());
                userFilterViewModel.FilterContext = FilterContextEnum.Contact;
            }
            else
            {
                // possible state retrieval?
                userFilterViewModel = new FilterViewModel();
                userFilterViewModel.FilterContext = FilterContextEnum.Contact;
            }

            contactListState.CurrentPage = 1;

            UserAccount user;

            if (base.HttpContext.Session[SessionHelper.UserData] != null && (( UserAccount )base.HttpContext.Session[SessionHelper.UserData]).Username == base.HttpContext.User.Identity.Name)
            {
                user = ( UserAccount )base.HttpContext.Session[SessionHelper.UserData];
            }
            else
            {
                user = UserAccountServiceFacade.GetUserByName(base.HttpContext.User.Identity.Name);
            }

            if (user == null)
            {
                throw new InvalidOperationException("User is null");
            }

            var contactViewData = ContactServiceFacade.RetrieveContactsView(newUserAccountIds,
                                                                            contactListState.BoundDate,
                                                                            contactListState.CurrentPage,
                                                                            EnumHelper.GetStringValue(contactListState.SortColumn),
                                                                            contactListState.SortDirection, user.UserAccountId, searchValue, contactListState.ContactStatusFilter,
                                                                            userFilterViewModel.CompanyId,
                                                                            userFilterViewModel.ChannelId,
                                                                            userFilterViewModel.DivisionId,
                                                                            contactListState.LoanPurposeFilter,
                                                                            userFilterViewModel.BranchId,
                                                                            contactListState.ConciergeFilter
                                                                            );



            ContactViewModel contactViewModel = new ContactViewModel();

            if (contactViewData != null)
            {
                contactViewModel.Contacts   = contactViewData.ContactsItems;
                contactViewModel.PageCount  = contactViewData.TotalPages;
                contactViewModel.TotalItems = contactViewData.TotalItems;
                ContactGridHelper.ApplyClassCollection(contactViewModel);
                ContactGridHelper.ProcessPagingOptions(contactListState, contactViewModel);
            }

            contactViewModel.ProspectLOConciergeList = ContactViewModelHelper.PopulateProspectLoanOfficers(userFilterViewModel, base.HttpContext);

            // populate prospect statuses
            ContactViewModelHelper.PopulateProspectStatuses(contactViewModel);

            contactViewModel.ProspectStatusList = ContactViewModelHelper.PopulateProspectStatusList(contactViewModel);
            contactViewModel.LoanPurposeList    = new List <LoanTransactionType>(Enum.GetValues(typeof(LoanTransactionType)).Cast <LoanTransactionType>().Skip(1));

            ContactDataHelper contactDataHelper = new ContactDataHelper();

            contactDataHelper.PopulateConciergeFilterList(contactListState, base.HttpContext, contactViewModel);

            base.ViewName = "Queues/_contact";
            base.ViewData = contactViewModel;

            /* Persist new state */
            base.HttpContext.Session[SessionHelper.ContactViewModel] = contactViewModel.ToXml();
            base.HttpContext.Session[SessionHelper.ContactListState] = contactListState;
            base.HttpContext.Session[SessionHelper.FilterViewModel]  = userFilterViewModel.ToXml();
        }
예제 #10
0
        public void Execute()
        {
            String searchValue = CommonHelper.GetSearchValue(_httpContext);

            ContactListState contactListState;

            if ((_httpContext != null) && (_httpContext.Session[SessionHelper.ContactListState] != null))
            {
                contactListState = ( ContactListState )_httpContext.Session[SessionHelper.ContactListState];
            }
            else
            {
                contactListState = new ContactListState();
            }

            FilterViewModel userFilterViewModel;

            if ((_httpContext != null) && (_httpContext.Session[SessionHelper.FilterViewModel] != null))
            {
                userFilterViewModel = new FilterViewModel().FromXml(_httpContext.Session[SessionHelper.FilterViewModel].ToString());
                userFilterViewModel.FilterContext = FilterContextEnum.Contact;
            }
            else
            {
                // possible state retrieval?
                userFilterViewModel = new FilterViewModel {
                    FilterContext = FilterContextEnum.Contact
                };
            }

            Boolean refresh = InputParameters != null && InputParameters.ContainsKey("Refresh") && InputParameters["Refresh"].ToString().Trim() == "true";

            // reset Page Number to 1st on Tab change
            if (!refresh)
            {
                contactListState.CurrentPage = 1;
            }

            UserAccount user = null;

            if (_httpContext.Session[SessionHelper.UserData] != null)
            {
                user = ( UserAccount )_httpContext.Session[SessionHelper.UserData];
            }
            else
            {
                throw new InvalidOperationException("UserData is null");
            }

            var isCallCenter   = false;
            var userAccountIds = new List <Int32>();

            if (user.Roles != null)
            {
                var filteredRoles = user.Roles.Where(
                    r => r.RoleName.Equals(RoleName.LoanProcessor) || r.RoleName.Equals(RoleName.Concierge) || r.RoleName.Equals(RoleName.LoanOfficerAssistant) || r.RoleName.Equals(RoleName.Administrator)
                    ).OrderBy(r => r.RolePriority);
                if (filteredRoles != null && filteredRoles.FirstOrDefault() != null)
                {
                    var topPriorityRole = filteredRoles.FirstOrDefault().RoleName;
                    isCallCenter = topPriorityRole.Equals(RoleName.LoanProcessor);
                }
            }

            if (isCallCenter)
            {
                userAccountIds.Add(user.UserAccountId);
            }
            else
            {
                if (_httpContext.Session[SessionHelper.UserAccountIds] != null)
                {
                    userAccountIds = (List <int>)_httpContext.Session[SessionHelper.UserAccountIds];
                }
            }

            var contactViewData = ContactServiceFacade.RetrieveContactsView(_httpContext.Session[SessionHelper.UserAccountIds] != null ? (List <int>)_httpContext.Session[SessionHelper.UserAccountIds] : new List <int> {
            },
                                                                            contactListState.BoundDate,
                                                                            contactListState.CurrentPage,
                                                                            contactListState.SortColumn.GetStringValue(),
                                                                            contactListState.SortDirection,
                                                                            user.UserAccountId,
                                                                            searchValue, contactListState.ContactStatusFilter,
                                                                            userFilterViewModel.CompanyId,
                                                                            userFilterViewModel.ChannelId,
                                                                            userFilterViewModel.DivisionId,
                                                                            contactListState.LoanPurposeFilter,
                                                                            userFilterViewModel.BranchId,
                                                                            contactListState.ConciergeFilter
                                                                            );

            var contactViewModel = new ContactViewModel();

            if (contactViewData != null)
            {
                contactViewModel.Contacts   = contactViewData.ContactsItems;
                contactViewModel.PageCount  = contactViewData.TotalPages;
                contactViewModel.TotalItems = contactViewData.TotalItems;
                ContactGridHelper.ApplyClassCollection(contactViewModel);
                ContactGridHelper.ProcessPagingOptions(contactListState, contactViewModel);
            }

            contactViewModel.ProspectLOConciergeList = ContactViewModelHelper.PopulateProspectLoanOfficers(userFilterViewModel, _httpContext);

            // populate prospect statuses
            ContactViewModelHelper.PopulateProspectStatuses(contactViewModel);

            contactViewModel.ProspectStatusList = ContactViewModelHelper.PopulateProspectStatusList(contactViewModel);

            contactViewModel.LoanPurposeList = new List <LoanTransactionType>(Enum.GetValues(typeof(LoanTransactionType)).Cast <LoanTransactionType>().Skip(1));

            ContactDataHelper contactDataHelper = new ContactDataHelper();

            contactDataHelper.PopulateConciergeFilterList(contactListState, _httpContext, contactViewModel);

            _viewName  = "Queues/_contact";
            _viewModel = contactViewModel;

            /* Persist new state */
            _httpContext.Session[SessionHelper.ContactViewModel] = contactViewModel.ToXml();
            _httpContext.Session[SessionHelper.ContactListState] = contactListState;
            _httpContext.Session[SessionHelper.FilterViewModel]  = userFilterViewModel.ToXml();
            _httpContext.Session[SessionHelper.CurrentTab]       = LoanCenterTab.Prospect;
        }
        public void Execute()
        {
            #region Check and convert input parameters

            if (!InputParameters.ContainsKey("LoanId"))
            {
                throw new ArgumentException("LoanId value was expected!");
            }

            if (!InputParameters.ContainsKey("ProspectId"))
            {
                throw new ArgumentException("ProspectId value was expected!");
            }



            var user = AccountHelper.GetUserAccount(HttpContext);
            if (user == null)
            {
                throw new InvalidOperationException("UserData is null");
            }

            #endregion

            #region Update title information
            Guid  loanId     = Guid.Parse(InputParameters["LoanId"].ToString().TrimEnd());
            Int32 prospectId = Int32.Parse(InputParameters["ProspectId"].ToString().TrimEnd());

            BasicLoanData loan = LoanServiceFacade.RetrieveBasicLoanData(loanId, user.UserAccountId);

            ManageProspectsViewModel model = new ManageProspectsViewModel();
            model.ProspectId = prospectId;
            model.LoanId     = loanId;

            if (loan != null)
            {
                model.CompanyId  = loan.CompanyId != Guid.Empty ? loan.CompanyId.ToString() : "0";
                model.ChannelId  = loan.ChannelId != null ? ( Int32 )loan.ChannelId : 0;
                model.DivisionId = loan.DivisionId != null ? ( Int32 )loan.DivisionId : 0;
                model.BranchId   = loan.BranchId != Guid.Empty ? ( Guid )loan.BranchId : Guid.Empty;
            }
            else
            {
                Contact contactData = ContactServiceFacade.RetrieveContactByContactId(prospectId);
                if (contactData != null)
                {
                    model.CompanyId  = contactData.CompanyProfileId != Guid.Empty ? contactData.CompanyProfileId.ToString() : "0";
                    model.ChannelId  = contactData.ChannelId != null ? ( Int32 )contactData.ChannelId : 0;
                    model.DivisionId = contactData.DivisionId != null ? ( Int32 )contactData.DivisionId : 0;
                    model.BranchId   = contactData.BranchId != Guid.Empty ? ( Guid )contactData.BranchId : Guid.Empty;
                }
            }



            //var leadSource = ContactServiceFacade.RetrieveLeadSourceByContactIdAndLoanId( prospectId, loanId, user.UserAccountId );
            //model.LeadSourceInformation = leadSource != null ? leadSource.LeadSourceId + " " + leadSource.Description : String.Empty;
            LeadSource hearAboutUs = LoanServiceFacade.RetrieveHearAboutUs(loanId);

            if (hearAboutUs != null)
            {
                if (hearAboutUs.AffinityGroup == Contracts.Affiliate.AffinityGroup.PartnersProfiles)
                {
                    if (hearAboutUs.HBMId != null && hearAboutUs.HBMId != Guid.Empty)
                    {
                        model.HearAboutUs = hearAboutUs.LeadSourceId + " Realtor-HBM";
                    }
                    else
                    {
                        model.HearAboutUs = hearAboutUs.LeadSourceId + " Realtor";
                    }
                }
                else
                {
                    model.HearAboutUs = hearAboutUs.LeadSourceId + " " + hearAboutUs.Description;
                }
            }

            model.TitleInformation = ConciergeWorkQueueServiceFacade.ExecuteSPGetBorrowerData("GetBorrowerData", loanId, user.UserAccountId);

            #endregion

            #region Update emails

            var emailList = ContactServiceFacade.RetrieveSentEmailItems(prospectId, user.UserAccountId);
            if (emailList != null && emailList.Count > 0)
            {
                model.Emails = emailList;
            }

            #endregion

            #region Update Lists



            bool isLoa = false;
            if (user.Roles != null && user.Roles.Any(r => r.RoleName == RoleName.LoanOfficerAssistant && r.IsActive))
            {
                isLoa = true;
            }

            LoadCompanies(model);

            LoadChannels(model);

            LoadDivisions(model);

            LoadBranches(model);

            LoadRelatedConciergeList(model, user, loan, loanId, null, isLoa);

            LoadRelatedLoaList(model, user, loan, loanId, null, isLoa);

            // Get Call Center/Loan Processor Officers
            var callCenterInfos = UserAccountServiceFacade.RetrieveCallCenterInfo();

            if (callCenterInfos != null)
            {
                callCenterInfos = new Collection <CallCenterInfo>(callCenterInfos.OrderBy(l => l.CallCenterName).ToList());
                callCenterInfos.Insert(0, new CallCenterInfo()
                {
                    UserAccountId = 0, CallCenterName = "Select One"
                });
            }


            model.CallCenterInfoList = new Collection <CallCenterInfo>();
            model.CallCenterInfoList = callCenterInfos;

            #endregion

            #region Get Highest priority role
            if (user.Roles != null && user.Roles.Count() > 0)
            {
                var filteredRoles = user.Roles.OrderBy(r => r.RolePriority);
                if (filteredRoles != null && filteredRoles.FirstOrDefault() != null)
                {
                    var topPriorityRole       = filteredRoles.FirstOrDefault().RoleName;
                    var retrievedProspectData = ContactServiceFacade.RetrieveContactProspect(prospectId);

                    if (retrievedProspectData != null)
                    {
                        model.SelectedStatus    = retrievedProspectData.Status.ToString();
                        model.SelectedConcierge = retrievedProspectData.Concierge.ToString();
                        model.SelectedLoa       = retrievedProspectData.Loa.ToString();
                        if (model.CallCenterInfoList.FirstOrDefault(c => c.UserAccountId.Equals(retrievedProspectData.CallCenter)) != null)
                        {
                            model.SelectedCallCenter = model.CallCenterInfoList.FirstOrDefault(c => c.UserAccountId.Equals(retrievedProspectData.CallCenter)).UserAccountId.ToString();
                        }
                        if (model.ConciergeInfoList.FirstOrDefault(c => c.UserAccountId.Equals(retrievedProspectData.Concierge)) != null)
                        {
                            model.NMLSNumber = model.ConciergeInfoList.FirstOrDefault(c => c.UserAccountId.Equals(retrievedProspectData.Concierge)).NMLSNumber;
                        }
                    }
                }
            }
            #endregion

            //TODO: Move this in Lookup
            model.Statuses = new Collection <KeyValuePair <String, String> >();
            foreach (ContactStatus contactStatus in Enum.GetValues(typeof(ContactStatus)))
            {
                if (contactStatus != ContactStatus.None)
                {
                    model.Statuses.Add(new KeyValuePair <String, String>((( int )contactStatus).ToString(),
                                                                         MML.Web.LoanCenter.Helpers.LoanCenterEnumHelper.ContactStatusToString(contactStatus)));
                }
            }

            model.Statuses = new Collection <KeyValuePair <String, String> >(model.Statuses.OrderBy(s => s.Value).ToList());

            ViewName = "Commands/_manageprospects";
            ViewData = model;

            if (HttpContext == null || HttpContext.Session == null)
            {
                throw new NullReferenceException("Session is empty!");
            }

            HttpContext.Session[SessionHelper.ManageProspects] = model.ToXml();
        }
예제 #12
0
        /// <summary>
        /// Rate Options
        /// </summary>
        /// <param name="loanId"></param>
        /// <returns></returns>
        public ActionResult ShowRateOption(String loanId, String prospectId, bool builtInMode = false)
        {
            UserAccount loggedUser = null;
            int         prospect;

            Int32.TryParse(prospectId, out prospect);
            Guid loan = Guid.Empty;

            if (HttpContext != null && HttpContext.Session != null && HttpContext.Session[SessionHelper.UserData] != null)
            {
                loggedUser = ( UserAccount )HttpContext.Session[SessionHelper.UserData];
            }
            else
            {
                // TODO: Handle if user don't have priviledges to see this log
                throw new UnauthorizedAccessException("User is not authorized to access this method!");
            }

            if (prospect == 0 && !loanId.IsNullEmptyOrSpaces())
            {
                Guid.TryParse(loanId, out loan);
                if (loan != Guid.Empty)
                {
                    Contact contact = ContactServiceFacade.GetContact(loan, 0);
                    if (contact != null)
                    {
                        prospect = contact.ContactId;
                    }
                }
            }

            RateOptionViewModel mainItem = new RateOptionViewModel();

            mainItem.BuiltInMode = builtInMode;
            RateOptionItemViewModel rateOptionItem = null;
            List <SentEmailItem>    emailList      = ContactServiceFacade.RetrieveSentEmailItems(prospect, loggedUser.UserAccountId);

            if (emailList != null && emailList.Count > 0)
            {
                mainItem.RateOptionList = new List <RateOptionItemViewModel>();
                foreach (SentEmailItem item in emailList)
                {
                    rateOptionItem                    = new RateOptionItemViewModel();
                    rateOptionItem.ContactId          = item.ContactId;
                    rateOptionItem.DateCreated        = item.DateCreated;
                    rateOptionItem.DistributionList   = item.EmailAddress;
                    rateOptionItem.SentEmailId        = item.Id;
                    rateOptionItem.IsWhatIfRateOption = item.IsWhatIfRateOption;
                    rateOptionItem.LoanAmount         = item.LoanAmount;
                    rateOptionItem.LTV                = item.LTV;
                    rateOptionItem.CLTV               = item.CLTV;
                    rateOptionItem.DebtToIncomeRatio  = item.DebtToIncomeRatio;
                    if (item.Products != null && item.Products.Count > 0 && item.Products.Count < 2)
                    {
                        rateOptionItem.Product        = item.Products[0].ProductName;
                        rateOptionItem.Rate           = item.Products[0].Rate;
                        rateOptionItem.Apr            = item.Products[0].APR;
                        rateOptionItem.Points         = (item.Products[0].Points * ( double )item.LoanAmount) / 100;
                        rateOptionItem.PointsPercents = item.Products[0].Points;
                    }
                    rateOptionItem.ReportRepositoryItemId = item.ReportRepositoryItemId;
                    mainItem.RateOptionList.Add(rateOptionItem);
                }
            }

            ViewBag.Source = builtInMode;

            return(PartialView("Commands/_rateOption", mainItem));
        }
        public ConciergeCommandEmbedded OpenConciergeCommandEmbedded(string workQueueType, string action, Guid loanId, string prospectId, bool hideHeader)
        {
            var user = ( UserAccount )HttpContext.Session[SessionHelper.UserData];

            if (action == "DefaultCommand")
            {
                if (loanId != Guid.Empty)
                {
                    prospectId = String.Empty;
                }

                if (workQueueType == "Prospects")
                {
                    if (loanId == Guid.Empty)
                    {
                        action = "Manage Prospects";
                    }
                    else
                    {
                        action = "Manage Loan Application";
                    }
                }
                else
                {
                    action = "Manage Loan Application";
                }
            }

            String additionalInformation = "";

            if (action == "Manage Disclosures")
            {
                var disclosureModel = LoanServiceFacade.RetrieveDisclosureModel(loanId, IdentityManager.GetUserAccountId());

                additionalInformation = GeneralSettingsServiceFacade.RetrieveeSigningVendorIntegrationEnabled() &&
                                        LoanServiceFacade.RetrieveeSigningEnabledForLoan(loanId) && disclosureModel == DisclosuresModel.eSign
                                            ? "eSigning Room"
                                            : "";
            }

            Int32 tempuserAccount = 0;

            int         userAccountId = LoanServiceFacade.RetrieveUserAccountIdByLoanId(loanId, user.UserAccountId);
            UserAccount userAccount   = UserAccountServiceFacade.GetUserById(userAccountId);

            if (userAccount.IsTemporary)
            {
                tempuserAccount = userAccountId;
            }

            string conciergeUrl = GetConciergeUrl(new Guid(), workQueueType, action, loanId, prospectId, tempuserAccount);

            var titleInformation = ConciergeWorkQueueServiceFacade.ExecuteSPGetBorrowerData("GetBorrowerData", loanId, user.UserAccountId);

            if (userAccount.IsTemporary)
            {
                titleInformation = "";
            }

            var leadSourceInformation = ContactServiceFacade.RetrieveLeadSourceByContactIdAndLoanId(-1, loanId, user.UserAccountId);
            var leadSourceInfo        = String.Empty;

            if (leadSourceInformation != null)
            {
                if (leadSourceInformation.AffinityGroup == Contracts.Affiliate.AffinityGroup.PartnersProfiles)
                {
                    if (leadSourceInformation.HBMId != null && leadSourceInformation.HBMId != Guid.Empty)
                    {
                        leadSourceInfo = leadSourceInformation.LeadSourceId + " Realtor HBM";
                    }
                    else
                    {
                        leadSourceInfo = leadSourceInformation.LeadSourceId + " Realtor";
                    }
                }
                else
                {
                    leadSourceInfo = leadSourceInformation.LeadSourceId + " " + leadSourceInformation.Description;
                }
            }
            string title = action;

            switch (title)
            {
            case "Manage Loan Application":
                title = "Loan Application";
                break;

            case "Manage Loan":
                title = "Loan Details";
                break;

            case "Manage Disclosures":
                title = "Disclosures";
                break;

            case "Manage Documents":
                title = "Documents";
                break;

            case "Manage Appraisal":
                title = "Appraisal";
                break;

            case "Manage Activities":
                title = "Activities";
                break;

            case "Manage Alerts":
                title = "Alerts";
                break;

            case "Manage Credit":
                title = "Credit";
                break;
            }

            if (userAccount.IsTemporary && title == "Loan Application")
            {
                title = "Create Account";
            }

            return(new ConciergeCommandEmbedded()
            {
                Title = title, TitleInformation = titleInformation, ConciergeUrl = conciergeUrl, LeadSourceInformation = leadSourceInfo, AdditionalInformation = additionalInformation, HideHeader = hideHeader
            });
        }
예제 #14
0
        public void Execute()
        {
            var user = AccountHelper.GetUserAccount(HttpContext);

            if (user == null)
            {
                throw new InvalidOperationException("UserData is null");
            }

            Guid loanId = Guid.Empty;

            if (!InputParameters.ContainsKey("LoanId"))
            {
                throw new ArgumentException("LoanId was expected!");
            }
            else
            {
                Guid.TryParse(InputParameters["LoanId"].ToString(), out loanId);
            }

            LoanServicesViewModel loanServicesViewModel = new LoanServicesViewModel();

            if (loanId != Guid.Empty)
            {
                // used for testing purposes only - REMOVE OTHERWISE
                //loanId = new Guid( "4DAE6B31-3DA8-42EB-BCAC-8F0D661646AB" );

                // Get filters
                var filters = LoanServiceFacade.RetrieveLoanServiceFilters(loanId);
                if (filters == null)
                {
                    filters = new LoanServiceFiltersContract();
                }

                // If no product filters were returned init the array
                if (filters.Products == null)
                {
                    filters.Products = new string[0];
                }
                List <string> productFilters = new List <string>(filters.Products.OrderBy(x => x));
                productFilters.Insert(0, "[None]");
                filters.Products = productFilters.ToArray();

                // If no vendor filters were returned init the array
                if (filters.Vendors == null)
                {
                    filters.Vendors = new string[0];
                }
                List <string> vendorFilters = new List <string>(filters.Vendors.OrderBy(x => x));
                vendorFilters.Insert(0, "[None]");
                filters.Vendors = vendorFilters.ToArray();

                // If no status filters were returned init the array
                if (filters.Statuses == null)
                {
                    filters.Statuses = new string[0];
                }
                List <string> statusFilters = new List <string>(filters.Statuses.OrderBy(x => x));
                statusFilters.Insert(0, "[None]");
                filters.Statuses = statusFilters.ToArray();

                loanServicesViewModel.AvailableFilters = filters;

                // Fetch the loan services themselves
                loanServicesViewModel.LoanServiceList = LoanServiceFacade.RetrieveLoanServices(loanId);
            }

            #region Update title information

            var leadSource = ContactServiceFacade.RetrieveLeadSourceByContactIdAndLoanId(-1, loanId, user.UserAccountId);
            loanServicesViewModel.LeadSourceInformation = leadSource != null ? leadSource.LeadSourceId + " " + leadSource.Description : String.Empty;
            loanServicesViewModel.TitleInformation      = ConciergeWorkQueueServiceFacade.ExecuteSPGetBorrowerData("GetBorrowerData", loanId, user.UserAccountId);

            #endregion

            _viewName  = "_loanservices";
            _viewModel = loanServicesViewModel;

            // Rihad:This might be to big for keeping it in session:
            //_httpContext.Session[ SessionHelper.LoanServiceList ] = loanServicesViewModel.LoanServiceList.ToXml();
        }
        public static ContactViewModel RetrieveContactViewModel(ContactListState contactListState, List <Int32> userAccountIds, Int32 userId, HttpContextBase httpContext, string searchValue = "")
        {
            FilterViewModel userFilterViewModel = null;

            if ((httpContext != null) && (httpContext.Session[SessionHelper.FilterViewModel] != null))
            {
                userFilterViewModel = new FilterViewModel().FromXml(httpContext.Session[SessionHelper.FilterViewModel].ToString());
            }
            else
            {
                // possible state retrieval?
                userFilterViewModel = new FilterViewModel();
            }

            var contactViewData = ContactServiceFacade.RetrieveContactsView(userAccountIds,
                                                                            contactListState.BoundDate,
                                                                            contactListState.CurrentPage,
                                                                            contactListState.SortColumn.GetStringValue(),
                                                                            contactListState.SortDirection,
                                                                            userId,
                                                                            searchValue,
                                                                            contactListState.ContactStatusFilter,
                                                                            userFilterViewModel.CompanyId,
                                                                            userFilterViewModel.ChannelId,
                                                                            userFilterViewModel.DivisionId,
                                                                            contactListState.LoanPurposeFilter,
                                                                            userFilterViewModel.BranchId,
                                                                            contactListState.ConciergeFilter
                                                                            );

            if (contactViewData == null)
            {
                contactViewData = new ContactViewData {
                    ContactsItems = new List <ContactViewItem>(), TotalItems = 0, TotalPages = 0
                };
            }
            // Set paging numbers
            else if (userAccountIds.Any())
            {
                contactViewData.TotalItems = contactViewData.TotalItems;
                contactViewData.TotalPages = contactViewData.TotalItems / 10;
                if ((contactViewData.TotalItems % 10) != 0)
                {
                    contactViewData.TotalPages++;
                }
            }

            var contactViewModel = new ContactViewModel()
            {
                Contacts   = contactViewData.ContactsItems,
                PageCount  = contactViewData.TotalPages,
                TotalItems = contactViewData.TotalItems,
                ProspectLO = PopulateProspectLoanOfficers(httpContext),
                ProspectLOConciergeList = PopulateLoanOfficersForProspectDropdown(httpContext)
            };


            ContactGridHelper.ProcessPagingOptions(contactListState, contactViewModel);
            ContactViewModelHelper.PopulateProspectStatuses(contactViewModel);
            ContactGridHelper.ApplyClassCollection(contactViewModel);

            contactViewModel.ProspectStatusList = ContactViewModelHelper.PopulateProspectStatusList(contactViewModel);

            contactViewModel.LoanPurposeList = new List <LoanTransactionType>(Enum.GetValues(typeof(LoanTransactionType)).Cast <LoanTransactionType>().Skip(1));

            ContactDataHelper contactDataHelper = new ContactDataHelper();

            contactDataHelper.PopulateConciergeFilterList(contactListState, httpContext, contactViewModel);

            return(contactViewModel);
        }
예제 #16
0
        public void Execute()
        {
            String searchValue = CommonHelper.GetSearchValue(_httpContext);

            /* State retrieval */


            ContactListState contactListState;

            if (_httpContext.Session[SessionHelper.ContactListState] != null)
            {
                contactListState = (ContactListState)_httpContext.Session[SessionHelper.ContactListState];
            }
            else
            {
                contactListState = new ContactListState();
            }

            UserAccount user;

            if (_httpContext.Session[SessionHelper.UserData] != null && ((UserAccount)_httpContext.Session[SessionHelper.UserData]).Username == _httpContext.User.Identity.Name)
            {
                user = (UserAccount)_httpContext.Session[SessionHelper.UserData];
            }
            else
            {
                user = UserAccountServiceFacade.GetUserByName(_httpContext.User.Identity.Name);
            }

            if (user == null)
            {
                throw new InvalidOperationException("User is null");
            }

            /* parameter processing */
            Int32 newPageNumber;

            if (!InputParameters.ContainsKey("Page"))
            {
                throw new ArgumentException("Page number was expected!");
            }
            else
            {
                newPageNumber = Convert.ToInt32(InputParameters["Page"]);
            }

            contactListState.CurrentPage = newPageNumber;

            /* Command processing */
            FilterViewModel userFilterViewModel;

            if ((_httpContext != null) && (_httpContext.Session[SessionHelper.FilterViewModel] != null))
            {
                userFilterViewModel = new FilterViewModel().FromXml(_httpContext.Session[SessionHelper.FilterViewModel].ToString());
                userFilterViewModel.FilterContext = FilterContextEnum.Contact;
            }
            else
            {
                // possible state retrieval?
                userFilterViewModel = new FilterViewModel();
                userFilterViewModel.FilterContext = FilterContextEnum.Contact;
            }

            var contactViewData = ContactServiceFacade.RetrieveContactsView(_httpContext.Session[SessionHelper.UserAccountIds] != null ? (List <int>)_httpContext.Session[SessionHelper.UserAccountIds] : new List <int> {
            },
                                                                            contactListState.BoundDate,
                                                                            contactListState.CurrentPage,
                                                                            contactListState.SortColumn.GetStringValue(),
                                                                            contactListState.SortDirection,
                                                                            user.UserAccountId,
                                                                            searchValue, contactListState.ContactStatusFilter,
                                                                            userFilterViewModel.CompanyId,
                                                                            userFilterViewModel.ChannelId,
                                                                            userFilterViewModel.DivisionId,
                                                                            contactListState.LoanPurposeFilter,
                                                                            userFilterViewModel.BranchId,
                                                                            contactListState.ConciergeFilter
                                                                            );



            ContactViewModel contactViewModel = new ContactViewModel();

            if (contactViewData != null)
            {
                contactViewModel.Contacts   = contactViewData.ContactsItems;
                contactViewModel.PageCount  = contactViewData.TotalPages;
                contactViewModel.TotalItems = contactViewData.TotalItems;
                ContactGridHelper.ApplyClassCollection(contactViewModel);
                ContactGridHelper.ProcessPagingOptions(contactListState, contactViewModel);
            }

            contactViewModel.ProspectLOConciergeList = ContactViewModelHelper.PopulateProspectLoanOfficers(userFilterViewModel, _httpContext);

            // populate prospect statuses
            ContactViewModelHelper.PopulateProspectStatuses(contactViewModel);

            contactViewModel.ProspectStatusList = ContactViewModelHelper.PopulateProspectStatusList(contactViewModel);

            contactViewModel.LoanPurposeList = new List <LoanTransactionType>(Enum.GetValues(typeof(LoanTransactionType)).Cast <LoanTransactionType>().Skip(1));

            ContactDataHelper contactDataHelper = new ContactDataHelper();

            contactDataHelper.PopulateConciergeFilterList(contactListState, _httpContext, contactViewModel);

            _viewName  = "Queues/_contact";
            _viewModel = contactViewModel;

            /* Persist new state */
            _httpContext.Session[SessionHelper.ContactViewModel] = contactViewModel.ToXml();
            _httpContext.Session[SessionHelper.ContactListState] = contactListState;
            _httpContext.Session[SessionHelper.FilterViewModel]  = userFilterViewModel.ToXml();
            _httpContext.Session[SessionHelper.CurrentTab]       = LoanCenterTab.Prospect;
        }
예제 #17
0
        private GetStarted StartNewProspect()
        {
            var   user         = AccountHelper.GetUserAccount(HttpContext);
            Int32 callCenterId = 0;

            if (user.Roles != null && user.Roles.OrderByDescending(r => r.RolePriority).FirstOrDefault() != null)
            {
                if (user.Roles.OrderByDescending(r => r.RolePriority).FirstOrDefault().RoleName.Equals(RoleName.LoanProcessor))
                {
                    callCenterId = user.UserAccountId;
                }
            }

            string message;
            Int32  createdUserAccountId;

            // Create account
            string username       = "******" + DateTime.Now.ToString("MMddyyyyHmmss") + "@meandmyloan.com";
            var    newUserAccount = new UserAccount()
            {
                Username              = username,
                DateCreated           = DateTime.Now,
                IsActivated           = false,
                IsLocked              = false,
                IsTemporary           = false,
                Password              = String.Empty,
                PasswordHint          = String.Empty,
                SecurityAnswer        = String.Empty,
                SecurityQuestionId    = 1,
                OpenedByLOorConcierge = true,
                CreationStatus        = UserAccountCreationStatus.SystemGenerated,
                IsOnlineUser          = true, // by default we create online user, this will be changed on CreateAccountLO page
                Party = new Party()
                {
                    FirstName             = "new",
                    LastName              = "prospect",
                    SSN                   = "000-00-0000 ",
                    MiddleName            = String.Empty,
                    CompanyName           = String.Empty,
                    EmailAddress          = String.Empty,
                    AlternateEmailAddress = String.Empty
                },
            };


            var hierarchy = new BrandingConfigurationHierarchy()
            {
                BranchId   = user.BranchId == Guid.Empty ? null : ( Guid? )user.BranchId,
                ChannelId  = user.ChannelId == 0 ? null : ( int? )user.ChannelId,
                DivisionId = user.DivisionId == 0 ? null : ( int? )user.DivisionId
            };

            var brandingConfiguration = CompanyProfileServiceFacade.RetrieveBrandingConfigurationByHierarchy(hierarchy);



            if (UserAccountServiceFacade.CreateUserAccount(newUserAccount, false, out message, out createdUserAccountId, brandingConfiguration, createdByUserId: user.UserAccountId) == false)
            {
                throw new ApplicationException("Error creating new user account");
            }

            if (createdUserAccountId < 0)
            {
                throw new ApplicationException("Error creating new user account");
            }

            newUserAccount.UserAccountId = createdUserAccountId;

            // Create Contact
            var contact = new Contact
            {
                FirstName      = "new",
                LastName       = "prospect",
                UserAccount    = newUserAccount,
                LoanId         = null,
                OwnerAccountId = user.UserAccountId,
                IsInitialLead  = true,
            };

            if (brandingConfiguration != null)
            {
                contact.CompanyProfileId = brandingConfiguration.CompanyProfileId;
                contact.ChannelId        = brandingConfiguration.ChannelId;
                contact.DivisionId       = brandingConfiguration.DivisionId;
                contact.BranchId         = brandingConfiguration.BranchId;
            }

            if (callCenterId != 0)
            {
                contact.CallCenterId = callCenterId;
            }

            var createdContact = ContactServiceFacade.CreateContact(contact);

            // Create impersonation token
            Guid token      = MML.Common.Impersonation.ImpersonationToken.GetToken();
            bool isInserted = ImpersonationTokenServiceFacade.InsertImpersonationToken(token, Guid.Empty, user.UserAccountId);

            if (isInserted)
            {
                GetStartedHelper getStartedHelper = new GetStartedHelper();

                return(getStartedHelper.GetStarted(HttpContext, user, token, username, true, createdContact.ContactId, isTempUser: true));
            }

            return(null);
        }
예제 #18
0
        public void RefreshNumberOfRecordsInTabsAsync()
        {
            String searchValue = String.Empty;

            if (Session[SessionHelper.SearchTerm] != null)
            {
                searchValue = Session[SessionHelper.SearchTerm].ToString();
            }

            UserAccount user = null;

            // Check if user is logged and put user data in session
            FilterViewModel userFilterViewModel = null;

            if ((Session[SessionHelper.FilterViewModel] != null))
            {
                userFilterViewModel = new FilterViewModel().FromXml(Session[SessionHelper.FilterViewModel].ToString());
            }
            else
            {
                userFilterViewModel = new FilterViewModel();
            }

            AsyncManager.QueueAction(() =>
            {
                if (Session["UserData"] != null && (( UserAccount )Session[SessionHelper.UserData]).Username == User.Identity.Name)
                {
                    user = ( UserAccount )Session["UserData"];
                }
                else
                {
                    user = UserAccountServiceFacade.GetUserByName(User.Identity.Name);
                }

                if (user == null)
                {
                    throw new InvalidOperationException("User is null");
                }
                else
                {
                    Session["UserData"] = user;
                }

                var userAccountIds = Session[SessionHelper.UserAccountIds] != null
                    ? (List <int>)Session[SessionHelper.UserAccountIds]
                    : new List <int> {
                };

                var officerTaskListState        = Session["OfficerTaskListState"] != null ? ( OfficerTaskListState )Session["OfficerTaskListState"] : new OfficerTaskListState();
                var cancelListState             = Session[SessionHelper.CancelListState] != null ? ( CancelLoanListState )Session[SessionHelper.CancelListState] : new CancelLoanListState();
                var completedListState          = Session[SessionHelper.CompletedLoansListState] != null ? ( CompletedLoansListState )Session[SessionHelper.CompletedLoansListState] : new CompletedLoansListState();
                var contactListState            = Session["ContactListState"] != null ? ( ContactListState )Session["ContactListState"] : new ContactListState();
                var pipelineListState           = Session["PipelineListState"] != null ? ( PipelineListState )Session["PipelineListState"] : new PipelineListState();
                var pendingApprovalListState    = Session[SessionHelper.PendingApprovalListState] != null ? ( PendingApprovalListState )Session[SessionHelper.PendingApprovalListState] : new PendingApprovalListState();
                var newLoanApplicationListState = Session[SessionHelper.NewLoanApplicationListState] != null ? ( NewLoanApplicationListState )Session[SessionHelper.NewLoanApplicationListState] : new NewLoanApplicationListState();
                var alertListState                   = Session[SessionHelper.AlertsListState] != null ? ( AlertsListState )Session[SessionHelper.AlertsListState] : new AlertsListState();
                var completedLoansListState          = Session[SessionHelper.CompletedLoansListState] != null ? ( CompletedLoansListState )Session[SessionHelper.CompletedLoansListState] : new CompletedLoansListState();
                var preapprovalListState             = Session[SessionHelper.PreApprovalListState] != null ? ( PreApprovalListState )Session[SessionHelper.PreApprovalListState] : new PreApprovalListState();
                var cancelLoansListState             = Session[SessionHelper.CancelListState] != null ? ( CancelLoanListState )Session[SessionHelper.CancelListState] : new CancelLoanListState();
                var orderRequestedListState          = Session[SessionHelper.OrderRequestedListState] != null ? ( OrderRequestedListState )Session[SessionHelper.OrderRequestedListState] : new OrderRequestedListState();
                var orderProcessedListState          = Session[SessionHelper.OrderProcessedListState] != null ? ( OrderProcessedListState )Session[SessionHelper.OrderProcessedListState] : new OrderProcessedListState();
                var orderDeliveredForReviewListState = Session[SessionHelper.OrderDeliveredForReviewListState] != null ? ( OrderDeliveredForReviewListState )Session[SessionHelper.OrderDeliveredForReviewListState] : new OrderDeliveredForReviewListState();
                var orderExceptionListState          = Session[SessionHelper.OrderExceptionListState] != null ? ( OrderExceptionListState )Session[SessionHelper.OrderExceptionListState] : new OrderExceptionListState();
                var mailRoomListState                = Session[SessionHelper.MailRoomListState] != null ? ( MailRoomListState )Session[SessionHelper.MailRoomListState] : new MailRoomListState();

                var dashboardRecordNumber                  = new LoanCenterDashboardNumberOfRecords();
                var cancelledBorrowerStatusFilter          = cancelListState.BorrowerStatusFilter == null ? null : cancelListState.BorrowerStatusFilter == BorrowerStatusType.Offline.GetStringValue() ? "0" : "1";
                var completedBorrowerStatusFilter          = completedListState.BorrowerStatusFilter == null ? null : completedListState.BorrowerStatusFilter == BorrowerStatusType.Offline.GetStringValue() ? "0" : "1";
                var pipelineBorrowerStatusFilter           = pipelineListState.BorrowerStatusFilter == null ? null : pipelineListState.BorrowerStatusFilter == BorrowerStatusType.Offline.GetStringValue() ? "0" : "1";
                var newLoanApplicationBorrowerStatusFilter = String.IsNullOrEmpty(newLoanApplicationListState.BorrowerStatusFilter)  ? String.Empty : newLoanApplicationListState.BorrowerStatusFilter == BorrowerStatusType.Offline.GetStringValue() ? "0" : "1";

                try
                {
                    dashboardRecordNumber = ContactServiceFacade.RetrieveDashboardNumberOfRecords(
                        userAccountIds, officerTaskListState.BoundDate, contactListState.BoundDate, pipelineListState.BoundDate,
                        pendingApprovalListState.ActivityType, newLoanApplicationListState.BoundDate, alertListState.BoundDate,
                        completedLoansListState.BoundDate, cancelLoansListState.BoundDate, preapprovalListState.BoundDate,
                        user.UserAccountId, searchValue, contactListState.ContactStatusFilter, alertListState.LoanPurposeFilter,
                        completedBorrowerStatusFilter, cancelledBorrowerStatusFilter, pipelineListState.LoanPurposeFilter,
                        pipelineListState.ActivityTypeFilter, pipelineBorrowerStatusFilter, alertListState.ActivityTypeFilter,
                        orderRequestedListState.BoundDate, orderRequestedListState.NonConforming, orderRequestedListState.OrderType,
                        orderRequestedListState.Rush, orderProcessedListState.BoundDate, orderProcessedListState.AppraisalOrderStatus,
                        orderDeliveredForReviewListState.BoundDate, orderDeliveredForReviewListState.AppraisalOrderStatus,
                        orderExceptionListState.BoundDate, orderExceptionListState.ExceptionType, userFilterViewModel.CompanyId,
                        userFilterViewModel.ChannelId, userFilterViewModel.DivisionId, userFilterViewModel.BranchId, contactListState.LoanPurposeFilter,
                        newLoanApplicationBorrowerStatusFilter, newLoanApplicationListState.LoanPurposeFilter,
                        mailRoomListState.BoundDate, mailRoomListState.DocumentTypeFilter, contactListState.ConciergeFilter);
                }
                catch (Exception ex)
                {
                    TraceHelper.Error(TraceCategory.Global, "Error in RefreshNumberOfRecordsInTabsAsync", ex);
                }
                if (dashboardRecordNumber != null)
                {
                    AsyncManager.Parameters["numberOfRecords"] = new[]
                    {
                        dashboardRecordNumber.TotalNumberOfTasks,
                        dashboardRecordNumber.TotalNumberOfContacts,
                        dashboardRecordNumber.TotalNumberOfPipelineItems,
                        dashboardRecordNumber.TotalNumberOfNewLoanApplicationItems,
                        dashboardRecordNumber.TotalNumberOfPendingApprovalItems,
                        dashboardRecordNumber.TotalNumberOfAlertItems,
                        dashboardRecordNumber.TotalNumberOfCompletedLoansItems,
                        dashboardRecordNumber.TotalNumberOfCancelLoansItems,
                        dashboardRecordNumber.TotalNumberOfPreApprovalItems,
                        dashboardRecordNumber.TotalNumberOfOrderRequestedItems,
                        dashboardRecordNumber.TotalNumberOfOrderProcessedItems,
                        dashboardRecordNumber.TotalNumberOfOrderDeliveredForReviewItems,
                        dashboardRecordNumber.TotalNumberOfOrderExceptionItems,
                        dashboardRecordNumber.TotalNumberOfMailRoomItems
                    }
                }
                ;
            });
        }