Add vehicle recall
This commit is contained in:
@@ -5,7 +5,7 @@ namespace MileageTraker.Web.ViewModels
|
||||
public class SelectListViewModel
|
||||
{
|
||||
public SelectList Available { get; set; }
|
||||
public int Selected { get; set; }
|
||||
public int? Selected { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using AutoMapper;
|
||||
|
||||
namespace MileageTraker.Web.ViewModels.Vehicle
|
||||
{
|
||||
public class VehiclePartialDetailsQuick
|
||||
{
|
||||
[Display(Name = "Year")]
|
||||
public string ModelYear { get; set; }
|
||||
|
||||
public string Make { get; set; }
|
||||
|
||||
[Display(Name = "Model")]
|
||||
public string CarModel { get; set; }
|
||||
|
||||
public string Color { get; set; }
|
||||
|
||||
public string Type { get; set; }
|
||||
|
||||
[Display(Name = "VIN")]
|
||||
public string Vin { get; set; }
|
||||
|
||||
[Display(Name = "Tag#")]
|
||||
public string TagNumber { get; set; }
|
||||
|
||||
[DisplayFormat(NullDisplayText = "Unassigned")]
|
||||
public string Assigned { get; set; }
|
||||
|
||||
static VehiclePartialDetailsQuick()
|
||||
{
|
||||
Mapper.CreateMap<Models.Vehicle, VehiclePartialDetailsQuick>();
|
||||
}
|
||||
|
||||
public VehiclePartialDetailsQuick()
|
||||
{}
|
||||
|
||||
public VehiclePartialDetailsQuick(Models.Vehicle vehicle)
|
||||
{
|
||||
Mapper.Map(vehicle, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Web.Mvc;
|
||||
using AutoMapper;
|
||||
using MileageTraker.Web.Attributes;
|
||||
|
||||
namespace MileageTraker.Web.ViewModels.VehicleRecall
|
||||
{
|
||||
public class VehicleRecallViewModel
|
||||
{
|
||||
[HiddenInput(DisplayValue = false)]
|
||||
public int? VehicleRecallId { get; set; }
|
||||
|
||||
[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; }
|
||||
|
||||
[Required]
|
||||
[Display(Name = "Recall Identifier")]
|
||||
[StringLength(128, MinimumLength = 3)]
|
||||
[InputSize("small")]
|
||||
public string Identifier { get; set; }
|
||||
|
||||
[Required]
|
||||
[StringLength(128, MinimumLength = 3, ErrorMessage = "Minimum 3 characters")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[HiddenInput(DisplayValue = false)]
|
||||
[Display(Name = "Vehicle Service")]
|
||||
[UIHint("VehicleServiceLink")]
|
||||
public int CompletedService_VehicleServiceId { get; set; }
|
||||
|
||||
static VehicleRecallViewModel()
|
||||
{
|
||||
Mapper.CreateMap<VehicleRecallViewModel, Models.VehicleRecall>();
|
||||
Mapper.CreateMap<Models.VehicleRecall, VehicleRecallViewModel>()
|
||||
.ForMember(dest => dest.VehicleId, opt => opt.MapFrom(src => src.Vehicle.VehicleId));
|
||||
}
|
||||
|
||||
public VehicleRecallViewModel(Models.VehicleRecall vehicleRecall)
|
||||
{
|
||||
Mapper.Map(vehicleRecall, this);
|
||||
}
|
||||
|
||||
public VehicleRecallViewModel()
|
||||
{
|
||||
}
|
||||
|
||||
public Models.VehicleRecall GetVehicleRecall()
|
||||
{
|
||||
var vehicleRecall = new Models.VehicleRecall();
|
||||
Mapper.Map(this, vehicleRecall);
|
||||
return vehicleRecall;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ using System.Web.Mvc;
|
||||
using AutoMapper;
|
||||
using MileageTraker.Web.Attributes;
|
||||
using MileageTraker.Web.DAL;
|
||||
using MileageTraker.Web.ViewModels.ServiceReminder;
|
||||
|
||||
namespace MileageTraker.Web.ViewModels.VehicleService
|
||||
{
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Web.Mvc;
|
||||
using AutoMapper;
|
||||
using MileageTraker.Web.Attributes;
|
||||
using MileageTraker.Web.DAL;
|
||||
|
||||
namespace MileageTraker.Web.ViewModels.VehicleService
|
||||
{
|
||||
public class VehicleServiceViewModel
|
||||
{
|
||||
public class VehicleServiceViewModel : IValidatableObject
|
||||
{
|
||||
[HiddenInput(DisplayValue = false)]
|
||||
public int? VehicleServiceId { get; set; }
|
||||
|
||||
@@ -41,6 +43,11 @@ namespace MileageTraker.Web.ViewModels.VehicleService
|
||||
[Currency]
|
||||
public decimal Price { get; set; }
|
||||
|
||||
[Display(Name = "Vehicle Recall")]
|
||||
[OptionLabel("Not a recall")]
|
||||
[UIHint("VehicleRecallSelectListViewModel")]
|
||||
public SelectListViewModel VehicleRecall { get; set; }
|
||||
|
||||
[StringLength(64, MinimumLength = 3, ErrorMessage = "Minimum 3 characters")]
|
||||
public string Description { get; set; }
|
||||
|
||||
@@ -51,14 +58,16 @@ namespace MileageTraker.Web.ViewModels.VehicleService
|
||||
.ForMember(dest => dest.VehicleId, opt => opt.MapFrom(src => src.Vehicle.VehicleId));
|
||||
}
|
||||
|
||||
public VehicleServiceViewModel(Models.VehicleService vehicleService)
|
||||
public VehicleServiceViewModel(Models.VehicleService vehicleService) : this()
|
||||
{
|
||||
Mapper.Map(vehicleService, this);
|
||||
}
|
||||
|
||||
public VehicleServiceViewModel()
|
||||
{
|
||||
}
|
||||
{
|
||||
//var enumerable = new string[]{};
|
||||
//VehicleRecallId = new SelectListViewModel { Available = new SelectList(enumerable, "VehicleRecallId", "RecallId") };
|
||||
}
|
||||
|
||||
public Models.VehicleService GetVehicleService()
|
||||
{
|
||||
@@ -66,5 +75,19 @@ namespace MileageTraker.Web.ViewModels.VehicleService
|
||||
Mapper.Map(this, vehicleService);
|
||||
return vehicleService;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||
{
|
||||
using (var dataService = new DataService())
|
||||
{
|
||||
var recallId = VehicleRecall?.Selected ?? int.MinValue;
|
||||
// if there's a recall, verify it's for this vehicle
|
||||
if (recallId >= 0 && dataService.GetVehicleRecall(recallId).Vehicle.VehicleId != VehicleId)
|
||||
{
|
||||
yield return new ValidationResult("This recall is not for the given vehicle",
|
||||
new[] {"VehicleRecall"});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user