Files
MileageTraker/Web/Controllers/VehicleRecallController.cs
T

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);
}
}
}