Vehicle Recall integrated into Vehicle Service
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using MileageTraker.Web.Attributes;
|
||||
using MileageTraker.Web.DAL;
|
||||
using MileageTraker.Web.Utility;
|
||||
using MileageTraker.Web.ViewModels.ServiceReminder;
|
||||
using MileageTraker.Web.Models;
|
||||
using MileageTraker.Web.ViewModels.VehicleRecall;
|
||||
|
||||
namespace MileageTraker.Web.Controllers
|
||||
@@ -11,14 +9,21 @@ namespace MileageTraker.Web.Controllers
|
||||
[Authorize(Roles = "Administrator, Developer")]
|
||||
public class VehicleRecallController : ControllerBase
|
||||
{
|
||||
public ActionResult Index()
|
||||
public ActionResult Index(bool completed = false)
|
||||
{
|
||||
var vehicleRecalls = DataService.GetOpenVehicleRecalls().ToList();
|
||||
var vehicleRecalls =
|
||||
DataService.GetVehicleRecalls()
|
||||
.Where(vr =>
|
||||
completed
|
||||
? vr.CompletedService != null
|
||||
: vr.CompletedService == null).ToList();
|
||||
|
||||
if (vehicleRecalls.Count == 0)
|
||||
return View("Empty");
|
||||
|
||||
var viewModel = vehicleRecalls.Select(vr => new VehicleRecallViewModel(vr));
|
||||
var recalls = vehicleRecalls.Select(vr => new VehicleRecallViewModel(vr));
|
||||
|
||||
var viewModel = new VehicleRecallResultsViewModel(recalls, completed);
|
||||
|
||||
return View(viewModel);
|
||||
}
|
||||
@@ -49,12 +54,22 @@ namespace MileageTraker.Web.Controllers
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var vehicleRecall = viewModel.GetVehicleRecall();
|
||||
var vehicle = DataService.GetVehicle(viewModel.VehicleId);
|
||||
|
||||
vehicleRecall.Vehicle = DataService.GetVehicle(viewModel.VehicleId);
|
||||
vehicleRecall.Vehicle = vehicle;
|
||||
DataService.AddVehicleRecall(vehicleRecall);
|
||||
|
||||
SetStatusMessage(
|
||||
string.Format("Vehicle Recall for vehicle {0} created", viewModel.VehicleId), StatusType.Success);
|
||||
var serviceReminder
|
||||
= new ServiceReminder
|
||||
{
|
||||
Vehicle = vehicle,
|
||||
TargetOdometer = vehicle.CurrentOdometer ?? 0,
|
||||
Description = $"Recall: {vehicleRecall.Identifier}, {vehicleRecall.Description}"
|
||||
};
|
||||
|
||||
DataService.AddServiceReminder(serviceReminder);
|
||||
|
||||
SetStatusMessage($"Vehicle Recall for vehicle {viewModel.VehicleId} created, Service Reminder also created", StatusType.Success);
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
@@ -79,9 +94,12 @@ namespace MileageTraker.Web.Controllers
|
||||
[ActionLog]
|
||||
public ActionResult DeleteConfirmed(int id)
|
||||
{
|
||||
DataService.DeleteVehicleRecall(id);
|
||||
var vehicleRecall = DataService.GetVehicleRecall(id);
|
||||
var vehicleVehicleId = vehicleRecall.Vehicle.VehicleId;
|
||||
|
||||
SetStatusMessage("Vehicle Recall deleted");
|
||||
DataService.DeleteVehicleRecall(id);
|
||||
|
||||
SetStatusMessage($"Vehicle Recall \"{vehicleRecall.Identifier}\" for Vehicle ID {vehicleVehicleId} deleted");
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user