Add and delete service reminders
This commit is contained in:
@@ -0,0 +1,67 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -63,6 +63,7 @@ namespace MileageTraker.Web.Controllers
|
|||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
[RequireRequestValue("vehicleId")]
|
[RequireRequestValue("vehicleId")]
|
||||||
public ActionResult Create(string vehicleId)
|
public ActionResult Create(string vehicleId)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -877,5 +877,38 @@ namespace MileageTraker.Web.DAL
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Service Reminder
|
||||||
|
public void AddServiceReminder(ServiceReminder serviceReminder)
|
||||||
|
{
|
||||||
|
_db.ServiceReminders.Add(serviceReminder);
|
||||||
|
_db.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateServiceReminder(ServiceReminder serviceReminder)
|
||||||
|
{
|
||||||
|
_db.Entry(serviceReminder).State = EntityState.Modified;
|
||||||
|
_db.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IQueryable<ServiceReminder> GetServiceReminders(string vehicleId)
|
||||||
|
{
|
||||||
|
var serviceReminders = _db.ServiceReminders.Where(sr => sr.Vehicle.VehicleId == vehicleId);
|
||||||
|
return serviceReminders;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServiceReminder GetServiceReminder(int id)
|
||||||
|
{
|
||||||
|
return _db.ServiceReminders.Find(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteServiceReminder(int id)
|
||||||
|
{
|
||||||
|
var serviceReminder = _db.ServiceReminders.Find(id);
|
||||||
|
|
||||||
|
_db.ServiceReminders.Remove(serviceReminder);
|
||||||
|
_db.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@ namespace MileageTraker.Web.Models
|
|||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[InputSize("small")]
|
[InputSize("small")]
|
||||||
[Units("$")]
|
[Currency]
|
||||||
public decimal Price { get; set; }
|
public decimal Price { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace MileageTraker.Web.ViewModels.ServiceReminder
|
||||||
|
{
|
||||||
|
public class ServiceReminderResultsViewModel
|
||||||
|
{
|
||||||
|
public IEnumerable<ServiceReminderViewModel> ServiceReminderItems { get; set; }
|
||||||
|
public string VehicleId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Web.Mvc;
|
||||||
|
using AutoMapper;
|
||||||
|
using MileageTraker.Web.Attributes;
|
||||||
|
|
||||||
|
namespace MileageTraker.Web.ViewModels.ServiceReminder
|
||||||
|
{
|
||||||
|
public class ServiceReminderViewModel
|
||||||
|
{
|
||||||
|
[HiddenInput(DisplayValue = false)]
|
||||||
|
public int? ServiceReminderId { get; set; }
|
||||||
|
|
||||||
|
[HiddenInput(DisplayValue = false)]
|
||||||
|
[Required]
|
||||||
|
[Remote("Exists", "Vehicle", ErrorMessage = "ID not found")]
|
||||||
|
[StringLength(6, MinimumLength = 4, ErrorMessage = "Must be at least a 4 digit number")]
|
||||||
|
[Display(Name = "Vehicle ID")]
|
||||||
|
[RegularExpression(@"\d+", ErrorMessage = "Vehicle ID must be all numbers")]
|
||||||
|
[InputSize("mini")]
|
||||||
|
public string VehicleId { get; set; }
|
||||||
|
|
||||||
|
[InputSize("small")]
|
||||||
|
public int TargetOdometer { get; set; }
|
||||||
|
|
||||||
|
[StringLength(64)]
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
static ServiceReminderViewModel()
|
||||||
|
{
|
||||||
|
Mapper.CreateMap<ServiceReminderViewModel, Models.ServiceReminder>();
|
||||||
|
Mapper.CreateMap<Models.ServiceReminder, ServiceReminderViewModel>()
|
||||||
|
.ForMember(dest => dest.VehicleId, opt => opt.MapFrom(src => src.Vehicle.VehicleId));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServiceReminderViewModel(Models.ServiceReminder serviceReminder)
|
||||||
|
{
|
||||||
|
Mapper.Map(serviceReminder, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServiceReminderViewModel()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public Models.ServiceReminder GetServiceReminder()
|
||||||
|
{
|
||||||
|
var serviceReminder = new Models.ServiceReminder();
|
||||||
|
Mapper.Map(this, serviceReminder);
|
||||||
|
return serviceReminder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
@model MileageTraker.Web.ViewModels.ServiceReminder.ServiceReminderViewModel
|
||||||
|
|
||||||
|
@{
|
||||||
|
ViewBag.Title = "Create Vehicle Service Reminder";
|
||||||
|
}
|
||||||
|
|
||||||
|
<h2 class="center-content"><i class="fa fa-clock-o"></i> @ViewBag.Title</h2>
|
||||||
|
|
||||||
|
@using (Html.BeginForm("Create", "ServiceReminder", FormMethod.Post, new { @class = "form-horizontal well center-content" }))
|
||||||
|
{
|
||||||
|
@Html.Partial("_ValidationSummary")
|
||||||
|
<fieldset>
|
||||||
|
<legend></legend>
|
||||||
|
@Html.EditorForModel()
|
||||||
|
<div class="form-actions">
|
||||||
|
<input type="submit" value="Create" class="btn btn-primary" />
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
@model MileageTraker.Web.ViewModels.ServiceReminder.ServiceReminderViewModel
|
||||||
|
|
||||||
|
@{
|
||||||
|
ViewBag.Title = "Vehicle Service Reminder Details" ;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Html.Partial("_StatusMessage")
|
||||||
|
|
||||||
|
<h2 class="center-content"><i class="fa fa-clock-o"></i> @ViewBag.Title</h2>
|
||||||
|
<div class="center-content well">
|
||||||
|
@Html.DisplayForModel()
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="center-content btn-toolbar">
|
||||||
|
@Html.ActionLink("Edit", "Edit", new { id = Model.ServiceReminderId }, new { @class = "btn" })
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
@model MileageTraker.Web.ViewModels.ServiceReminder.ServiceReminderViewModel
|
||||||
|
|
||||||
|
@{
|
||||||
|
ViewBag.Title = "Edit Vehicle Service Reminder";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Html.Partial("_StatusMessage")
|
||||||
|
|
||||||
|
<h2 class="center-content"><i class="fa fa-clock-o"></i> @ViewBag.Title</h2>
|
||||||
|
|
||||||
|
@using (Html.BeginForm("Edit", "ServiceREminder", FormMethod.Post, new { @class = "form-horizontal well center-content" }))
|
||||||
|
{
|
||||||
|
@Html.Partial("_ValidationSummary")
|
||||||
|
<fieldset>
|
||||||
|
<legend></legend>
|
||||||
|
@Html.EditorForModel()
|
||||||
|
<div class="form-actions">
|
||||||
|
<input type="submit" value="Save" class="btn btn-primary" />
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
@model MileageTraker.Web.ViewModels.ServiceReminder.ServiceReminderResultsViewModel
|
||||||
|
|
||||||
|
@{
|
||||||
|
ViewBag.Title = "Vehicle Service Reminders for Vehicle Id " + Model.VehicleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Html.Partial("_StatusMessage")
|
||||||
|
|
||||||
|
<h2 id="vehicle-title"><i class="fa fa-clock-o"></i> @ViewBag.Title</h2>
|
||||||
|
|
||||||
|
<div class="center-content">
|
||||||
|
@foreach (var item in Model.ServiceReminderItems)
|
||||||
|
{
|
||||||
|
Html.RenderPartial("ServiceReminderViewModel", item);
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="btn-toolbar center-content well">
|
||||||
|
@Html.ActionLink("Add Service Reminder", "Create", new { vehicleId = Model.VehicleId }, new{@class="btn"})
|
||||||
|
@Html.ActionLink("Vehicle Details", "Details", "Vehicle", new { id = Model.VehicleId }, new{@class="btn"})
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
@model MileageTraker.Web.ViewModels.ServiceReminder.ServiceReminderViewModel
|
||||||
|
|
||||||
|
<div class="well">
|
||||||
|
<h3>Service Reminder</h3>
|
||||||
|
@Html.DisplayForModel()
|
||||||
|
<div class='btn-toolbar'>
|
||||||
|
@Html.ActionLink("Edit", "Edit", new { id = Model.ServiceReminderId }, new { @class = "btn" })
|
||||||
|
@Html.ActionLink("Delete", "Delete", new { id = Model.ServiceReminderId }, new { @class = "btn" })
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
grid.Column(format:
|
grid.Column(format:
|
||||||
@<div class='btn-group'>
|
@<div class='btn-group'>
|
||||||
@*Html.ActionLink("Edit", "Edit", new { id = item.UserId }, new { @class = "btn btn-mini" })*@
|
@*Html.ActionLink("Edit", "Edit", new { id = item.UserId }, new { @class = "btn btn-mini" })*@
|
||||||
@Html.ActionLink("Details / Edit", "Details", new { id = item.UserId }, new { @class = "btn btn-mini" })
|
@Html.ActionLink("Details", "Details", new { id = item.UserId }, new { @class = "btn btn-mini" })
|
||||||
</div>)
|
</div>)
|
||||||
),
|
),
|
||||||
htmlAttributes: new { @class = "table table-striped table-bordered table-hover table-condensed"},
|
htmlAttributes: new { @class = "table table-striped table-bordered table-hover table-condensed"},
|
||||||
|
|||||||
@@ -28,6 +28,18 @@
|
|||||||
{
|
{
|
||||||
@Html.ActionLink("Reactivate", "SetActive", new {id = Model.VehicleId}, new {@class = "btn"})
|
@Html.ActionLink("Reactivate", "SetActive", new {id = Model.VehicleId}, new {@class = "btn"})
|
||||||
}
|
}
|
||||||
@Html.ActionLink("Add Completed Service", "Create", "VehicleService", new { VehicleId = Model.VehicleId }, new { @class = "btn" })
|
<div class="btn-group">
|
||||||
|
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
|
||||||
|
Services <span class="caret"></span>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li>
|
||||||
|
@Html.ActionLink("View Service Reminders", "Index", "ServiceReminder", new { VehicleId = Model.VehicleId }, null)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
@Html.ActionLink("Add Completed Service", "Create", "VehicleService", new { VehicleId = Model.VehicleId }, null)
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
@Html.ActionLink("Logs", "Index", "Log", new { Model.VehicleId}, new { @class = "btn" })
|
@Html.ActionLink("Logs", "Index", "Log", new { Model.VehicleId}, new { @class = "btn" })
|
||||||
</div>
|
</div>
|
||||||
@@ -90,8 +90,8 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class='btn-group'>
|
<div class='btn-group'>
|
||||||
@Html.ActionLink("Edit", "Edit", new { id = item.VehicleId }, new { @class = "btn btn-mini" })
|
|
||||||
@Html.ActionLink("Details", "Details", new { id = item.VehicleId }, new { @class = "btn btn-mini" })
|
@Html.ActionLink("Details", "Details", new { id = item.VehicleId }, new { @class = "btn btn-mini" })
|
||||||
|
@Html.ActionLink("Svc Reminder", "Index", "ServiceReminder", new { vehicleId = item.VehicleId }, new { @class = "btn btn-mini" })
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -13,4 +13,5 @@
|
|||||||
|
|
||||||
<div class="center-content btn-toolbar">
|
<div class="center-content btn-toolbar">
|
||||||
@Html.ActionLink("Edit", "Edit", new { id = Model.VehicleServiceId }, new { @class = "btn" })
|
@Html.ActionLink("Edit", "Edit", new { id = Model.VehicleServiceId }, new { @class = "btn" })
|
||||||
|
@Html.ActionLink("Vehicle Details", "Details", "Vehicle", new { id = Model.VehicleId }, new{@class="btn"})
|
||||||
</div>
|
</div>
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
grid.Column("Description", "Description"),
|
grid.Column("Description", "Description"),
|
||||||
grid.Column(format:
|
grid.Column(format:
|
||||||
@<div class='btn-group'>
|
@<div class='btn-group'>
|
||||||
@Html.ActionLink("Details / Edit", "Details", new { id = item.VehicleServiceId }, new { @class = "btn btn-mini" })
|
@Html.ActionLink("Details", "Details", new { id = item.VehicleServiceId }, new { @class = "btn btn-mini" })
|
||||||
</div>)
|
</div>)
|
||||||
),
|
),
|
||||||
htmlAttributes: new { @class = "table table-striped table-bordered table-hover table-condensed"},
|
htmlAttributes: new { @class = "table table-striped table-bordered table-hover table-condensed"},
|
||||||
|
|||||||
@@ -147,6 +147,7 @@
|
|||||||
<Compile Include="Controllers\CityController.cs" />
|
<Compile Include="Controllers\CityController.cs" />
|
||||||
<Compile Include="Controllers\ControllerBase.cs" />
|
<Compile Include="Controllers\ControllerBase.cs" />
|
||||||
<Compile Include="Controllers\FuelLogController.cs" />
|
<Compile Include="Controllers\FuelLogController.cs" />
|
||||||
|
<Compile Include="Controllers\ServiceReminderController.cs" />
|
||||||
<Compile Include="Controllers\VehicleServiceController.cs" />
|
<Compile Include="Controllers\VehicleServiceController.cs" />
|
||||||
<Compile Include="Controllers\PurposeController.cs" />
|
<Compile Include="Controllers\PurposeController.cs" />
|
||||||
<Compile Include="Controllers\UserController.cs" />
|
<Compile Include="Controllers\UserController.cs" />
|
||||||
@@ -262,6 +263,8 @@
|
|||||||
<Compile Include="ViewModels\Log\LogPartialDetails.cs" />
|
<Compile Include="ViewModels\Log\LogPartialDetails.cs" />
|
||||||
<Compile Include="Models\VehicleService.cs" />
|
<Compile Include="Models\VehicleService.cs" />
|
||||||
<Compile Include="ViewModels\DateQueryViewModel.cs" />
|
<Compile Include="ViewModels\DateQueryViewModel.cs" />
|
||||||
|
<Compile Include="ViewModels\ServiceReminder\ServiceReminderViewModel.cs" />
|
||||||
|
<Compile Include="ViewModels\ServiceReminder\ServiceReminderResultsViewModel.cs" />
|
||||||
<Compile Include="ViewModels\VehicleService\VehicleServiceQueryViewModel.cs" />
|
<Compile Include="ViewModels\VehicleService\VehicleServiceQueryViewModel.cs" />
|
||||||
<Compile Include="ViewModels\VehicleService\VehicleServiceResultsViewModel.cs" />
|
<Compile Include="ViewModels\VehicleService\VehicleServiceResultsViewModel.cs" />
|
||||||
<Compile Include="ViewModels\VehicleService\VehicleServiceViewModel.cs" />
|
<Compile Include="ViewModels\VehicleService\VehicleServiceViewModel.cs" />
|
||||||
@@ -342,6 +345,11 @@
|
|||||||
<Content Include="Views\VehicleService\Details.cshtml" />
|
<Content Include="Views\VehicleService\Details.cshtml" />
|
||||||
<Content Include="Views\Shared\EditorTemplates\VehicleServiceResultsViewModel.cshtml" />
|
<Content Include="Views\Shared\EditorTemplates\VehicleServiceResultsViewModel.cshtml" />
|
||||||
<Content Include="Views\VehicleService\Empty.cshtml" />
|
<Content Include="Views\VehicleService\Empty.cshtml" />
|
||||||
|
<Content Include="Views\ServiceReminder\Create.cshtml" />
|
||||||
|
<Content Include="Views\ServiceReminder\Details.cshtml" />
|
||||||
|
<Content Include="Views\ServiceReminder\Edit.cshtml" />
|
||||||
|
<Content Include="Views\ServiceReminder\Index.cshtml" />
|
||||||
|
<Content Include="Views\ServiceReminder\ServiceReminderViewModel.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Content\Account.Login.css" />
|
<Content Include="Content\Account.Login.css" />
|
||||||
|
|||||||
Reference in New Issue
Block a user