Vehicle Recall integrated into Vehicle Service

This commit is contained in:
2020-09-30 21:44:38 -04:00
parent 6f031c5cb6
commit 4b44128d62
18 changed files with 236 additions and 126 deletions
+45 -28
View File
@@ -27,7 +27,10 @@ namespace MileageTraker.Web.Controllers
// default parameter processing
query.SetDefaultParameters(validVehicleServiceYearMonths);
var vehicleServices = DataService.FilterVehicleServices(DataService.GetVehicleServices(), query).ToList();
var vehicleServices =
DataService
.FilterVehicleServices(DataService.GetVehicleServices(), query)
.ToList();
var upcomingServiceReminders =
DataService.GetUpcomingServiceReminders().ToList()
@@ -35,7 +38,7 @@ namespace MileageTraker.Web.Controllers
upcomingServiceReminders.Sort();
var viewModel = new VehicleServiceResultsViewModel(
vehicleServices.Select(s => new VehicleServiceViewModel(s)),
vehicleServices.Select(s => HydrateViewModel(new VehicleServiceViewModel(s), s.VehicleServiceId)),
upcomingServiceReminders,
query,
CustomExtensions.YearMonthList(validVehicleServiceYearMonths));
@@ -56,7 +59,7 @@ namespace MileageTraker.Web.Controllers
query.SetDefaultParameters(validVehicleServiceYearMonths);
var vehicleServices = DataService.FilterVehicleServices(DataService.GetVehicleServices(), query).ToList();
var filteredServices = vehicleServices.Select(vs => new VehicleServiceViewModel(vs));
var filteredServices = vehicleServices.Select(vs => HydrateViewModel(new VehicleServiceViewModel(vs), vs.VehicleServiceId));
var name = string.Format("VehicleServices_{0}", query);
@@ -73,18 +76,31 @@ namespace MileageTraker.Web.Controllers
}
[Authorize(Roles = "Administrator, Developer")]
public ActionResult Create()
{
return View(HydrateViewModel(new VehicleServiceViewModel()));
}
public ActionResult SelectVehicle()
{
return View();
}
[Authorize(Roles = "Administrator, Developer")]
[HttpGet]
[RequireRequestValue("vehicleId")]
public ActionResult Create(string vehicleId)
public ActionResult Create(string vehicleId, string vehicleRecallId)
{
return View(HydrateViewModel(new VehicleServiceViewModel(), vehicleId: vehicleId));
}
var viewModel = HydrateViewModel(new VehicleServiceViewModel(), vehicleId: vehicleId);
var recall = viewModel.VehicleRecall.Available.FirstOrDefault(r => r.Value == vehicleRecallId);
if (recall != null)
{
foreach (var selectListItem in viewModel.VehicleRecall.Available)
{
selectListItem.Selected = false;
}
recall.Selected = true;
viewModel.VehicleRecall.Selected = int.Parse(recall.Value);
}
return View(viewModel);
}
[HttpPost]
[RequireRequestValue("serviceVehicleId")]
@@ -97,25 +113,15 @@ namespace MileageTraker.Web.Controllers
int vehicleServiceId = Int32.MinValue, string vehicleId = null)
{
if (vehicleId != null)
{
viewModel.VehicleId = vehicleId;
}
viewModel.VehicleRecall
= new SelectListViewModel
{
Available = GetVehicleRecallSelectList(
viewModel.VehicleId,
vehicleServiceId)
};
viewModel.VehicleRecall.Selected =
viewModel.VehicleRecall.Available.SelectedValue != null
? (int?) int.Parse((string)viewModel.VehicleRecall.Available.SelectedValue)
: null;
viewModel.VehicleRecall
= GetVehicleRecallSelectList(viewModel.VehicleId, vehicleServiceId);
return viewModel;
}
private SelectList GetVehicleRecallSelectList(string vehicleId = null, int vehicleServiceId = Int32.MinValue)
private SelectListViewModel GetVehicleRecallSelectList(string vehicleId = null, int vehicleServiceId = Int32.MinValue)
{
var availableRecalls =
DataService.GetOpenVehicleRecalls(vehicleId).Union(DataService.GetVehicleRecallByServiceId(vehicleServiceId))
@@ -130,7 +136,16 @@ namespace MileageTraker.Web.Controllers
var selectedValue = availableRecalls.FirstOrDefault(vr => vr.Selected)?.Value ?? "0";
var selectList = new SelectList(availableRecalls, "Value", "Text", selectedValue);
return selectList;
var slvm = new SelectListViewModel
{
Available = selectList,
Selected =
selectList.SelectedValue != null
? (int?)int.Parse((string)selectList.SelectedValue)
: null
};
return slvm;
}
[HttpPost]
@@ -189,7 +204,7 @@ namespace MileageTraker.Web.Controllers
serviceReminder.Vehicle = vehicle;
DataService.AddServiceReminder(serviceReminder);
status.Add(string.Format("Service Reminder at {0} miles created", viewModel.TargetOdometer));
status.Add($"Service Reminder at {viewModel.TargetOdometer} miles created");
}
// handle any deletion
@@ -206,7 +221,9 @@ namespace MileageTraker.Web.Controllers
{
DataService.DeleteServiceReminder(serviceReminders[selected].id);
}
status.Add(string.Format("Selected {0} service reminders deleted", viewModel.DeleteServiceReminders.Selected.Count()));
status.Add(
$"Selected {viewModel.DeleteServiceReminders.Selected.Count()} " + $"" +
$"service reminder{(viewModel.DeleteServiceReminders.Selected.Count() > 2 ? "s" : "")} deleted");
}
if (status.Count > 0)