using System; using System.Linq; using System.Web.Mvc; using MileageTraker.Web.Attributes; using MileageTraker.Web.DAL; using MileageTraker.Web.Models; using MileageTraker.Web.ViewModels.Vehicle; namespace MileageTraker.Web.Controllers { [Authorize(Roles = "Administrator, Developer")] public class VehicleController : ControllerBase { public ViewResult Index(bool inactive = false) { var vehicles = DataService.GetVehicles().Where(v => v.InactiveDate.HasValue == inactive); var viewModel = new VehicleResultsViewModel(vehicles, inactive); return View(viewModel); } public ViewResult Details(string id) { var vehicle = DataService.GetVehicle(id); return View(vehicle); } public PartialViewResult DetailsPartial(string id) { var vehicle = DataService.GetVehicle(id); return PartialView(new VehiclePartialDetails(vehicle)); } public ActionResult Create() { return View(); } [HttpPost] [ActionLog] public ActionResult Create(Vehicle vehicle) { if (ModelState.IsValid) { DataService.AddVehicle(vehicle); TempData["StatusMessage"] = string.Format("Vehicle {0} created", vehicle.VehicleId); return RedirectToAction("Index"); } return View(vehicle); } public ActionResult Edit(string id) { var vehicle = DataService.GetVehicle(id); return View(vehicle); } [HttpPost] [ActionLog] public ActionResult Edit(Vehicle vehicle) { if (ModelState.IsValid) { DataService.UpdateVehicle(vehicle); TempData["StatusMessage"] = "Changes saved for vehicle " + vehicle.VehicleId; return RedirectToAction("Details", new { id = vehicle.VehicleId }); } return View(vehicle); } [AllowAnonymous] public JsonResult Exists(string vehicleId) { var vehicle = DataService.GetVehicle(vehicleId); return Json(vehicle != null, JsonRequestBehavior.AllowGet); } [ActionLog] public FileResult Export() { var vehicles = DataService.GetVehicles(); var export = VehicleImporter.Export(vehicles); return File(export, "application/ms-excel", string.Format("ETHRAVehicles{0:yyyy-MM-dd}.xls", DateTime.Today)); } [ActionLog] public ActionResult SetInactive(string id) { var vehicle = DataService.GetVehicle(id); if (vehicle.InactiveDate.HasValue) { TempData["StatusMessage"] = "Vehicle already inactive"; } else { vehicle.InactiveDate = DateTime.Now; DataService.UpdateVehicle(vehicle); TempData["StatusMessage"] = string.Format("Vehicle set inactive on {0:MM/dd/yyyy}", vehicle.InactiveDate.Value); } return RedirectToAction("Details", new {id}); } [ActionLog] public ActionResult SetActive(string id) { var vehicle = DataService.GetVehicle(id); if (!vehicle.InactiveDate.HasValue) { TempData["StatusMessage"] = "Vehicle is already active"; } else { vehicle.InactiveDate = null; DataService.UpdateVehicle(vehicle); TempData["StatusMessage"] = string.Format("Vehicle reactivated"); } return RedirectToAction("Details", new { id }); } } }