122 lines
3.9 KiB
C#
122 lines
3.9 KiB
C#
using System.Linq;
|
|
using System.Web.Mvc;
|
|
using MileageTraker.Web.Attributes;
|
|
using MileageTraker.Web.Models;
|
|
using MileageTraker.Web.ViewModels.VehicleRecall;
|
|
|
|
namespace MileageTraker.Web.Controllers
|
|
{
|
|
[Authorize(Roles = "Administrator, Developer")]
|
|
public class VehicleRecallController : ControllerBase
|
|
{
|
|
public ActionResult Index(bool completed = false)
|
|
{
|
|
var vehicleRecalls =
|
|
DataService.GetVehicleRecalls()
|
|
.Where(vr =>
|
|
completed
|
|
? vr.CompletedService != null
|
|
: vr.CompletedService == null).ToList();
|
|
|
|
if (vehicleRecalls.Count == 0)
|
|
return View("Empty");
|
|
|
|
var recalls = vehicleRecalls.Select(vr => new VehicleRecallViewModel(vr));
|
|
|
|
var viewModel = new VehicleRecallResultsViewModel(recalls, completed);
|
|
|
|
return View(viewModel);
|
|
}
|
|
|
|
public ViewResult Details(int id)
|
|
{
|
|
var vehicleRecall = DataService.GetVehicleRecall(id);
|
|
var viewModel = new VehicleRecallViewModel(vehicleRecall);
|
|
return View(viewModel);
|
|
}
|
|
|
|
public ActionResult Create()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[HttpGet]
|
|
[RequireRequestValue("vehicleId")]
|
|
public ActionResult Create(string vehicleId)
|
|
{
|
|
return View(new VehicleRecallViewModel{VehicleId = vehicleId});
|
|
}
|
|
|
|
[HttpPost]
|
|
[ActionLog]
|
|
public ActionResult Create(VehicleRecallViewModel viewModel)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
var vehicleRecall = viewModel.GetVehicleRecall();
|
|
var vehicle = DataService.GetVehicle(viewModel.VehicleId);
|
|
|
|
vehicleRecall.Vehicle = vehicle;
|
|
DataService.AddVehicleRecall(vehicleRecall);
|
|
|
|
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");
|
|
}
|
|
|
|
return View(viewModel);
|
|
}
|
|
|
|
public ActionResult Edit(int id)
|
|
{
|
|
var vehicleRecall = DataService.GetVehicleRecall(id);
|
|
var viewModel = new VehicleRecallViewModel(vehicleRecall);
|
|
return View(viewModel);
|
|
}
|
|
|
|
public ActionResult Delete(int id)
|
|
{
|
|
var vehicleRecall = DataService.GetVehicleRecall(id);
|
|
var viewModel = new VehicleRecallViewModel(vehicleRecall);
|
|
return View(viewModel);
|
|
}
|
|
|
|
[HttpPost, ActionName("Delete")]
|
|
[ActionLog]
|
|
public ActionResult DeleteConfirmed(int id)
|
|
{
|
|
var vehicleRecall = DataService.GetVehicleRecall(id);
|
|
var vehicleVehicleId = vehicleRecall.Vehicle.VehicleId;
|
|
|
|
DataService.DeleteVehicleRecall(id);
|
|
|
|
SetStatusMessage($"Vehicle Recall \"{vehicleRecall.Identifier}\" for Vehicle ID {vehicleVehicleId} deleted");
|
|
return RedirectToAction("Index");
|
|
}
|
|
|
|
[HttpPost]
|
|
[ActionLog]
|
|
public ActionResult Edit(VehicleRecallViewModel viewModel)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
var vehicleRecall = viewModel.GetVehicleRecall();
|
|
vehicleRecall.Vehicle = DataService.GetVehicle(viewModel.VehicleId);
|
|
|
|
DataService.UpdateVehicleRecall(vehicleRecall);
|
|
SetStatusMessage("Changes saved for vehicle recall " + vehicleRecall.Vehicle.VehicleId);
|
|
return RedirectToAction("Details", new { id = vehicleRecall.VehicleRecallId });
|
|
}
|
|
return View(viewModel);
|
|
}
|
|
}
|
|
} |