diff --git a/Web/Controllers/VehicleServiceController.cs b/Web/Controllers/VehicleServiceController.cs index 1003ef5..6796ffb 100644 --- a/Web/Controllers/VehicleServiceController.cs +++ b/Web/Controllers/VehicleServiceController.cs @@ -11,7 +11,7 @@ namespace MileageTraker.Web.Controllers { public ActionResult Index(VehicleServiceQueryViewModel query) { - var vehicleServices = DataService.GetVehicleServices(); + var vehicleServices = DataService.GetVehicleServices().ToList(); var viewModel = new VehicleServiceResultsViewModel { ServiceItems = vehicleServices.Select(s => new VehicleServiceViewModel(s)) @@ -19,6 +19,13 @@ namespace MileageTraker.Web.Controllers return View(viewModel); } + public ViewResult Details(int id) + { + var vehicleService = DataService.GetVehicleService(id); + var viewModel = new VehicleServiceViewModel(vehicleService); + return View(viewModel); + } + public ActionResult Create() { return View(); @@ -32,6 +39,7 @@ namespace MileageTraker.Web.Controllers { var vehicleService = viewModel.GetVehicleService(); + vehicleService.Vehicle = DataService.GetVehicle(viewModel.VehicleId); DataService.AddVehicleService(vehicleService); @@ -43,5 +51,29 @@ namespace MileageTraker.Web.Controllers return View(viewModel); } + + + public ActionResult Edit(int id) + { + var vehicleService = DataService.GetVehicleService(id); + var viewModel = new VehicleServiceViewModel(vehicleService); + return View(viewModel); + } + + [HttpPost] + [ActionLog] + public ActionResult Edit(VehicleServiceViewModel viewModel) + { + if (ModelState.IsValid) + { + var vehicleService = viewModel.GetVehicleService(); + vehicleService.Vehicle = DataService.GetVehicle(viewModel.VehicleId); + + DataService.UpdateVehicleService(vehicleService); + TempData["StatusMessage"] = "Changes saved for vehicle service " + vehicleService.Vehicle.VehicleId; + return RedirectToAction("Details", new { id = vehicleService.VehicleServiceId }); + } + return View(viewModel); + } } } \ No newline at end of file diff --git a/Web/DAL/DataService.cs b/Web/DAL/DataService.cs index 106a4db..79d544e 100644 --- a/Web/DAL/DataService.cs +++ b/Web/DAL/DataService.cs @@ -823,7 +823,7 @@ namespace MileageTraker.Web.DAL return vehicleServices; } - public VehicleService GetVehicleServices(string id) + public VehicleService GetVehicleService(int id) { return _db.VehicleServices.Find(id); } diff --git a/Web/ViewModels/FuelLog/FuelLogViewModel.cs b/Web/ViewModels/FuelLog/FuelLogViewModel.cs index 3799903..30130e2 100644 --- a/Web/ViewModels/FuelLog/FuelLogViewModel.cs +++ b/Web/ViewModels/FuelLog/FuelLogViewModel.cs @@ -2,6 +2,7 @@ using System.ComponentModel.DataAnnotations; using System.Web.Mvc; using AutoMapper; +using MileageTraker.Web.Attributes; using MileageTraker.Web.ViewModels.Log; namespace MileageTraker.Web.ViewModels.FuelLog @@ -44,6 +45,7 @@ namespace MileageTraker.Web.ViewModels.FuelLog [Required] [Display(Name = "Total Price")] + [Currency] public decimal TotalPrice { get; set; } // Matched log diff --git a/Web/ViewModels/VehicleService/VehicleServiceViewModel.cs b/Web/ViewModels/VehicleService/VehicleServiceViewModel.cs index 4c35787..9ab3391 100644 --- a/Web/ViewModels/VehicleService/VehicleServiceViewModel.cs +++ b/Web/ViewModels/VehicleService/VehicleServiceViewModel.cs @@ -36,7 +36,7 @@ namespace MileageTraker.Web.ViewModels.VehicleService [Required] [InputSize("small")] - [Units("$")] + [Currency] public decimal Price { get; set; } [StringLength(64, MinimumLength = 3, ErrorMessage = "Minimum 3 characters")] @@ -45,7 +45,8 @@ namespace MileageTraker.Web.ViewModels.VehicleService static VehicleServiceViewModel() { Mapper.CreateMap(); - Mapper.CreateMap(); + Mapper.CreateMap() + .ForMember(dest => dest.VehicleId, opt => opt.MapFrom(src => src.Vehicle.VehicleId)); } public VehicleServiceViewModel(Models.VehicleService vehicleService) diff --git a/Web/Views/VehicleService/Details.cshtml b/Web/Views/VehicleService/Details.cshtml new file mode 100644 index 0000000..b79b1ac --- /dev/null +++ b/Web/Views/VehicleService/Details.cshtml @@ -0,0 +1,16 @@ +@model MileageTraker.Web.ViewModels.VehicleService.VehicleServiceViewModel + +@{ + ViewBag.Title = "Vehicle Service Details" ; +} + +@Html.Partial("_StatusMessage") + +

@ViewBag.Title

+
+ @Html.DisplayForModel() +
+ +
+ @Html.ActionLink("Edit", "Edit", new { id = Model.VehicleServiceId }, new { @class = "btn" }) +
\ No newline at end of file diff --git a/Web/Views/VehicleService/Edit.cshtml b/Web/Views/VehicleService/Edit.cshtml new file mode 100644 index 0000000..96a0295 --- /dev/null +++ b/Web/Views/VehicleService/Edit.cshtml @@ -0,0 +1,21 @@ +@model MileageTraker.Web.ViewModels.VehicleService.VehicleServiceViewModel + +@{ + ViewBag.Title = "Edit Vehicle Service"; +} + +@Html.Partial("_StatusMessage") + +

@ViewBag.Title

+ +@using (Html.BeginForm("Edit", "VehicleService", FormMethod.Post, new { @class = "form-horizontal well center-content" })) +{ + @Html.Partial("_ValidationSummary") +
+ + @Html.EditorForModel() +
+ +
+
+} diff --git a/Web/Web.csproj b/Web/Web.csproj index e8da9ac..8eaa352 100644 --- a/Web/Web.csproj +++ b/Web/Web.csproj @@ -130,6 +130,7 @@ + @@ -330,6 +331,8 @@ + +