using System; using System.Linq; using System.Web.Mvc; using MileageTraker.Web.Attributes; using MileageTraker.Web.ViewModels.VehicleService; namespace MileageTraker.Web.Controllers { [Authorize(Roles = "Administrator, Developer")] public class VehicleServiceController : ControllerBase { public ActionResult Index(VehicleServiceQueryViewModel query) { var vehicleServices = DataService.GetVehicleServices().ToList(); var viewModel = new VehicleServiceResultsViewModel { ServiceItems = vehicleServices.Select(s => new VehicleServiceViewModel(s)) }; return View(viewModel); } public ViewResult Details(int id) { var vehicleService = DataService.GetVehicleService(id); var viewModel = new VehicleServiceViewModel(vehicleService); return View(viewModel); } public ActionResult Create() { return View(); } [HttpPost] [ActionLog] public ActionResult Create(VehicleServiceViewModel viewModel) { if (ModelState.IsValid) { var vehicleService = viewModel.GetVehicleService(); vehicleService.Vehicle = DataService.GetVehicle(viewModel.VehicleId); DataService.AddVehicleService(vehicleService); TempData["StatusMessage-Type"] = "alert-success"; TempData["StatusMessage"] = string.Format("Vehicle Service for vehicle {0} created", viewModel.VehicleId); return RedirectToAction("Index"); } return View(viewModel); } public ActionResult Edit(int id) { var vehicleService = DataService.GetVehicleService(id); var viewModel = new VehicleServiceViewModel(vehicleService); return View(viewModel); } [HttpPost] [ActionLog] public ActionResult Edit(VehicleServiceViewModel viewModel) { if (ModelState.IsValid) { var vehicleService = viewModel.GetVehicleService(); vehicleService.Vehicle = DataService.GetVehicle(viewModel.VehicleId); DataService.UpdateVehicleService(vehicleService); TempData["StatusMessage"] = "Changes saved for vehicle service " + vehicleService.Vehicle.VehicleId; return RedirectToAction("Details", new { id = vehicleService.VehicleServiceId }); } return View(viewModel); } } }