Exemple #1
0
        public void Execute()
        {
            //bool hasPrivilegeForManagingQueues = ( base.HttpContext.Session[ SessionHelper.PrivilegeForManagingQueues ] is bool && ( bool )base.HttpContext.Session[ SessionHelper.PrivilegeForManagingQueues ] );

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

            Guid loanId = Guid.Parse(InputParameters["LoanId"].ToString().TrimEnd());

            UserAccount user = null;

            if (_httpContext.Session[SessionHelper.UserData] != null)
            {
                user = ( UserAccount )_httpContext.Session[SessionHelper.UserData];
            }

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

            var assignLoanInfoViewModel = new AssignLoanInfoViewModel {
                LosFolders = new List <LosFolder>()
            };
            bool    importToLosInProgress   = LoanServiceFacade.ImportToFNMInProgress(loanId);
            Boolean userCanChangeLoanNumber = UserAccountServiceFacade.IsUserAuthorizedForAction(user.UserAccountId, ActionCategory.ChangeLoanNumber);

            if (loan != null)
            {
                assignLoanInfoViewModel = new AssignLoanInfoViewModel
                {
                    ConciergeId           = loan.ConciergeId,
                    EnableDigitalDocsCall = loan.EnableDigitalDocsCall,
                    LoanId                  = loan.LoanId,
                    LoanNumber              = loan.LoanNumber,
                    LoaId                   = loan.LoaId,
                    LosFolders              = LoanServiceFacade.RetrieveLosFolders(user.UserAccountId).OrderBy(l => l.FolderName).ToList(),
                    ImportToLosInProgress   = importToLosInProgress,
                    UserCanChangeLoanNumber = userCanChangeLoanNumber,
                    CompanyId               = loan.CompanyId != Guid.Empty ? loan.CompanyId.ToString() : "0",
                    ChannelId               = loan.ChannelId != null ? (Int32)loan.ChannelId : 0,
                    DivisionId              = loan.DivisionId != null ? (Int32)loan.DivisionId : 0,
                    BranchId                = loan.BranchId != Guid.Empty ? ( Guid )loan.BranchId : Guid.Empty,
                    CallCenterId            = loan.CallCenterId
                };
            }


            var losFolder = LoanServiceFacade.RetrieveLosFolder(loanId, user.UserAccountId);

            if (!String.IsNullOrEmpty(losFolder))
            {
                assignLoanInfoViewModel.LosFolder = losFolder;
            }
            else
            {
                String defaultLosFolder = LoanServiceFacade.RetrieveDefaultLosFolder(user.UserAccountId);

                if (!String.IsNullOrEmpty(defaultLosFolder))
                {
                    assignLoanInfoViewModel.LosFolder = defaultLosFolder;
                }
            }

            var isLoa = false;

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

            LoadCompanies(assignLoanInfoViewModel);

            LoadChannels(assignLoanInfoViewModel);

            LoadDivisions(assignLoanInfoViewModel);

            LoadBranches(assignLoanInfoViewModel);

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

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

            LoadCallCenterList(assignLoanInfoViewModel, loan);

            if (user.Roles.Any(r => r.RoleName.Equals(RoleName.Administrator)))
            {
                //base.HttpContext.Session[ SessionHelper.UserAccountIds ] = null;
                // start filling user filters by loading companies
            }
            else if (user.Roles.Any(r => r.RoleName.Equals(RoleName.BranchManager)) || user.Roles.Any(r => r.RoleName.Equals(RoleName.TeamLeader)))
            {
                // load only related users
                //LoadRelatedUsers( assignLoanInfoViewModel, base.User );
            }

            var currentStep = LoanServiceFacade.RetrieveCurrentActivityNameAndLoanStatus(loanId, user.UserAccountId);

            assignLoanInfoViewModel.EnableDownload = (currentStep != null ? currentStep.PositionIndex > 1 : false);

            var urlaDeliveryMethod = new List <DropDownItem>();

            urlaDeliveryMethod.Add(new DropDownItem()
            {
                Selected = true, Text = "FannieMae32", Value = "0"
            });
            urlaDeliveryMethod.Add(new DropDownItem()
            {
                Selected = false, Text = "Mismo23", Value = "1"
            });
            assignLoanInfoViewModel.DownloadLink       = String.Format("/Downloader.axd?documentType=urla&loanId={0}&selectedFormatValue=0", _httpContext.Server.UrlEncode(EncryptionHelper.EncryptRijndael(loanId.ToString(), EncriptionKeys.Default)));
            assignLoanInfoViewModel.UrlaDeliveryMethod = urlaDeliveryMethod;
            if (currentStep != null)
            {
                assignLoanInfoViewModel.ActivityName = currentStep.ActivityName;
            }

            var leadSourceInformation = LoanServiceFacade.RetrieveHearAboutUs(loanId);

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

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

            _viewName  = "_assignloaninfo";
            _viewModel = assignLoanInfoViewModel;

            /* Persist new state */
            HttpContext.Session[SessionHelper.AssignLoanInfo] = assignLoanInfoViewModel.ToXml();
        }
        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();
        }