Add vehicle recall

This commit is contained in:
2020-09-20 22:07:13 -04:00
parent b5589103ec
commit 6f031c5cb6
34 changed files with 890 additions and 45 deletions
+67 -21
View File
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using MileageTraker.Web.Attributes;
@@ -68,55 +69,97 @@ namespace MileageTraker.Web.Controllers
{
var vehicleService = DataService.GetVehicleService(id);
var viewModel = new VehicleServiceViewModel(vehicleService);
return View(viewModel);
return View(HydrateViewModel(viewModel, vehicleServiceId : vehicleService.VehicleServiceId));
}
[Authorize(Roles = "Administrator, Developer")]
public ActionResult Create()
{
return View();
return View(HydrateViewModel(new VehicleServiceViewModel()));
}
[Authorize(Roles = "Administrator, Developer")]
[HttpGet]
[RequireRequestValue("vehicleId")]
public ActionResult Create(string vehicleId)
{
return View(new VehicleServiceViewModel{VehicleId = vehicleId});
{
return View(HydrateViewModel(new VehicleServiceViewModel(), vehicleId: vehicleId));
}
[HttpPost]
[RequireRequestValue("serviceVehicleId")]
public ActionResult CreateDriver(string serviceVehicleId)
{
return View ("Create", new VehicleServiceViewModel{VehicleId = serviceVehicleId });
return View ("Create", HydrateViewModel(new VehicleServiceViewModel(), vehicleId: serviceVehicleId));
}
[HttpPost]
private VehicleServiceViewModel HydrateViewModel(VehicleServiceViewModel viewModel,
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;
return viewModel;
}
private SelectList GetVehicleRecallSelectList(string vehicleId = null, int vehicleServiceId = Int32.MinValue)
{
var availableRecalls =
DataService.GetOpenVehicleRecalls(vehicleId).Union(DataService.GetVehicleRecallByServiceId(vehicleServiceId))
.Select(vr =>
new SelectListItem
{
Text = vr.Identifier,
Value = vr.VehicleRecallId.ToString(),
Selected = vr.CompletedService.VehicleServiceId == vehicleServiceId
}).ToList();
var selectedValue = availableRecalls.FirstOrDefault(vr => vr.Selected)?.Value ?? "0";
var selectList = new SelectList(availableRecalls, "Value", "Text", selectedValue);
return selectList;
}
[HttpPost]
[ActionLog]
public ActionResult Create(VehicleServiceViewModel viewModel)
{
if (ModelState.IsValid)
{
if (ModelState.IsValid)
{
var vehicleService = viewModel.GetVehicleService();
vehicleService.Vehicle = DataService.GetVehicle(viewModel.VehicleId);
DataService.AddVehicleService(vehicleService);
SetStatusMessage(
string.Format("Vehicle Service for vehicle {0} created", viewModel.VehicleId), StatusType.Success);
// update any recalls
DataService.UpdateVehicleRecallService(viewModel.VehicleRecall?.Selected ?? int.MinValue, vehicleService);
SetStatusMessage($"Vehicle Service for vehicle {viewModel.VehicleId} created", StatusType.Success);
return RedirectToAction("UpdateServiceReminders", new {vehicleId = viewModel.VehicleId});
}
return View(viewModel);
return View(HydrateViewModel(viewModel));
}
[HttpGet]
[HttpGet]
public ActionResult UpdateServiceReminders(string vehicleId)
{
var vehicle = DataService.GetVehicle(vehicleId);
var viewModel = new UpdateServiceRemindersViewModel { VehicleId = vehicleId };
var viewModel = new UpdateServiceRemindersViewModel { VehicleId = vehicleId};
RefreshServiceReminderViewModel(viewModel, vehicle, true);
@@ -208,9 +251,9 @@ namespace MileageTraker.Web.Controllers
[Authorize(Roles = "Administrator, Developer")]
public ActionResult Edit(int id)
{
var vehicleService = DataService.GetVehicleService(id);
var vehicleService = DataService.GetVehicleService(id);
var viewModel = new VehicleServiceViewModel(vehicleService);
return View(viewModel);
return View(HydrateViewModel(viewModel, vehicleServiceId: vehicleService.VehicleServiceId));
}
[Authorize(Roles = "Administrator, Developer")]
@@ -218,7 +261,7 @@ namespace MileageTraker.Web.Controllers
{
var vehicleService = DataService.GetVehicleService(id);
var viewModel = new VehicleServiceViewModel(vehicleService);
return View(viewModel);
return View(HydrateViewModel(viewModel, vehicleServiceId: vehicleService.VehicleServiceId));
}
[Authorize(Roles = "Administrator, Developer")]
@@ -237,16 +280,19 @@ namespace MileageTraker.Web.Controllers
[ActionLog]
public ActionResult Edit(VehicleServiceViewModel viewModel)
{
var vehicleService = viewModel.GetVehicleService();
if (ModelState.IsValid)
{
var vehicleService = viewModel.GetVehicleService();
vehicleService.Vehicle = DataService.GetVehicle(viewModel.VehicleId);
DataService.UpdateVehicleService(vehicleService);
SetStatusMessage("Changes saved for vehicle service " + vehicleService.Vehicle.VehicleId);
DataService.UpdateVehicleRecallService(viewModel.VehicleRecall?.Selected ?? int.MinValue, vehicleService);
SetStatusMessage("Changes saved for vehicle service " + vehicleService.Vehicle.VehicleId);
return RedirectToAction("Details", new { id = vehicleService.VehicleServiceId });
}
return View(viewModel);
return View(HydrateViewModel(viewModel, vehicleService.VehicleServiceId));
}
public JsonResult ServiceCenterNameAutocomplete(string term)