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();
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[RequireRequestValue("vehicleId")]
|
||||
public ActionResult Create(string vehicleId)
|
||||
{
|
||||
|
||||
@@ -877,5 +877,38 @@ namespace MileageTraker.Web.DAL
|
||||
|
||||
#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]
|
||||
[InputSize("small")]
|
||||
[Units("$")]
|
||||
[Currency]
|
||||
public decimal Price { get; set; }
|
||||
|
||||
[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:
|
||||
@<div class='btn-group'>
|
||||
@*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>)
|
||||
),
|
||||
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("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" })
|
||||
</div>
|
||||
@@ -90,8 +90,8 @@
|
||||
</td>
|
||||
<td>
|
||||
<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("Svc Reminder", "Index", "ServiceReminder", new { vehicleId = item.VehicleId }, new { @class = "btn btn-mini" })
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -13,4 +13,5 @@
|
||||
|
||||
<div class="center-content btn-toolbar">
|
||||
@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>
|
||||
@@ -42,7 +42,7 @@
|
||||
grid.Column("Description", "Description"),
|
||||
grid.Column(format:
|
||||
@<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>)
|
||||
),
|
||||
htmlAttributes: new { @class = "table table-striped table-bordered table-hover table-condensed"},
|
||||
|
||||
@@ -147,6 +147,7 @@
|
||||
<Compile Include="Controllers\CityController.cs" />
|
||||
<Compile Include="Controllers\ControllerBase.cs" />
|
||||
<Compile Include="Controllers\FuelLogController.cs" />
|
||||
<Compile Include="Controllers\ServiceReminderController.cs" />
|
||||
<Compile Include="Controllers\VehicleServiceController.cs" />
|
||||
<Compile Include="Controllers\PurposeController.cs" />
|
||||
<Compile Include="Controllers\UserController.cs" />
|
||||
@@ -262,6 +263,8 @@
|
||||
<Compile Include="ViewModels\Log\LogPartialDetails.cs" />
|
||||
<Compile Include="Models\VehicleService.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\VehicleServiceResultsViewModel.cs" />
|
||||
<Compile Include="ViewModels\VehicleService\VehicleServiceViewModel.cs" />
|
||||
@@ -342,6 +345,11 @@
|
||||
<Content Include="Views\VehicleService\Details.cshtml" />
|
||||
<Content Include="Views\Shared\EditorTemplates\VehicleServiceResultsViewModel.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>
|
||||
<Content Include="Content\Account.Login.css" />
|
||||
|
||||
Reference in New Issue
Block a user