using System; using System.Linq; using System.Web.Mvc; using MileageTraker.Web.Attributes; using MileageTraker.Web.DAL; using MileageTraker.Web.Utility; using MileageTraker.Web.ViewModels.VehicleService; namespace MileageTraker.Web.Controllers { [Authorize(Roles = "Administrator, Developer")] public class VehicleServiceController : ControllerBase { public ActionResult Index(VehicleServiceQueryViewModel query) { var validVehicleServiceYearMonths = DataService.GetValidVehicleServiceMonths(); if (!validVehicleServiceYearMonths.Any()) // this means no logs in DB return View("Empty"); // default parameter processing query.SetDefaultParameters(validVehicleServiceYearMonths); var vehicleServices = DataService.FilterVehicleServices(DataService.GetVehicleServices(), query).ToList(); var viewModel = new VehicleServiceResultsViewModel( vehicleServices.Select(s => new VehicleServiceViewModel(s)), query, CustomExtensions.YearMonthList(validVehicleServiceYearMonths)); return View(viewModel); } [ActionLog] public ActionResult Export(VehicleServiceQueryViewModel query) { var validVehicleServiceYearMonths = DataService.GetValidVehicleServiceMonths(); if (!validVehicleServiceYearMonths.Any()) // this means no logs in DB return View("Empty"); // default parameter processing query.SetDefaultParameters(validVehicleServiceYearMonths); var vehicleServices = DataService.FilterVehicleServices(DataService.GetVehicleServices(), query).ToList(); var filteredServices = vehicleServices.Select(vs => new VehicleServiceViewModel(vs)); var name = string.Format("VehicleServices_{0}", query); var export = ExcelWriter.WriteXls(filteredServices, name, name); return File(export, "application/ms-excel", name + ".xls"); } 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); SetStatusMessage( string.Format("Vehicle Service for vehicle {0} created", viewModel.VehicleId), StatusType.Success); 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); SetStatusMessage("Changes saved for vehicle service " + vehicleService.Vehicle.VehicleId); return RedirectToAction("Details", new { id = vehicleService.VehicleServiceId }); } return View(viewModel); } public JsonResult ServiceCenterNameAutocomplete(string term) { var names = DataService.GetServiceCenterNamesAutocomplete(term); return Json(names, JsonRequestBehavior.AllowGet); } } }