Vehicle Service added for drivers

This commit is contained in:
2020-08-26 21:46:12 -04:00
parent 1acee219a9
commit c58cc951d8
6 changed files with 100 additions and 6 deletions
+5 -2
View File
@@ -75,9 +75,12 @@ namespace MileageTraker.Web.Controllers
} }
[AllowAnonymous] [AllowAnonymous]
public JsonResult Exists(string vehicleId) public JsonResult Exists(string vehicleId, string serviceVehicleId)
{ {
var vehicle = DataService.GetVehicle(vehicleId); var vehicle =
vehicleId != null
? DataService.GetVehicle(vehicleId)
: DataService.GetVehicle(serviceVehicleId);
return Json(vehicle != null, JsonRequestBehavior.AllowGet); return Json(vehicle != null, JsonRequestBehavior.AllowGet);
} }
+26 -3
View File
@@ -12,9 +12,10 @@ using MileageTraker.Web.ViewModels.VehicleService;
namespace MileageTraker.Web.Controllers namespace MileageTraker.Web.Controllers
{ {
[Authorize(Roles = "Administrator, Developer")] [Authorize(Roles = "Administrator, Developer, Driver")]
public class VehicleServiceController : ControllerBase public class VehicleServiceController : ControllerBase
{ {
[Authorize(Roles = "Administrator, Developer")]
public ActionResult Index(VehicleServiceQueryViewModel query) public ActionResult Index(VehicleServiceQueryViewModel query)
{ {
var validVehicleServiceYearMonths = DataService.GetValidVehicleServiceMonths(); var validVehicleServiceYearMonths = DataService.GetValidVehicleServiceMonths();
@@ -41,6 +42,7 @@ namespace MileageTraker.Web.Controllers
return View(viewModel); return View(viewModel);
} }
[Authorize(Roles = "Administrator, Developer")]
[ActionLog] [ActionLog]
public ActionResult Export(VehicleServiceQueryViewModel query) public ActionResult Export(VehicleServiceQueryViewModel query)
{ {
@@ -61,6 +63,7 @@ namespace MileageTraker.Web.Controllers
return File(export, "application/ms-excel", name + ".xls"); return File(export, "application/ms-excel", name + ".xls");
} }
[Authorize(Roles = "Administrator, Developer")]
public ViewResult Details(int id) public ViewResult Details(int id)
{ {
var vehicleService = DataService.GetVehicleService(id); var vehicleService = DataService.GetVehicleService(id);
@@ -68,11 +71,13 @@ namespace MileageTraker.Web.Controllers
return View(viewModel); return View(viewModel);
} }
[Authorize(Roles = "Administrator, Developer")]
public ActionResult Create() public ActionResult Create()
{ {
return View(); return View();
} }
[Authorize(Roles = "Administrator, Developer")]
[HttpGet] [HttpGet]
[RequireRequestValue("vehicleId")] [RequireRequestValue("vehicleId")]
public ActionResult Create(string vehicleId) public ActionResult Create(string vehicleId)
@@ -80,6 +85,13 @@ namespace MileageTraker.Web.Controllers
return View(new VehicleServiceViewModel{VehicleId = vehicleId}); return View(new VehicleServiceViewModel{VehicleId = vehicleId});
} }
[HttpPost]
[RequireRequestValue("serviceVehicleId")]
public ActionResult CreateDriver(string serviceVehicleId)
{
return View ("Create", new VehicleServiceViewModel{VehicleId = serviceVehicleId });
}
[HttpPost] [HttpPost]
[ActionLog] [ActionLog]
public ActionResult Create(VehicleServiceViewModel viewModel) public ActionResult Create(VehicleServiceViewModel viewModel)
@@ -158,12 +170,19 @@ namespace MileageTraker.Web.Controllers
{ {
SetStatusMessage(string.Join(", ", status), StatusType.Success); SetStatusMessage(string.Join(", ", status), StatusType.Success);
} }
return RedirectToAction("Index");
} if (User.IsInRole("Administrator") || User.IsInRole("Developer"))
{
return RedirectToAction("Index");
}
return RedirectToAction("Index", "CreateLog"); // for the drivers
}
return View(viewModel); return View(viewModel);
} }
[Authorize(Roles = "Administrator, Developer")]
private void RefreshServiceReminderViewModel( private void RefreshServiceReminderViewModel(
UpdateServiceRemindersViewModel viewModel, Vehicle vehicle, bool setDefaultSelectedServiceReminders = false) UpdateServiceRemindersViewModel viewModel, Vehicle vehicle, bool setDefaultSelectedServiceReminders = false)
{ {
@@ -186,6 +205,7 @@ namespace MileageTraker.Web.Controllers
} }
} }
[Authorize(Roles = "Administrator, Developer")]
public ActionResult Edit(int id) public ActionResult Edit(int id)
{ {
var vehicleService = DataService.GetVehicleService(id); var vehicleService = DataService.GetVehicleService(id);
@@ -193,6 +213,7 @@ namespace MileageTraker.Web.Controllers
return View(viewModel); return View(viewModel);
} }
[Authorize(Roles = "Administrator, Developer")]
public ActionResult Delete(int id) public ActionResult Delete(int id)
{ {
var vehicleService = DataService.GetVehicleService(id); var vehicleService = DataService.GetVehicleService(id);
@@ -200,6 +221,7 @@ namespace MileageTraker.Web.Controllers
return View(viewModel); return View(viewModel);
} }
[Authorize(Roles = "Administrator, Developer")]
[HttpPost, ActionName("Delete")] [HttpPost, ActionName("Delete")]
[ActionLog] [ActionLog]
public ActionResult DeleteConfirmed(int id) public ActionResult DeleteConfirmed(int id)
@@ -210,6 +232,7 @@ namespace MileageTraker.Web.Controllers
return RedirectToAction("Index"); return RedirectToAction("Index");
} }
[Authorize(Roles = "Administrator, Developer")]
[HttpPost] [HttpPost]
[ActionLog] [ActionLog]
public ActionResult Edit(VehicleServiceViewModel viewModel) public ActionResult Edit(VehicleServiceViewModel viewModel)
@@ -0,0 +1,38 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using MileageTraker.Web.Attributes;
using MileageTraker.Web.DAL;
namespace MileageTraker.Web.ViewModels.VehicleService
{
public class VehicleSelectViewModel : IValidatableObject
{
[Required(ErrorMessage = "Required")]
[Remote("Exists", "Vehicle", ErrorMessage = "ID not found")]
[StringLength(6, MinimumLength = 4, ErrorMessage = "Must be a 4 digit number")]
[Display(Name = "Vehicle ID")]
[InputSize("mini")]
[RegularExpression(@"\d+", ErrorMessage = "Must be all numbers")]
public string ServiceVehicleId { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
using (var dataService = new DataService())
{
var inactiveDate = dataService.GetVehicle(ServiceVehicleId).InactiveDate;
if (inactiveDate.HasValue)
{
yield return new ValidationResult(
string.Format("Vehicle was set inactive on {0:MM/dd/yyyy}", inactiveDate.Value),
new[] { "VehicleId" });
}
}
}
public override string ToString()
{
return string.Format("vehicle: {0}", ServiceVehicleId);
}
}
}
+4 -1
View File
@@ -1,4 +1,5 @@
@model MileageTraker.Web.ViewModels.CreateLog.CreateLogViewModel @using MileageTraker.Web.ViewModels.VehicleService
@model MileageTraker.Web.ViewModels.CreateLog.CreateLogViewModel
@{ @{
ViewBag.Title = "Enter Mileage Log"; ViewBag.Title = "Enter Mileage Log";
@@ -24,6 +25,8 @@
</div> </div>
@Html.Partial("VehicleSelect", new VehicleSelectViewModel())
<div class="center-content" style="text-align: center"> <div class="center-content" style="text-align: center">
@Html.ActionLink("Import", "ImportUpload", new {}, new { @class = "btn"}) @Html.ActionLink("Import", "ImportUpload", new {}, new { @class = "btn"})
</div> </div>
+25
View File
@@ -0,0 +1,25 @@
@model MileageTraker.Web.ViewModels.VehicleService.VehicleSelectViewModel
@using (Html.BeginForm("CreateDriver", "VehicleService", FormMethod.Post, new { @class = "form-horizontal well center-content" }))
{
<h5>Enter Vehicle Service</h5>
<div class="control-group serviceVehicleId">
<div class="row-fluid">
<div class="span6">
@Html.LabelFor(m => m.ServiceVehicleId, "Vehicle ID")
</div>
<div class="span4">
@Html.TextBoxFor(m => m.ServiceVehicleId, new { @class = "input-mini" })
</div>
<div class="span2">
<input type="submit" value="Enter" class="btn btn-small" />
</div>
</div>
<div class="row-fluid">
<div class="offset6">
<span class="help-block">@Html.ValidationMessage("ServiceVehicleId")</span>
</div>
</div>
</div>
}
+2
View File
@@ -166,6 +166,7 @@
<Compile Include="Email\ServiceReminderEmailService.cs" /> <Compile Include="Email\ServiceReminderEmailService.cs" />
<Compile Include="Startup.cs" /> <Compile Include="Startup.cs" />
<Compile Include="ViewModels\DriverMileageFlattenedViewModel.cs" /> <Compile Include="ViewModels\DriverMileageFlattenedViewModel.cs" />
<Compile Include="ViewModels\VehicleService\VehicleSelectViewModel.cs" />
<Compile Include="ViewModels\VehicleService\UpdateServiceRemindersViewModel.cs" /> <Compile Include="ViewModels\VehicleService\UpdateServiceRemindersViewModel.cs" />
<Compile Include="Controllers\FuelLogController.cs" /> <Compile Include="Controllers\FuelLogController.cs" />
<Compile Include="Controllers\ServiceReminderController.cs" /> <Compile Include="Controllers\ServiceReminderController.cs" />
@@ -387,6 +388,7 @@
<Content Include="Views\Shared\PageTitle.cshtml" /> <Content Include="Views\Shared\PageTitle.cshtml" />
<Content Include="Views\VehicleService\Delete.cshtml" /> <Content Include="Views\VehicleService\Delete.cshtml" />
<Content Include="Views\ServiceReminder\Delete.cshtml" /> <Content Include="Views\ServiceReminder\Delete.cshtml" />
<Content Include="Views\CreateLog\VehicleSelect.cshtml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Content\Account.Login.css" /> <Content Include="Content\Account.Login.css" />