public JsonResult SaveApproveStatus(InquiriesValidation form) { if (!AuthorizationProvider.IsInquiryEditor()) { string message = string.Format("User '{0}' does not have permission to save approval status for Inquiry {1}.", this.User.Identity.Name, form.Id.ToString()); DojoLogger.Warn(message, typeof(InquiryController)); return(Json("denied", JsonRequestBehavior.AllowGet)); } try { InquiryProvider inquiryProvider = new InquiryProvider(_dbContext); InquiriesValidation inquiry = inquiryProvider.Retrieve(form.Id); SetApproveFields(inquiry, form); inquiryProvider.Update(inquiry.Id, inquiry); inquiryProvider.Commit(); return(Json(form.Id.ToString(), JsonRequestBehavior.AllowGet)); } catch (Exception ex) { string message = string.Format("Save Apporval Ststus for Inquiry {0} fails. {1}", form.Id.ToString(), ex.Message + ex.StackTrace); DojoLogger.Error(message, typeof(InquiryController)); } return(Json(string.Empty, JsonRequestBehavior.AllowGet)); }
public PartialViewResult Approve(InquiriesValidation form) { try { InquiryProvider inquiryProvider = new InquiryProvider(_dbContext); PropertyProvider propertyProvider = new PropertyProvider(_dbContext); InquiriesValidation inquiry = inquiryProvider.Retrieve(form.Id); form.CPL = propertyProvider.Retrieve(inquiry.PropertyCode); inquiry.Doesitrequire2pricingteamapprovals = form.Doesitrequire2pricingteamapprovals; inquiry.PricingApprover1 = form.PricingApprover1; inquiry.PricingApprover2 = form.PricingApprover2; inquiry.PricingDecision1 = form.PricingDecision1; inquiry.PricingReason1 = form.PricingReason1; inquiry.ApprovedbyOwner = form.ApprovedbyOwner; inquiryProvider.Update(inquiry.Id, inquiry); inquiryProvider.Commit(); } catch (Exception ex) { // TODO: Log error this.ModelState.AddModelError("", ex); } return(PartialView("ApprovePartial", form)); }
public ActionResult Index(int id = 0) { var model = new InquiryViewModel(); // old Dojo logic gets all inquiries if id is not found. so emulate it here. model.InquiryId = id; if (id != 0) { InquiryProvider inquiryProvider = new InquiryProvider(_dbContext); InquiriesValidation inquiry = inquiryProvider.Retrieve(id); if (inquiry == null) { model.InquiryId = 0; } } model.UserName = this.User.Identity.Name; // hack here: for admin role, we set the UserName to 'DelegateDeletion' to allow admin to delete other's inquiry if (AuthorizationProvider.IsAdmin()) { model.UserName = "******"; } return(View(model)); }
public ActionResult ShortAdd() { ViewBag.Properties = (new PropertyProvider(_dbContext)).AggregatedProperties(); var model = new InquiriesValidation(); return(View(model)); }
public ActionResult Edit(int Id) { if (!AuthorizationProvider.IsInquiryEditor() && !AuthorizationProvider.IsViewer()) { string message = string.Format("User '{0}' does not have permission to edit Inquiry {1}.", this.User.Identity.Name, Id.ToString()); DojoLogger.Warn(message, typeof(InquiryController)); return(RedirectToAction("Index", "Inquiry") .WithError("It looks like you do not have permisssion to edit this inquiry.")); } try { ViewBag.Title = "Edit Inquiry"; ViewBag.ButtonText = "Update Inquiry"; InquiryProvider inquiryProvider = new InquiryProvider(_dbContext); PropertyProvider propertyProvider = new PropertyProvider(_dbContext); InquiriesValidation inquiry = inquiryProvider.Retrieve(Id); if (inquiry == null) { return(RedirectToAction("NotFound", "Error")); } ViewBag.Properties = propertyProvider.AggregatedProperties(); return(PartialView("EditPartial", inquiry)); } catch (Exception ex) { string message = string.Format("Retrieve Inquiry {0} for Editing fails. {1}", Id.ToString(), ex.Message + ex.StackTrace); DojoLogger.Error(message, typeof(InquiryController)); } return(RedirectToAction("Index", "Inquiry") .WithError("The inquiry item cannot be found.")); }
private void SetApproveFields(InquiriesValidation inquiry, InquiriesValidation form) { inquiry.Doesitrequire2pricingteamapprovals = form.Doesitrequire2pricingteamapprovals; inquiry.PricingApprover1 = form.PricingApprover1; inquiry.PricingApprover2 = form.PricingApprover2; inquiry.PricingDecision1 = form.PricingDecision1; inquiry.PricingReason1 = form.PricingReason1; inquiry.ApprovedbyOwner = form.ApprovedbyOwner; }
public ActionResult ShortAdd(InquiriesValidation inquiriesValidation) { var errors = inquiriesValidation.Validate(new ValidationContext(inquiriesValidation, null, null)); foreach (var error in errors) { foreach (var memberName in error.MemberNames) { ModelState.AddModelError(memberName, error.ErrorMessage); } } if (ModelState.IsValid) { var selectedProperty = _dbContext.CPLs.Find(inquiriesValidation.PropertyCode); inquiriesValidation.CPL = selectedProperty; inquiriesValidation.InquiryCreatedTimestamp = DateTime.Now; inquiriesValidation.Check_InDay = inquiriesValidation.Check_inDate.Value.DayOfWeek.ToString(); inquiriesValidation.Check_OutDay = inquiriesValidation.Check_outDate.Value.DayOfWeek.ToString(); if (inquiriesValidation.Check_outDate.HasValue) { inquiriesValidation.DaysOut = (inquiriesValidation.Check_inDate.Value - inquiriesValidation.InquiryCreatedTimestamp).Value.Days; } if (inquiriesValidation.Check_outDate.HasValue) { inquiriesValidation.LengthofStay = (inquiriesValidation.Check_outDate.Value - inquiriesValidation.Check_inDate).Value.Days; if (inquiriesValidation.LengthofStay == 0) { inquiriesValidation.LengthofStay = 1; } } inquiriesValidation.NightlyRate = (((inquiriesValidation.TotalPayout.Value / (decimal)0.97) - inquiriesValidation.CPL.CleaningFees) / inquiriesValidation.LengthofStay); if (selectedProperty.BeltDesignation != null && "black belt".Equals(selectedProperty.BeltDesignation.ToLower())) { inquiriesValidation.PricingApprover2 = "Pending Review"; } if (selectedProperty.NeedsOwnerApproval.HasValue && selectedProperty.NeedsOwnerApproval.Value) { inquiriesValidation.ApprovedbyOwner = "PENDING"; } else { inquiriesValidation.ApprovedbyOwner = "N\\A"; } _dbContext.InquiriesValidations.Add(inquiriesValidation); saveShowErrors(_dbContext); return(RedirectToAction("Index")); } ViewBag.Properties = (new PropertyProvider(_dbContext)).AggregatedProperties(); return(View(inquiriesValidation)); }
public ActionResult New() { ViewBag.Title = "New Inquiry"; ViewBag.ButtonText = "Add Inquiry"; ViewBag.Properties = (new PropertyProvider(_dbContext)).AggregatedProperties(); var inquiry = new InquiriesValidation(); inquiry.InquiryTeam = ViewBag.UserName; return(PartialView("EditPartial", inquiry)); }
public ActionResult OwnerApprovalInfo(int Id = 0) { InquiriesValidation ctvid = _dbContext.InquiriesValidations.Find(Id); if (ctvid == null) { return(RedirectToAction("NotFound", "Error")); } return(View(ctvid)); }
public ActionResult ShortEdit(int Id = 0) { ViewBag.Properties = (new PropertyProvider(_dbContext)).AggregatedProperties(); InquiriesValidation model = _dbContext.InquiriesValidations.Find(Id); if (model == null) { return(RedirectToAction("NotFound", "Error")); } return(View(model)); }
public ActionResult Information(int Id = 0) { ViewBag.PropertyCodes = _dbContext.CPLs.Select(x => new SelectListItem() { Text = x.PropertyCode, Value = x.PropertyCode }).ToList(); InquiriesValidation ctvid = _dbContext.InquiriesValidations.Find(Id); if (ctvid == null) { return(RedirectToAction("NotFound", "Error")); } return(PartialView(ctvid)); }
public ActionResult Approve(int Id) { if (!AuthorizationProvider.IsInquiryEditor() && !AuthorizationProvider.IsViewer()) { string message = string.Format("User '{0}' does not have permission to edit Inquiry {1}.", this.User.Identity.Name, Id.ToString()); DojoLogger.Warn(message, typeof(InquiryController)); return(RedirectToAction("Index", "Inquiry") .WithError("It looks like you do not have permisssion to edit this inquiry.")); } try { InquiryProvider inquiryProvider = new InquiryProvider(_dbContext); ViewBag.Title = "Approve Inquiry"; ViewBag.ButtonText = "Approve Inquiry"; InquiriesValidation inquiry = inquiryProvider.Retrieve(Id); if (inquiry == null) { return(RedirectToAction("NotFound", "Error")); } // get the owner approval flag (string constant defined in ListProvider) inquiry.OwnerApprovalNeeded = (inquiry.CPL.NeedsOwnerApproval != null && inquiry.CPL.NeedsOwnerApproval.Value) ? (inquiry.CPL.NeedsOwnerApproval.Value ? "YES" : "NO") : "N/A"; if (inquiry.PricingApprover1 == null) { inquiry.PricingApprover1 = ViewBag.UserName; } if (inquiry.PricingApprover2 == null) { inquiry.PricingApprover2 = ViewBag.UserName; } if (inquiry.PricingDecision1 == null) { inquiry.PricingDecision1 = string.Empty; } return(PartialView("ApprovePartial", inquiry)); } catch (Exception ex) { string message = string.Format("Retrieve Inquiry {0} for Approval fails. {1}", Id.ToString(), ex.Message + ex.StackTrace); DojoLogger.Error(message, typeof(InquiryController)); } return(PartialView("ApprovePartial", new InquiriesValidation())); }
private decimal?ComputeNightlyRate(InquiriesValidation inquiry) { decimal?nightlyRate = null; if (inquiry.LengthofStay != null && inquiry.LengthofStay.Value != 0 && inquiry.CPL != null) { if (inquiry.CPL.CleaningFees != null) { nightlyRate = ((inquiry.TotalPayout.Value / (decimal)0.97) - inquiry.CPL.CleaningFees.Value) / inquiry.LengthofStay; } else { nightlyRate = (inquiry.TotalPayout.Value / (decimal)0.97) / inquiry.LengthofStay; } } return(nightlyRate); }
public PartialViewResult Edit(InquiriesValidation form) { try { if (ModelState.IsValid) { InquiryProvider inquiryProvider = new InquiryProvider(_dbContext); inquiryProvider.Update(form.Id, form); inquiryProvider.Commit(); } } catch (Exception ex) { // TODO: Log error this.ModelState.AddModelError("", ex); } ViewBag.Accounts = (new AirbnbAccountProvider(_dbContext)).AggregatedAccounts(); ViewBag.Properties = (new PropertyProvider(_dbContext)).AggregatedProperties(); return(PartialView("EditPartial", form)); }
public ActionResult Property(int Id) { if (!AuthorizationProvider.IsViewer()) { return(PartialView("PropertyPartial", new InquiriesValidation())); } try { InquiryProvider inquiryProvider = new InquiryProvider(_dbContext); PropertyProvider propertyProvider = new PropertyProvider(_dbContext); ViewBag.Title = "View Property Information"; InquiriesValidation inquiry = inquiryProvider.Retrieve(Id); if (inquiry == null) { string message = string.Format("Inquiry {0} not found.", Id.ToString()); DojoLogger.Warn(message, typeof(InquiryController)); return(RedirectToAction("NotFound", "Error")); } // make up Airbnb property link if it does not already exist if (string.IsNullOrEmpty(inquiry.CPL.AirBnb) && !string.IsNullOrEmpty(inquiry.CPL.AIrBnBID)) { inquiry.CPL.AirBnb = string.Format(AppConstants.AIRBNB_URL_TEMPLATE, inquiry.CPL.AIrBnBID); } return(PartialView("PropertyPartial", inquiry)); } catch (Exception ex) { string message = string.Format("Retrieve Inquiry Property Info fails. {0}", ex.Message); DojoLogger.Error(message, typeof(InquiryController)); } return(RedirectToAction("Index", "Inquiry") .WithError("The inquiry item cannot be found.")); }
private void SetRelatedFields(InquiriesValidation inquiry) { if (inquiry.CPL == null) { inquiry.CPL = _dbContext.CPLs.Find(inquiry.PropertyCode); } inquiry.InquiryCreatedTimestamp = DateTime.Now; inquiry.Check_InDay = inquiry.Check_inDate.HasValue ? inquiry.Check_inDate.Value.DayOfWeek.ToString() : string.Empty; inquiry.Check_OutDay = inquiry.Check_outDate.HasValue ? inquiry.Check_outDate.Value.DayOfWeek.ToString() : string.Empty; if (inquiry.Check_inDate.HasValue) { inquiry.DaysOut = (inquiry.Check_inDate.Value - inquiry.InquiryCreatedTimestamp.Value).Days; if (inquiry.Check_outDate.HasValue) { inquiry.LengthofStay = (inquiry.Check_outDate.Value - inquiry.Check_inDate.Value).Days; } } inquiry.NightlyRate = ComputeNightlyRate(inquiry); if (inquiry.CPL != null) { if (inquiry.CPL.BeltDesignation != null && "black belt".Equals(inquiry.CPL.BeltDesignation.ToLower())) { inquiry.PricingApprover2 = "Pending Review"; } if (inquiry.CPL.NeedsOwnerApproval.HasValue && inquiry.CPL.NeedsOwnerApproval.Value) { inquiry.ApprovedbyOwner = "PENDING"; } else { inquiry.ApprovedbyOwner = "N/A"; } } }
private void SetRelatedFields(InquiriesValidation inquiry, InquiriesValidation form) { // use inquiry object as form may not have all the fields inquiry.PropertyCode = form.PropertyCode; inquiry.GuestName = form.GuestName; inquiry.InquiryTeam = form.InquiryTeam; inquiry.Channel = form.Channel; inquiry.TotalPayout = form.TotalPayout; inquiry.Check_inDate = form.Check_inDate; inquiry.Check_outDate = form.Check_outDate; inquiry.Weekdayorphandays = form.Weekdayorphandays; inquiry.AdditionalInfo_StatusofInquiry = form.AdditionalInfo_StatusofInquiry; if (inquiry.CPL == null) { inquiry.CPL = _dbContext.CPLs.Find(inquiry.PropertyCode); } if (form.Check_inDate != null) { inquiry.Check_InDay = form.Check_inDate.Value.DayOfWeek.ToString(); } if (form.Check_outDate != null) { inquiry.Check_OutDay = form.Check_outDate.Value.DayOfWeek.ToString(); inquiry.DaysOut = (form.Check_outDate.Value - inquiry.InquiryCreatedTimestamp).Value.Days; if (form.Check_inDate != null) { inquiry.LengthofStay = (form.Check_outDate.Value - form.Check_inDate.Value).Days; } else { inquiry.LengthofStay = null; } } inquiry.NightlyRate = ComputeNightlyRate(inquiry); }
public ActionResult OwnerApprovalInfo(InquiriesValidation inquiriesValidation) { try { InquiriesValidation strng = _dbContext.InquiriesValidations.Single(nc => nc.Id == inquiriesValidation.Id); var selectedProperty = _dbContext.CPLs.Find(strng.PropertyCode); strng.CPL = selectedProperty; strng.Doesitrequire2pricingteamapprovals = inquiriesValidation.Doesitrequire2pricingteamapprovals; strng.PricingApprover1 = inquiriesValidation.PricingApprover1; strng.PricingApprover2 = inquiriesValidation.PricingApprover2; strng.PricingDecision1 = inquiriesValidation.PricingDecision1; strng.PricingReason1 = inquiriesValidation.PricingReason1; strng.ApprovedbyOwner = inquiriesValidation.ApprovedbyOwner; _dbContext.SaveChanges(); return(RedirectToAction("Index")); } catch (Exception ex) { this.ModelState.AddModelError("", ex); return(View()); } }
public ActionResult ShortEdit(InquiriesValidation inquiriesValidation) { if (ModelState.IsValid) { InquiriesValidation strng = _dbContext.InquiriesValidations.Single(nc => nc.Id == inquiriesValidation.Id); var selectedProperty = _dbContext.CPLs.Find(inquiriesValidation.PropertyCode); strng.CPL = selectedProperty; strng.GuestName = inquiriesValidation.GuestName; strng.InquiryTeam = inquiriesValidation.InquiryTeam; strng.Channel = inquiriesValidation.Channel; strng.Check_inDate = inquiriesValidation.Check_inDate; strng.Check_outDate = inquiriesValidation.Check_outDate; strng.Weekdayorphandays = inquiriesValidation.Weekdayorphandays; strng.TotalPayout = inquiriesValidation.TotalPayout; strng.AdditionalInfo_StatusofInquiry = inquiriesValidation.AdditionalInfo_StatusofInquiry; strng.Check_InDay = inquiriesValidation.Check_inDate.Value.DayOfWeek.ToString(); strng.Check_OutDay = inquiriesValidation.Check_outDate.Value.DayOfWeek.ToString(); if (inquiriesValidation.Check_outDate != null) { strng.DaysOut = (inquiriesValidation.Check_outDate.Value - strng.InquiryCreatedTimestamp).Value.Days; } if (inquiriesValidation.Check_outDate != null) { strng.LengthofStay = (inquiriesValidation.Check_outDate.Value - inquiriesValidation.Check_inDate).Value.Days; } strng.NightlyRate = (((inquiriesValidation.TotalPayout.Value / (decimal)0.97) - strng.CPL.CleaningFees) / strng.LengthofStay); _dbContext.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.Properties = (new PropertyProvider(_dbContext)).AggregatedProperties(); return(View(inquiriesValidation)); }
public static InquiriesValidation ToInquiriesValidation(this string[] s) { InquiriesValidation IV = new InquiriesValidation(); //IV.IsUpload = true; TODO: check this one IV.GuestName = s[0]; IV.InquiryTeam = s[1]; IV.AirBnBListingTitle = s[2]; IV.PropertyCode = s[3]; IV.Channel = s[4]; IV.BookingGuidelines = s[5]; IV.AdditionalInfo_StatusofInquiry = s[6]; IV.AirBnBURL = s[7]; IV.Bedrooms = s[8].ToNullableInt32(); IV.Account = s[9]; IV.InquiryCreatedTimestamp = AddNulldableDate(s[10].ToDateTime(), s[11].ToDateTime()); //IV.InquiryTime__PST_ = s[11].ToDateTime(); IV.Check_inDate = s[12].ToDateTime(); IV.Check_InDay = s[13]; IV.Check_outDate = s[14].ToDateTime(); IV.Check_OutDay = s[15]; IV.TotalPayout = s[16].ToNullabledecimal(); IV.Weekdayorphandays = s[17].ToNullableInt32(); IV.DaysOutPoints = s[19].ToNullableInt32(); IV.LengthofStay = s[20].ToNullableInt32(); IV.LengthofStayPoints = s[21].ToNullableInt32(); IV.OpenWeekdaysPoints = s[22].ToNullableInt32(); IV.NightlyRate = s[23].ToNullabledecimal(); //IV.Cleaning_Fee = s[24].ToNullabledecimal(); IV.Doesitrequire2pricingteamapprovals = s[25]; //IV.DoesitrequireInquiryTeamLeadapproval = s[26]; IV.TotalPoints = s[27].ToNullableInt32(); IV.OwnerApprovalNeeded = s[28]; IV.ApprovedbyOwner = s[29]; IV.PricingApprover1 = s[31]; IV.PricingDecision1 = s[32]; IV.PricingReason1 = s[33]; //IV.PricingApprover2 = s[33]; //IV.PricingDecision2 = s[34]; //IV.PricingReason2 = s[35]; //IV.PricingTeamTimeStamp = s[36]; //IV.InquiryAge = s[37].ToNullableInt32(); //IV.Daystillcheckin = s[38]; //calculated if (IV.Check_inDate.HasValue && IV.InquiryCreatedTimestamp.HasValue) { IV.DaysOut = (int)(IV.Check_inDate.Value - IV.InquiryCreatedTimestamp.Value).TotalDays; } else { IV.DaysOut = s[18].ToNullableInt32(); } if (IV.Check_inDate.HasValue && IV.Check_outDate.HasValue) { IV.LengthofStay = (int)(IV.Check_outDate.Value - IV.Check_inDate.Value).TotalDays; } else { IV.LengthofStay = s[20].ToNullableInt32(); } return(IV); }
public JsonResult Save(InquiriesValidation form) { if (!AuthorizationProvider.IsInquiryEditor()) { string message = string.Format("User '{0}' does not have permission to save Inquiry {1}.", this.User.Identity.Name, form.Id.ToString()); DojoLogger.Warn(message, typeof(InquiryController)); return(Json("denied", JsonRequestBehavior.AllowGet)); } try { // treat checkin and checkout date as Hawaii time zone and covert it to UTC by adding 11 hours. if (form.Check_inDate != null) { form.Check_inDate = form.Check_inDate.Value.Date.AddHours(11); } if (form.Check_outDate != null) { form.Check_outDate = form.Check_outDate.Value.Date.AddHours(11); } InquiryProvider inquiryProvider = new InquiryProvider(_dbContext); string message = string.Format("saving inquiry: name: {0} team: {1} property: {2} checkin: {3} checkout: {4} payout: {5}", form.GuestName, form.InquiryTeam, (!string.IsNullOrEmpty(form.PropertyCode) ? form.PropertyCode : "Invalid"), (form.Check_inDate != null ? form.Check_inDate.Value.ToShortDateString() : "Invalid"), (form.Check_outDate != null ? form.Check_outDate.Value.ToShortDateString() : "Invalid"), (form.TotalPayout != null ? form.TotalPayout.Value.ToString() : "Invalid")); DojoLogger.Trace(message, typeof(InquiryController)); if (form.Id == 0) // new inquiry { if (inquiryProvider.Exist(form.PropertyCode, form.GuestName, form.Check_inDate.Value, form.Check_outDate.Value)) { Response.StatusCode = (int)System.Net.HttpStatusCode.Conflict; // code = 409 return(Json(string.Empty, JsonRequestBehavior.AllowGet)); } else { SetRelatedFields(form); inquiryProvider.Create(form); } } else // updating inquiry { InquiriesValidation inquiry = inquiryProvider.Retrieve(form.Id); SetRelatedFields(inquiry, form); // need to set CreatedBy and CreatedDate a they are not part of form form.CreatedDate = inquiry.CreatedDate; form.CreatedBy = inquiry.CreatedBy; inquiryProvider.Update(inquiry.Id, inquiry); } inquiryProvider.Commit(); // Id will be filled for new inquiry by EF PropertyProvider propertyProvider = new PropertyProvider(_dbContext); ViewBag.Properties = propertyProvider.AggregatedProperties(); return(Json(form.Id.ToString(), JsonRequestBehavior.AllowGet)); } catch (Exception ex) { string message = string.Format("Saving Inquiry {0} fails. {1}", form.Id.ToString(), ex.Message); DojoLogger.Error(message, typeof(InquiryController)); Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError; return(Json(string.Empty, JsonRequestBehavior.AllowGet)); } }
public ActionResult Upload(HttpPostedFileBase file) { try { List <string[]> csvRows = new List <string[]>(); if (file != null && file.ContentLength > 0) { // extract only the filename var fileName = Path.GetFileName(file.FileName); // store the file inside ~/App_Data/uploads folder var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), Guid.NewGuid().ToString() + "_" + fileName); file.SaveAs(path); using (var reader = new StreamReader(System.IO.File.OpenRead(path))) { var parser = new NetCSVParser(); var standartCollLength = reader.ReadLine().Split(',').Length; while (!reader.EndOfStream) { var line = reader.ReadToEnd(); line.Replace(",#N/A,", ",null,"); List <string[]> values = new List <string[]>(); values = parser.Parse(path, standartCollLength, ","); values.RemoveAt(0); csvRows = values; } } } if (csvRows.Count > 0) { int expectedLength = csvRows[0].Length; foreach (var item in csvRows) { if (item.Length != expectedLength) { throw new ArgumentException("CSV file is invalid"); } } } if (csvRows.Count() < 1) { throw new ArgumentException("File is empty or invalid"); } Dictionary <String, CPL> cplDictionary = _dbContext.CPLs.ToDictionary(x => x.PropertyCode); int skippedRows = 0; for (int i = 0; i < csvRows.Count; i++) { InquiriesValidation str = csvRows[i].ToInquiriesValidation(); if (!cplDictionary.ContainsKey(str.PropertyCode)) { skippedRows++; continue; } str.CPL = cplDictionary[str.PropertyCode]; _dbContext.InquiriesValidations.Add(str); } saveShowErrors(_dbContext); ViewBag.UploadMessage = "Data is succesfully uploaded." + (csvRows.Count - skippedRows) + " rows added, " + skippedRows + " rows skipped (no property code found)"; return(View()); } catch (Exception ex) { ViewBag.ErrorMessage = "Error while uploading data: " + ex.GetType().Name + "."; string message = ViewBag.ErrorMessage + ex.Message; RDTLogger.Info(message, typeof(InquiriesValidationController)); return(View()); } }