Files
MileageTraker/Web/Controllers/VehicleController.cs
T

124 lines
3.3 KiB
C#

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 =
(from v in DataService.GetVehicles().ToList()
where inactive == (v.InactiveDate.HasValue && v.InactiveDate.Value < DateTime.Today.AddDays(1))
select new VehicleViewModel(v)).ToList();
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);
SetStatusMessage(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);
SetStatusMessage("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)
{
SetStatusMessage("Vehicle already inactive");
}
else
{
vehicle.InactiveDate = DateTime.Now;
DataService.UpdateVehicle(vehicle);
SetStatusMessage(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)
{
SetStatusMessage("Vehicle is already active");
}
else
{
vehicle.InactiveDate = null;
DataService.UpdateVehicle(vehicle);
SetStatusMessage(string.Format("Vehicle reactivated"));
}
return RedirectToAction("Details", new { id });
}
}
}