using System; using System.Linq; using System.Web.Mvc; using MileageTraker.Web.Attributes; using MileageTraker.Web.ViewModels.ServiceReminder; namespace MileageTraker.Web.Controllers { [Authorize(Roles = "Administrator, Developer")] public class ServiceReminderController : ControllerBase { [RequireRequestValue("vehicleId")] public ActionResult Index(string vehicleId) { var serviceReminders = DataService.GetServiceReminders(vehicleId).ToList(); var viewModel = new ServiceReminderResultsViewModel { ServiceReminderItems = serviceReminders.Select(sr => new ServiceReminderViewModel(sr)), VehicleId = vehicleId }; return View(viewModel); } [HttpGet] [RequireRequestValue("vehicleId")] public ActionResult Create(string vehicleId) { var viewModel = new ServiceReminderViewModel { VehicleId = vehicleId, }; var vehicle = DataService.GetVehicle(vehicleId); if (vehicle.CurrentOdometer.HasValue) viewModel.TargetOdometer = (int) (Math.Ceiling((decimal) ((vehicle.CurrentOdometer.Value + 3000)/1000))*1000); return View(viewModel); } public ActionResult Delete(int id) { var serviceReminder = DataService.GetServiceReminder(id); var vehicleId = serviceReminder.Vehicle.VehicleId; DataService.DeleteServiceReminder(id); return RedirectToAction("Index", new { vehicleId }); } [HttpPost] [ActionLog] public ActionResult Create(ServiceReminderViewModel viewModel) { if (ModelState.IsValid) { var serviceReminder = viewModel.GetServiceReminder(); serviceReminder.Vehicle = DataService.GetVehicle(viewModel.VehicleId); DataService.AddServiceReminder(serviceReminder); SetStatusMessage( string.Format("Service Reminder at {0} miles created", viewModel.TargetOdometer), StatusType.Success); return RedirectToAction("Index", new {vehicleId = viewModel.VehicleId}); } return View(viewModel); } } }