Service reminder implemented.
This commit is contained in:
@@ -21,22 +21,6 @@ namespace MileageTraker.Web.Controllers
|
||||
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);
|
||||
@@ -45,6 +29,24 @@ namespace MileageTraker.Web.Controllers
|
||||
return RedirectToAction("Index", new { vehicleId });
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[RequireRequestValue("vehicleId")]
|
||||
public ActionResult Create(string vehicleId)
|
||||
{
|
||||
var vehicle = DataService.GetVehicle(vehicleId);
|
||||
|
||||
var viewModel = new ServiceReminderViewModel
|
||||
{
|
||||
VehicleId = vehicleId,
|
||||
CurrentOdometer = vehicle.CurrentOdometer
|
||||
};
|
||||
|
||||
if (vehicle.CurrentOdometer.HasValue)
|
||||
viewModel.TargetOdometer = vehicle.CurrentOdometer.Value + 4000;
|
||||
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ActionLog]
|
||||
public ActionResult Create(ServiceReminderViewModel viewModel)
|
||||
@@ -54,6 +56,7 @@ namespace MileageTraker.Web.Controllers
|
||||
var serviceReminder = viewModel.GetServiceReminder();
|
||||
|
||||
serviceReminder.Vehicle = DataService.GetVehicle(viewModel.VehicleId);
|
||||
|
||||
DataService.AddServiceReminder(serviceReminder);
|
||||
|
||||
SetStatusMessage(
|
||||
@@ -63,5 +66,33 @@ namespace MileageTraker.Web.Controllers
|
||||
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public ActionResult Edit(int id)
|
||||
{
|
||||
var serviceReminder = DataService.GetServiceReminder(id);
|
||||
var viewModel = new ServiceReminderViewModel(serviceReminder);
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ActionLog]
|
||||
public ActionResult Edit(ServiceReminderViewModel viewModel)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var serviceReminder = viewModel.GetServiceReminder();
|
||||
|
||||
serviceReminder.Vehicle = DataService.GetVehicle(viewModel.VehicleId);
|
||||
|
||||
DataService.UpdateServiceReminder(serviceReminder);
|
||||
|
||||
SetStatusMessage(
|
||||
string.Format("Service Reminder at {0} miles updated", viewModel.TargetOdometer), StatusType.Success);
|
||||
return RedirectToAction("Index", new {vehicleId = viewModel.VehicleId});
|
||||
}
|
||||
|
||||
return View(viewModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,11 @@ namespace MileageTraker.Web.Controllers
|
||||
{
|
||||
public ViewResult Index(bool inactive = false)
|
||||
{
|
||||
var vehicles = DataService.GetVehicles().Where(v => inactive == (v.InactiveDate.HasValue && v.InactiveDate.Value < DateTime.Today.AddDays(1)));
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using MileageTraker.Web.Attributes;
|
||||
using MileageTraker.Web.DAL;
|
||||
using MileageTraker.Web.Models;
|
||||
using MileageTraker.Web.Utility;
|
||||
using MileageTraker.Web.ViewModels;
|
||||
using MileageTraker.Web.ViewModels.ServiceReminder;
|
||||
using MileageTraker.Web.ViewModels.VehicleService;
|
||||
|
||||
namespace MileageTraker.Web.Controllers
|
||||
@@ -23,10 +26,16 @@ namespace MileageTraker.Web.Controllers
|
||||
|
||||
var vehicleServices = DataService.FilterVehicleServices(DataService.GetVehicleServices(), query).ToList();
|
||||
|
||||
var upcomingServiceReminders =
|
||||
DataService.GetUpcomingServiceReminders().ToList()
|
||||
.Select(sr => new ServiceReminderViewModel(sr)).ToList();
|
||||
upcomingServiceReminders.Sort();
|
||||
|
||||
var viewModel = new VehicleServiceResultsViewModel(
|
||||
vehicleServices.Select(s => new VehicleServiceViewModel(s)),
|
||||
query,
|
||||
CustomExtensions.YearMonthList(validVehicleServiceYearMonths));
|
||||
vehicleServices.Select(s => new VehicleServiceViewModel(s)),
|
||||
upcomingServiceReminders,
|
||||
query,
|
||||
CustomExtensions.YearMonthList(validVehicleServiceYearMonths));
|
||||
|
||||
return View(viewModel);
|
||||
}
|
||||
@@ -78,18 +87,104 @@ namespace MileageTraker.Web.Controllers
|
||||
{
|
||||
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("UpdateServiceReminders", new {vehicleId = viewModel.VehicleId});
|
||||
}
|
||||
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public ActionResult UpdateServiceReminders(string vehicleId)
|
||||
{
|
||||
var vehicle = DataService.GetVehicle(vehicleId);
|
||||
|
||||
var viewModel = new UpdateServiceRemindersViewModel { VehicleId = vehicleId };
|
||||
|
||||
RefreshServiceReminderViewModel(viewModel, vehicle, true);
|
||||
|
||||
if (vehicle.CurrentOdometer.HasValue)
|
||||
viewModel.TargetOdometer = vehicle.CurrentOdometer.Value + 4000;
|
||||
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ActionLog]
|
||||
public ActionResult UpdateServiceReminders(UpdateServiceRemindersViewModel viewModel)
|
||||
{
|
||||
var vehicle = DataService.GetVehicle(viewModel.VehicleId);
|
||||
|
||||
RefreshServiceReminderViewModel(viewModel, vehicle); // this data doesn't get posted back
|
||||
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var serviceReminder = viewModel.GetServiceReminder();
|
||||
|
||||
var status = new List<string>();
|
||||
|
||||
// handle the new service reminder
|
||||
if (serviceReminder != null)
|
||||
{
|
||||
serviceReminder.Vehicle = vehicle;
|
||||
|
||||
DataService.AddServiceReminder(serviceReminder);
|
||||
status.Add(string.Format("Service Reminder at {0} miles created", viewModel.TargetOdometer));
|
||||
}
|
||||
|
||||
// handle any deletion
|
||||
if (viewModel.DeleteServiceReminders != null
|
||||
&& viewModel.DeleteServiceReminders.Selected != null
|
||||
&& viewModel.DeleteServiceReminders.Selected.Length > 0)
|
||||
{
|
||||
var serviceReminders =
|
||||
(from sr in vehicle.ServiceReminders
|
||||
select new { format = UpdateServiceRemindersViewModel.FormatServiceReminder(sr), id = sr.ServiceReminderId })
|
||||
.ToDictionary(o => o.format);
|
||||
|
||||
foreach (var selected in viewModel.DeleteServiceReminders.Selected)
|
||||
{
|
||||
DataService.DeleteServiceReminder(serviceReminders[selected].id);
|
||||
}
|
||||
status.Add(string.Format("Selected {0} service reminders deleted", viewModel.DeleteServiceReminders.Selected.Count()));
|
||||
}
|
||||
|
||||
if (status.Count > 0)
|
||||
{
|
||||
SetStatusMessage(string.Join(", ", status), StatusType.Success);
|
||||
}
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
private void RefreshServiceReminderViewModel(
|
||||
UpdateServiceRemindersViewModel viewModel, Vehicle vehicle, bool setDefaultSelectedServiceReminders = false)
|
||||
{
|
||||
if (viewModel.DeleteServiceReminders == null)
|
||||
viewModel.DeleteServiceReminders = new CheckBoxViewModel();
|
||||
|
||||
var existingServiceReminders =
|
||||
(from sr in vehicle.ServiceReminders
|
||||
select UpdateServiceRemindersViewModel.FormatServiceReminder(sr)).ToArray();
|
||||
|
||||
viewModel.DeleteServiceReminders.Available = existingServiceReminders;
|
||||
viewModel.CurrentOdometer = vehicle.CurrentOdometer;
|
||||
|
||||
if (vehicle.CurrentOdometer.HasValue && setDefaultSelectedServiceReminders)
|
||||
{
|
||||
viewModel.DeleteServiceReminders.Selected =
|
||||
(from sr in vehicle.ServiceReminders
|
||||
where sr.TargetOdometer <= vehicle.CurrentOdometer.Value
|
||||
select UpdateServiceRemindersViewModel.FormatServiceReminder(sr)).ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
public ActionResult Edit(int id)
|
||||
{
|
||||
var vehicleService = DataService.GetVehicleService(id);
|
||||
|
||||
Reference in New Issue
Block a user