public IActionResult AddNewReport(ServiceReport model) { if (HttpContext.Session.GetString("LoginID") == null) { return(RedirectToAction("Login", "Users")); } CentricsContext context = HttpContext.RequestServices.GetService(typeof(Centrics.Models.CentricsContext)) as CentricsContext; ViewData["Companies"] = context.GetClientByContract(); #region prepare for failure codes List <SelectListItem> PurposeList = new List <SelectListItem>(); PurposeList.Add(new SelectListItem { Value = "Project", Text = "Project" }); PurposeList.Add(new SelectListItem { Value = "Installation", Text = "Installation" }); PurposeList.Add(new SelectListItem { Value = "M.S.A", Text = "M.S.A" }); PurposeList.Add(new SelectListItem { Value = "Chargable", Text = "Chargable" }); PurposeList.Add(new SelectListItem { Value = "P.O.C", Text = "P.O.C" }); PurposeList.Add(new SelectListItem { Value = "Delivery", Text = "Delivery" }); PurposeList.Add(new SelectListItem { Value = "Return", Text = "Return" }); PurposeList.Add(new SelectListItem { Value = "Others", Text = "Others" }); ViewData["Purpose"] = PurposeList; List <SelectListItem> JobStatusList = new List <SelectListItem>(); JobStatusList.Add(new SelectListItem { Value = "Completed", Text = "Completed" }); JobStatusList.Add(new SelectListItem { Value = "Followup Required", Text = "Followup Required" }); JobStatusList.Add(new SelectListItem { Value = "Recommendation Requied", Text = "Recommendation Required" }); JobStatusList.Add(new SelectListItem { Value = "Escalated to Ext. Support", Text = "Escalated to Ext. Support" }); ViewData["JobStatusList"] = JobStatusList; model.SerialNumber = context.getReportCounts() + 1; string name = ""; if (((TempData.Peek("dataishere") != null).ToString().ToLower()) == "true") { name = TempData.Peek("dataishere").ToString(); } if (name != "") { ClientAddress cA = context.GetClientAddressList(name); List <string> aList = cA.Addresslist; List <SelectListItem> AddressList = new List <SelectListItem>(); if (aList != null) { for (int i = 0; i < aList.Count(); i++) { AddressList.Add(new SelectListItem { Value = aList[i], Text = aList[i] }); } } ViewData["AddressList"] = AddressList; } else { ModelState.AddModelError("", "A error occured. Important"); return(View(model)); } #endregion if (!ModelState.IsValid) { return(View(model)); } if (ModelState.IsValid) { double totalmshremain = context.GetRemainingMSHByCompany(model); double calculatedhours = context.CalculateMSH(model.TimeStart, model.TimeEnd); //for test purpose //ModelState.AddModelError("", "The calculated MSH:" + calculatedhours); //return View(model); if (totalmshremain < calculatedhours) { ModelState.AddModelError("", "The company you have selected does not have enough remaining MSH, Please contact your Boss immediately regarding this issue."); return(View(model)); } if (context.CheckExisitingReportID(model.SerialNumber)) { ModelState.AddModelError("", "Contact Application Developer"); return(View(model)); } if (model.TimeStart > DateTime.Now || model.TimeEnd > DateTime.Now) { ModelState.AddModelError("", "Please enter a report after the service is rendered"); return(View(model)); } if (!(model.TimeStart.CompareTo(model.TimeEnd) <= 0)) { ModelState.AddModelError("", "your start time should be before your end time"); return(View(model)); } User user = context.GetUser(Convert.ToInt32(HttpContext.Session.GetString("LoginID"))); model.ReportFrom = user.FirstName + user.LastName; context.AddServiceReport(model); context.LogAction("Service Report", "Service Report (SRN: " + model.SerialNumber + ") created for " + model.ClientCompanyName + " at " + model.ClientAddress + ".", context.GetUser(Convert.ToInt32(HttpContext.Session.GetString("LoginID")))); TempData.Remove("dataishere"); return(RedirectToAction("ViewReports", "ServiceReport")); } return(View(model)); }