diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 517f5ed..dd7c5b5 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -1609,5 +1609,55 @@ namespace CarCareTracker.Controllers return Json(result); } #endregion + #region "Shared Methods" + public IActionResult MoveRecord(int recordId, ImportMode source, ImportMode destination) + { + var genericRecord = new GenericRecord(); + bool result = false; + //get + switch (source) + { + case ImportMode.ServiceRecord: + genericRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); + break; + case ImportMode.RepairRecord: + genericRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId); + break; + case ImportMode.UpgradeRecord: + genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); + break; + } + //save + switch (destination) + { + case ImportMode.ServiceRecord: + result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(StaticHelper.GenericToServiceRecord(genericRecord)); + break; + case ImportMode.RepairRecord: + result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(StaticHelper.GenericToRepairRecord(genericRecord)); + break; + case ImportMode.UpgradeRecord: + result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(StaticHelper.GenericToUpgradeRecord(genericRecord)); + break; + } + //delete + if (result) + { + switch (source) + { + case ImportMode.ServiceRecord: + _serviceRecordDataAccess.DeleteServiceRecordById(recordId); + break; + case ImportMode.RepairRecord: + _collisionRecordDataAccess.DeleteCollisionRecordById(recordId); + break; + case ImportMode.UpgradeRecord: + _upgradeRecordDataAccess.DeleteUpgradeRecordById(recordId); + break; + } + } + return Json(result); + } + #endregion } } diff --git a/Helper/StaticHelper.cs b/Helper/StaticHelper.cs index 7d45f6c..4478625 100644 --- a/Helper/StaticHelper.cs +++ b/Helper/StaticHelper.cs @@ -100,5 +100,45 @@ namespace CarCareTracker.Helper new CostForVehicleByMonth { MonthId = 12, Cost = 0M} }; } + + public static ServiceRecord GenericToServiceRecord(GenericRecord input) + { + return new ServiceRecord + { + VehicleId = input.VehicleId, + Date = input.Date, + Description = input.Description, + Cost = input.Cost, + Mileage = input.Mileage, + Files = input.Files, + Notes = input.Notes + }; + } + public static CollisionRecord GenericToRepairRecord(GenericRecord input) + { + return new CollisionRecord + { + VehicleId = input.VehicleId, + Date = input.Date, + Description = input.Description, + Cost = input.Cost, + Mileage = input.Mileage, + Files = input.Files, + Notes = input.Notes + }; + } + public static UpgradeRecord GenericToUpgradeRecord(GenericRecord input) + { + return new UpgradeRecord + { + VehicleId = input.VehicleId, + Date = input.Date, + Description = input.Description, + Cost = input.Cost, + Mileage = input.Mileage, + Files = input.Files, + Notes = input.Notes + }; + } } } diff --git a/Models/Collision/CollisionRecord.cs b/Models/Collision/CollisionRecord.cs index 737dee8..abd4859 100644 --- a/Models/Collision/CollisionRecord.cs +++ b/Models/Collision/CollisionRecord.cs @@ -1,14 +1,6 @@ namespace CarCareTracker.Models { - public class CollisionRecord + public class CollisionRecord: GenericRecord { - public int Id { get; set; } - public int VehicleId { get; set; } - public DateTime Date { get; set; } - public int Mileage { get; set; } - public string Description { get; set; } - public decimal Cost { get; set; } - public string Notes { get; set; } - public List Files { get; set; } = new List(); } } diff --git a/Models/GenericRecord.cs b/Models/GenericRecord.cs new file mode 100644 index 0000000..8f272ad --- /dev/null +++ b/Models/GenericRecord.cs @@ -0,0 +1,14 @@ +namespace CarCareTracker.Models +{ + public class GenericRecord + { + public int Id { get; set; } + public int VehicleId { get; set; } + public DateTime Date { get; set; } + public int Mileage { get; set; } + public string Description { get; set; } + public decimal Cost { get; set; } + public string Notes { get; set; } + public List Files { get; set; } = new List(); + } +} diff --git a/Models/ServiceRecord/ServiceRecord.cs b/Models/ServiceRecord/ServiceRecord.cs index 8a1a449..c7cd03e 100644 --- a/Models/ServiceRecord/ServiceRecord.cs +++ b/Models/ServiceRecord/ServiceRecord.cs @@ -1,14 +1,6 @@ namespace CarCareTracker.Models { - public class ServiceRecord + public class ServiceRecord: GenericRecord { - public int Id { get; set; } - public int VehicleId { get; set; } - public DateTime Date { get; set; } - public int Mileage { get; set; } - public string Description { get; set; } - public decimal Cost { get; set; } - public string Notes { get; set; } - public List Files { get; set; } = new List(); } } diff --git a/Models/UpgradeRecord/UpgradeRecord.cs b/Models/UpgradeRecord/UpgradeRecord.cs index ef9ffe3..78caddc 100644 --- a/Models/UpgradeRecord/UpgradeRecord.cs +++ b/Models/UpgradeRecord/UpgradeRecord.cs @@ -1,14 +1,6 @@ namespace CarCareTracker.Models { - public class UpgradeRecord + public class UpgradeRecord: GenericRecord { - public int Id { get; set; } - public int VehicleId { get; set; } - public DateTime Date { get; set; } - public int Mileage { get; set; } - public string Description { get; set; } - public decimal Cost { get; set; } - public string Notes { get; set; } - public List Files { get; set; } = new List(); } } diff --git a/Views/Vehicle/_CollisionRecordModal.cshtml b/Views/Vehicle/_CollisionRecordModal.cshtml index 086da03..9579adb 100644 --- a/Views/Vehicle/_CollisionRecordModal.cshtml +++ b/Views/Vehicle/_CollisionRecordModal.cshtml @@ -63,7 +63,17 @@