/// <summary> /// Get phone numbers /// </summary> /// <param name="userAppraisalViewModel">Appraisal view model</param> private void LoadPhoneNumbers(AppraisalViewModel userAppraisalViewModel) { if (userAppraisalViewModel.Loan.Borrower != null) { foreach (PhoneNumber phoneNumber in userAppraisalViewModel.Loan.Borrower.PhoneNumbers) { switch (phoneNumber.PhoneNumberType) { case ( int )PhoneNumberType.Home: userAppraisalViewModel.HomePhone = phoneNumber.Number; break; case ( int )PhoneNumberType.Work: userAppraisalViewModel.WorkPhone = phoneNumber.Number; break; case ( int )PhoneNumberType.Cell: userAppraisalViewModel.CellPhone = phoneNumber.Number; break; } if (phoneNumber.Preferred) { userAppraisalViewModel.Preferred = phoneNumber.PhoneNumberType; } } } }
private void GetProductsAndFees(AppraisalViewModel userAppraisalViewModel, int position) { // Create request object AppraisalProductRequest request = new AppraisalProductRequest() { MortgageType = userAppraisalViewModel.Loan.MortgageType.GetStringValue(), EstimatedPropertyValue = ( double )userAppraisalViewModel.Loan.SubjectProperty.CurrentEstimatedValue, NoOfUnits = userAppraisalViewModel.Loan.SubjectProperty.NumberOfUnits.ToString(), OccupancyType = userAppraisalViewModel.Loan.SubjectProperty.OccupancyType.GetStringValue(), PropertyAddressCounty = userAppraisalViewModel.Loan.SubjectProperty.Address.CountyName, PropertyAddressState = userAppraisalViewModel.Loan.SubjectProperty.Address.StateName, PropertyType = userAppraisalViewModel.Loan.SubjectProperty.PropertyType.GetStringValue() }; // Call iMP platform var results = new Proxy().Send("GETAppraisalProductsWithFees", new Dictionary <string, object> { { "AppraisalProductRequest", request }, { "RequiresConversion", false } }); // Get results object responseMessageSuccess; results.TryGetValue("AppraisalProductResponse", out responseMessageSuccess); AppraisalProductResponse response = responseMessageSuccess as AppraisalProductResponse; if (response != null) { userAppraisalViewModel.Loan.OrderAppraisals[position].OrderAppraisalProductsFees = new List <OrderAppraisalProductFee>(); decimal totalFee = 0; foreach (ProductWithFee prod in response.Product) { OrderAppraisalProductFee orderAppraisalProductFee = new OrderAppraisalProductFee(); if (prod.ProductType != null) { orderAppraisalProductFee.ProductValue = prod.ProductType.Product.Value; orderAppraisalProductFee.ProductMessage = prod.ProductType.Message; orderAppraisalProductFee.ProductMessageStatus = prod.ProductType.Status; } if (prod.ProductFee != null) { orderAppraisalProductFee.FeeAmount = ( decimal )prod.ProductFee.Fee; orderAppraisalProductFee.FeeMessage = prod.ProductFee.Message; orderAppraisalProductFee.FeeMessageStatus = prod.ProductFee.Status; orderAppraisalProductFee.FeeComment = prod.ProductFee.Comment; totalFee += orderAppraisalProductFee.FeeAmount ?? 0; } userAppraisalViewModel.Loan.OrderAppraisals[position].OrderAppraisalProductsFees.Add(orderAppraisalProductFee); } userAppraisalViewModel.Loan.OrderAppraisals[position].PaymentAmount = totalFee; } }
public AppraisalView(AppraisalViewModel viewModel) { InitializeComponent(); this.Loaded += (s, e) => { this.DataContext = viewModel; }; }
private void LoadOrderAppraisalDataFull(AppraisalViewModel userAppraisalViewModel, UserAccount user) { // Create request object RetrieveOrderAppraisalDataFull request = new RetrieveOrderAppraisalDataFull() { LoanId = _loanId }; // Call iMP platform var results = new Proxy().Send("RetrieveOrderAppraisalWorkflow", new Dictionary <string, object> { { "Request", request } }); // Get results object responseMessageSuccess; results.TryGetValue("Response", out responseMessageSuccess); Loan loanWithAppraisals = responseMessageSuccess as Loan; if (loanWithAppraisals != null) { userAppraisalViewModel.Loan = loanWithAppraisals; if (userAppraisalViewModel.Loan.OrderAppraisals != null) { for (int i = 0; i < loanWithAppraisals.OrderAppraisals.Count; i++) { if (loanWithAppraisals.OrderAppraisals[i].OrderAppraisalProductsFees == null || loanWithAppraisals.OrderAppraisals[i].OrderAppraisalProductsFees.Count == 0) { GetProductsAndFees(userAppraisalViewModel, i); } else if (loanWithAppraisals.OrderAppraisals[i].OrderAppraisalProductsFees != null && loanWithAppraisals.OrderAppraisals[i].OrderAppraisalProductsFees.Count > 0) { //Split Appraisal Condition string loanWithAppraisals.OrderAppraisals[i].AppraisalCondition = loanWithAppraisals.OrderAppraisals[i].AppraisalCondition.SplitCamelCase(); } // Need to refactor this later we don't want to add empty fees in list var additionalItems = 7 - (loanWithAppraisals.OrderAppraisals[i].OrderAppraisalProductsFees != null ? loanWithAppraisals.OrderAppraisals[i].OrderAppraisalProductsFees.Count : 0); for (var j = 0; j < additionalItems; j++) { loanWithAppraisals.OrderAppraisals[i].OrderAppraisalProductsFees.Add(new OrderAppraisalProductFee()); } } userAppraisalViewModel.ActualInvestor = LoanServiceFacade.RetrieveInvestorName(userAppraisalViewModel.Loan.ProgramName).InvestorName; } } else { userAppraisalViewModel.Loan.OrderAppraisals.Add(new OrderAppraisalFull()); } }
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; } }
/// <summary> /// Get phone numbers /// </summary> /// <param name="userAppraisalViewModel">Appraisal view model</param> private void LoadBillingInformation(AppraisalViewModel userAppraisalViewModel, UserAccount user) { if (userAppraisalViewModel.Loan.Borrower != null) { if (!userAppraisalViewModel.BillingInformations.Any(bi => bi.Text == _genericItem.Text)) { userAppraisalViewModel.BillingInformations.Add(_genericItem); } //BillingInformationCollection billingInfos = UserAccountServiceFacade.GetBillingInfos( user.UserAccountId ); BillingInformationCollection billingInfos = UserAccountServiceFacade.GetBillingInfos(userAppraisalViewModel.Loan.Borrower.UserAccountId); foreach (BillingInformation billingInfo in billingInfos) { userAppraisalViewModel.BillingInformations.Add(new SelectListItem() { Text = billingInfo.CreditCardType.GetStringValue() + ", " + StringHelper.MaskCreditCard(billingInfo.CreditCardNumber), Value = billingInfo.BillingInformationid.ToString(), Selected = false }); } } }
private void LoadDisclosureSummary(AppraisalViewModel userAppraisalViewModel, Guid loanId, UserAccount user) { DisclosuresSummaryInfo disclosuresSummaryInfo = DocumentsServiceFacade.RetrieveDisclosuresSummaryInfo(loanId, user.UserAccountId); userAppraisalViewModel.DisclosuresSummaryInfo = disclosuresSummaryInfo; var channel = CompanyProfileServiceFacade.GetChannelByChannelId(userAppraisalViewModel.Loan.ChannelId); var activateOrderAppraisal = false; if (channel != null && channel.ActivateOrderAppraisalSettings != null) { switch (channel.ActivateOrderAppraisalSettings.DisclosuresESignTriggerType) { case (int)OrderAppraisalTriggerEnum.FirstIntentToProceed: IntegrationsSettings integrationSettings = LoanServiceFacade.RetrieveIntegrationsSettings(user.UserAccountId); activateOrderAppraisal = (disclosuresSummaryInfo.IntentToProceedReceivedBorrower != null && disclosuresSummaryInfo.IntentToProceedReceivedCoBorrower != null) || (disclosuresSummaryInfo.IntentToProceedReceivedBorrower != null && integrationSettings != null && !integrationSettings.AllBorrowersMustESign); break; case (int)OrderAppraisalTriggerEnum.LastIntentToProceed: activateOrderAppraisal = DocumentsServiceFacade.CheckItpSetForAllLoanApplications(loanId, user.UserAccountId); break; case (int)OrderAppraisalTriggerEnum.GFEandDisclosureActivity: var activity = ActivitiesServiceFacade.RetrieveActivity(loanId, ActivityType.ReviewDisclosures, user.UserAccountId); activateOrderAppraisal = channel.ActivateOrderAppraisalSettings.DisclosuresESignStatus == (int)ActivityStatus.Completed || channel.ActivateOrderAppraisalSettings.DisclosuresESignStatus == (int)ActivityStatus.Submitted; if (((int)activity.Status == channel.ActivateOrderAppraisalSettings.DisclosuresESignStatus && channel.ActivateOrderAppraisalSettings.DisclosuresESignStatus == (int)ActivityStatus.Submitted) || activity.Status == ActivityStatus.Completed) { activateOrderAppraisal = true; } break; } } userAppraisalViewModel.IsAppraisalDisabled = !activateOrderAppraisal; }
public async Task <JsonResult> SaveAppraisedItem(AppraisalViewModel item) { try { appraiseditem model = null; bool success = false; string message = ""; if (string.IsNullOrEmpty(item.AppraiseId.ToString()) || item.AppraiseId.ToString() == "0") { //DateTime dt = DateTime.ParseExact(item.AppraiseDate, "yyyy/MM/dd", CultureInfo.InvariantCulture); model = new appraiseditem(); model.AppraiseDate = DateTime.Parse(item.AppraiseDate); model.AppraiseNo = item.AppraiseNo; model.ItemTypeId = item.ItemTypeId; model.ItemCategoryId = item.ItemCategoryId; model.ItemName = item.ItemName; model.Weight = item.Weight; model.AppraisedValue = item.AppraisedValue; model.Remarks = item.Remarks; model.CustomerFirstName = item.CustomerFirstName; model.CustomerLastName = item.CustomerLastName; model.IsPawned = false; model.CreatedAt = DateTime.Now; model.CreatedBy = ""; var result = await _appraisalService.Save(model); success = result; if (result) { message = "Successfully saved."; } else { message = "Error saving data. Duplicate entry."; } } else { model = await _appraisalService.FindById(item.AppraiseId); model.ItemTypeId = item.ItemTypeId; model.ItemCategoryId = item.ItemCategoryId; model.ItemName = item.ItemName; model.Weight = item.Weight; model.AppraisedValue = item.AppraisedValue; model.Remarks = item.Remarks; model.CustomerFirstName = item.CustomerFirstName; model.CustomerLastName = item.CustomerLastName; var result = await _appraisalService.Update(model); success = result; if (result) { message = "Successfully updated."; } else { message = "Error saving data. Please contact administrator."; } } return(Json(new { success = success, message = message })); } catch (Exception ex) { throw new Exception(ex.Message); } }
public AppraisalViewModel GetAppraisalDocuments(Guid loanId, int userAccountId, ref AppraisalViewModel userAppraisalViewModel) { try { List <DocumentCategory> documentCategories = DocumentsServiceFacade.RetrieveDocumentCategoriesForClass(DocumentClass.VariousDocuments, loanId, userAccountId); if (documentCategories == null) { documentCategories = new List <DocumentCategory>(); } List <DocumentCategory> otherDocumentsCategories = DocumentsServiceFacade.RetrieveDocumentCategoriesForClass(DocumentClass.OtherDocuments, loanId, userAccountId); if (otherDocumentsCategories != null && otherDocumentsCategories.Where(x => x.IsAppraisalDocument) != null) { documentCategories.AddRange(otherDocumentsCategories.Where(x => x.IsAppraisalDocument).ToList()); } var listItems = new List <DropDownItem>(); foreach (DocumentCategory document in documentCategories) { listItems.Add(new DropDownItem() { Selected = false, Text = document.Name, Value = document.DocumentCategoryId.ToString() }); } userAppraisalViewModel.DocumentCategoryTypes = listItems; List <MML.Contracts.Document> documents = DocumentsServiceFacade.RetrieveLenderXDocuments(loanId, DocumentRole.Concierge, userAccountId); if (documents != null) { var tempDoc = documents.Where(x => x.Files != null && x.Files.Count > 0 && documentCategories.Contains(x.DocumentCategory)); if (tempDoc != null) { documents = tempDoc.ToList(); } foreach (MML.Contracts.Document document in documents) { if (document.Files.Where(x => x.LenderXFile != null).Count() < document.Files.Count) { foreach (UploadedFile file in document.Files) { if (file.LenderXFile == null) { file.LenderXFile = new LenderXFile(); } } } } userAppraisalViewModel.Documents = documents.OrderBy(x => x.Name).ToList(); } return(userAppraisalViewModel); } catch (Exception) { throw; } }
public void Execute() { SetCurrentCulture(); UserAccount user = null; if (_httpContext.Session["UserData"] != null) { user = ( UserAccount )_httpContext.Session["UserData"]; } else { user = UserAccountServiceFacade.GetUserByName(_httpContext.User.Identity.Name); } if (user == null) { throw new InvalidOperationException("User is null"); } /* parameter processing */ if (!InputParameters.ContainsKey("LoanId")) { throw new ArgumentException("LoanId was expected!"); } Guid.TryParse(InputParameters["LoanId"].ToString(), out _loanId); Int32 prospectId = 0; Int32.TryParse(InputParameters["ProspectId"].ToString(), out prospectId); /* Command processing */ // TODO: retrieve data from db and initialize view model AppraisalViewModel userAppraisalViewModel = new AppraisalViewModel(); //UserAccount details needed for displaying proper controls on view userAppraisalViewModel.UserAccount = user; // fill view model LoadOrderAppraisalDataFull(userAppraisalViewModel, user); LoadPhoneNumbers(userAppraisalViewModel); LoadLeadSourceInformation(userAppraisalViewModel, _loanId, prospectId, user); LoadBillingInformation(userAppraisalViewModel, user); LoadComboData(userAppraisalViewModel, user); LoadDisclosureSummary(userAppraisalViewModel, _loanId, user); userAppraisalViewModel.Documents = new List <Document>(); AppraisalDocumentsHelper appraisalDocumentsHelper = new AppraisalDocumentsHelper(); appraisalDocumentsHelper.GetAppraisalDocuments(_loanId, user.UserAccountId, ref userAppraisalViewModel); // Remove target investor from program name if (userAppraisalViewModel.Loan != null) { string loanProgramNoDoubleSpaces = userAppraisalViewModel.Loan.ProgramName != null?Regex.Replace(userAppraisalViewModel.Loan.ProgramName, @"\s+", " ") : String.Empty; string targetInvestorNoDoubleSpaces = userAppraisalViewModel.Loan.InvestorName != null?Regex.Replace(userAppraisalViewModel.Loan.InvestorName, @"\s+", " ") : String.Empty; if (!String.IsNullOrWhiteSpace(loanProgramNoDoubleSpaces) && !String.IsNullOrWhiteSpace(targetInvestorNoDoubleSpaces)) { // Filter out Program Name string loanProgram = String.Empty; if (loanProgramNoDoubleSpaces.ToLower().Contains(targetInvestorNoDoubleSpaces.ToLower())) { if (loanProgramNoDoubleSpaces.Length > targetInvestorNoDoubleSpaces.Length) { loanProgram = loanProgramNoDoubleSpaces.Substring(targetInvestorNoDoubleSpaces.Length, loanProgramNoDoubleSpaces.Length - targetInvestorNoDoubleSpaces.Length); if (loanProgram != null) { userAppraisalViewModel.Loan.ProgramName = loanProgram.Trim(); } } } // Show actual investor if loan is locked if (userAppraisalViewModel.Loan.LockStatus == LockStatus.Locked) { // Copy target investor into actual investor userAppraisalViewModel.Loan.InvestorName = targetInvestorNoDoubleSpaces; } } } _viewName = "_appraisalform"; _viewModel = userAppraisalViewModel; }
private void LoadComboData(AppraisalViewModel userAppraisalViewModel, UserAccount user) { userAppraisalViewModel.States.Clear(); userAppraisalViewModel.PropertyTypes.Clear(); userAppraisalViewModel.OcupancyTypes.Clear(); userAppraisalViewModel.PhoneTypes.Clear(); userAppraisalViewModel.CrediCardTypes.Clear(); userAppraisalViewModel.AppraisalAccessInfo.Clear(); userAppraisalViewModel.AppraisalProducts.Clear(); if (!userAppraisalViewModel.States.Any(s => s.Text == _genericItem.Text)) { userAppraisalViewModel.States.Add(_genericItem); } if (!userAppraisalViewModel.PropertyTypes.Any(pt => pt.Text == _genericItem.Text)) { userAppraisalViewModel.PropertyTypes.Add(_genericItem); } if (!userAppraisalViewModel.OcupancyTypes.Any(ot => ot.Text == _genericItem.Text)) { userAppraisalViewModel.OcupancyTypes.Add(_genericItem); } //if ( !userAppraisalViewModel.PhoneTypes.Any( ph => ph.Text == _genericItem.Text ) ) // userAppraisalViewModel.PhoneTypes.Add( _genericItem ); if (!userAppraisalViewModel.CrediCardTypes.Any(cc => cc.Text == _genericItem.Text)) { userAppraisalViewModel.CrediCardTypes.Add(_genericItem); } if (!userAppraisalViewModel.AppraisalAccessInfo.Any(aa => aa.Text == _genericItem.Text)) { userAppraisalViewModel.AppraisalAccessInfo.Add(_genericItem); } if (!userAppraisalViewModel.AppraisalProducts.Any(ap => ap.Text == _genericItem.Text)) { userAppraisalViewModel.AppraisalProducts.Add(_genericItem); } LookupCollection states = LookupServiceFacade.Lookup(LookupKeywords.States, user.UserAccountId); LookupCollection propertyTypes = LookupServiceFacade.Lookup(LookupKeywords.PropertyTypeSubjectProperty, user.UserAccountId); LookupCollection phoneTypes = LookupServiceFacade.Lookup(LookupKeywords.PhoneType, user.UserAccountId); LookupCollection crediCardTypes = LookupServiceFacade.Lookup(LookupKeywords.AppraisalCardTypes, user.UserAccountId); LookupCollection occupancyTypes = LookupServiceFacade.Lookup(LookupKeywords.OccupancyType, user.UserAccountId); LookupCollection appraisalAccessInfo; if (userAppraisalViewModel.Loan.LoanType == LoanTransactionType.Purchase) { appraisalAccessInfo = LookupServiceFacade.Lookup(LookupKeywords.AppraisalBusinessContactPurchase, user.UserAccountId); } else { appraisalAccessInfo = LookupServiceFacade.Lookup(LookupKeywords.AppraisalBusinessContactRefinance, user.UserAccountId); } foreach (var state in states) { userAppraisalViewModel.States.Add(new SelectListItem() { Text = state.Name, Value = state.Value.ToString(), //Selected = ( state.Value == userAppraisalViewModel.StateId ) Selected = (state.Value == userAppraisalViewModel.Loan.SubjectProperty.Address.StateId) }); } foreach (var propertyType in propertyTypes) { userAppraisalViewModel.PropertyTypes.Add(new SelectListItem() { Text = propertyType.Name, Value = propertyType.StringValue, //Selected = ( propertyType.Value == userAppraisalViewModel.PropertyTypeId ) Selected = (propertyType.Value == ( int )userAppraisalViewModel.Loan.SubjectProperty.PropertyType) }); } foreach (var ocupancyType in occupancyTypes) { userAppraisalViewModel.OcupancyTypes.Add(new SelectListItem() { Text = ocupancyType.Name, Value = ocupancyType.StringValue, //Selected = ( ocupancyType.Value == userAppraisalViewModel.OcupancyTypeId ) Selected = (ocupancyType.Value == ( int )userAppraisalViewModel.Loan.SubjectProperty.OccupancyType) }); } foreach (var phoneType in phoneTypes) { userAppraisalViewModel.PhoneTypes.Add(new SelectListItem() { Text = phoneType.Name, Value = phoneType.Value.ToString(), //Selected = ( phoneType.Value == userAppraisalViewModel.Loan.Borrower.PhoneNumbers.PhoneTypeId ) }); } foreach (var crediCardType in crediCardTypes) { userAppraisalViewModel.CrediCardTypes.Add(new SelectListItem() { Text = crediCardType.Name, Value = crediCardType.Value.ToString(), //Selected = ( crediCardType.Value == (int)userAppraisalViewModel.OrderAppraisals[0].BillingInformation.CreditCardType ) }); } foreach (var appraisalAccess in appraisalAccessInfo) { userAppraisalViewModel.AppraisalAccessInfo.Add(new SelectListItem() { Text = appraisalAccess.Name, Value = appraisalAccess.Value.ToString(), Selected = (appraisalAccess.Value == userAppraisalViewModel.AppraisalAccessInfoId) }); } //Years userAppraisalViewModel.Years.Add(new SelectListItem() { Text = "(Select year)", Value = "-1", Selected = true }); int now = DateTime.Now.Year; if (userAppraisalViewModel != null && userAppraisalViewModel.Loan != null && userAppraisalViewModel.Loan.OrderAppraisals != null && userAppraisalViewModel.Loan.OrderAppraisals.Count > 0 && userAppraisalViewModel.Loan.OrderAppraisals[0].BillingInformation != null && userAppraisalViewModel.Loan.OrderAppraisals[0].BillingInformation.ExpirationDate != null && userAppraisalViewModel.Loan.OrderAppraisals[0].BillingInformation.ExpirationDate > DateTime.MinValue && userAppraisalViewModel.Loan.OrderAppraisals[0].BillingInformation.ExpirationDate.Year < now) { userAppraisalViewModel.Years.FirstOrDefault(x => x.Selected).Selected = false; userAppraisalViewModel.Years.Add(new SelectListItem() { Text = (userAppraisalViewModel.Loan.OrderAppraisals[0].BillingInformation.ExpirationDate.Year).ToString(), Value = (userAppraisalViewModel.Loan.OrderAppraisals[0].BillingInformation.ExpirationDate.Year).ToString(), Selected = true }); } for (int i = 0; i < 11; i++) { userAppraisalViewModel.Years.Add(new SelectListItem() { Text = (now + i).ToString(), Value = (now + i).ToString(), Selected = false }); } //Products var products = ProductServiceFacade.RetrieveProducts(new RetrieveProducts() { ProductId = null }); if (products != null) { foreach (var product in products) { userAppraisalViewModel.AppraisalProducts.Add(new SelectListItem() { Text = product.Name, Value = product.Value }); } } }