diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 2579b23..9b4e9d7 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -747,6 +747,11 @@ namespace CarCareTracker.Controllers { serviceRecord.RequisitionHistory = RequisitionSupplyRecordsByUsage(serviceRecord.Supplies, DateTime.Parse(serviceRecord.Date), serviceRecord.Description); } + //push back any reminders + if (serviceRecord.ReminderRecordId != default) + { + PushbackRecurringReminderRecordWithChecks(serviceRecord.ReminderRecordId); + } var result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(serviceRecord.ToServiceRecord()); return Json(result); } @@ -819,6 +824,11 @@ namespace CarCareTracker.Controllers { collisionRecord.RequisitionHistory = RequisitionSupplyRecordsByUsage(collisionRecord.Supplies, DateTime.Parse(collisionRecord.Date), collisionRecord.Description); } + //push back any reminders + if (collisionRecord.ReminderRecordId != default) + { + PushbackRecurringReminderRecordWithChecks(collisionRecord.ReminderRecordId); + } var result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(collisionRecord.ToCollisionRecord()); return Json(result); } @@ -1413,15 +1423,47 @@ namespace CarCareTracker.Controllers result = result.OrderByDescending(x => x.Urgency).ToList(); return PartialView("_ReminderRecords", result); } + [HttpGet] + public IActionResult GetRecurringReminderRecordsByVehicleId(int vehicleId) + { + var result = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicleId); + result.RemoveAll(x => !x.IsRecurring); + return PartialView("_RecurringReminderSelector", result); + } [HttpPost] public IActionResult PushbackRecurringReminderRecord(int reminderRecordId) { - var existingReminder = _reminderRecordDataAccess.GetReminderRecordById(reminderRecordId); - existingReminder = _reminderHelper.GetUpdatedRecurringReminderRecord(existingReminder); - //save to db. - var result = _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingReminder); + var result = PushbackRecurringReminderRecordWithChecks(reminderRecordId); return Json(result); } + private bool PushbackRecurringReminderRecordWithChecks(int reminderRecordId) + { + try + { + var existingReminder = _reminderRecordDataAccess.GetReminderRecordById(reminderRecordId); + if (existingReminder is not null && existingReminder.Id != default && existingReminder.IsRecurring) + { + existingReminder = _reminderHelper.GetUpdatedRecurringReminderRecord(existingReminder); + //save to db. + var reminderUpdateResult = _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingReminder); + if (!reminderUpdateResult) + { + _logger.LogError("Unable to update reminder either because the reminder no longer exists or is no longer recurring"); + return false; + } + return true; + } + else + { + _logger.LogError("Unable to update reminder because it no longer exists."); + return false; + } + } catch (Exception ex) + { + _logger.LogError(ex.Message); + return false; + } + } [HttpPost] public IActionResult SaveReminderRecordToVehicleId(ReminderRecordInput reminderRecord) { @@ -1505,6 +1547,11 @@ namespace CarCareTracker.Controllers { upgradeRecord.RequisitionHistory = RequisitionSupplyRecordsByUsage(upgradeRecord.Supplies, DateTime.Parse(upgradeRecord.Date), upgradeRecord.Description); } + //push back any reminders + if (upgradeRecord.ReminderRecordId != default) + { + PushbackRecurringReminderRecordWithChecks(upgradeRecord.ReminderRecordId); + } var result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(upgradeRecord.ToUpgradeRecord()); return Json(result); } @@ -1894,21 +1941,7 @@ namespace CarCareTracker.Controllers //push back any reminders if (existingRecord.ReminderRecordId != default) { - var existingReminder = _reminderRecordDataAccess.GetReminderRecordById(existingRecord.ReminderRecordId); - if (existingReminder is not null && existingReminder.Id != default && existingReminder.IsRecurring) - { - existingReminder = _reminderHelper.GetUpdatedRecurringReminderRecord(existingReminder); - //save to db. - var reminderUpdateResult = _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingReminder); - if (!reminderUpdateResult) - { - _logger.LogError("Unable to update reminder either because the reminder no longer exists or is no longer recurring"); - } - } - else - { - _logger.LogError("Unable to update reminder because it no longer exists."); - } + PushbackRecurringReminderRecordWithChecks(existingRecord.ReminderRecordId); } } return Json(result); diff --git a/Models/Collision/CollisionRecordInput.cs b/Models/Collision/CollisionRecordInput.cs index 703bb2f..d3d95ee 100644 --- a/Models/Collision/CollisionRecordInput.cs +++ b/Models/Collision/CollisionRecordInput.cs @@ -4,6 +4,7 @@ { public int Id { get; set; } public int VehicleId { get; set; } + public int ReminderRecordId { get; set; } public string Date { get; set; } = DateTime.Now.ToShortDateString(); public int Mileage { get; set; } public string Description { get; set; } diff --git a/Models/ServiceRecord/ServiceRecordInput.cs b/Models/ServiceRecord/ServiceRecordInput.cs index 430c1aa..8cf2dc1 100644 --- a/Models/ServiceRecord/ServiceRecordInput.cs +++ b/Models/ServiceRecord/ServiceRecordInput.cs @@ -4,6 +4,7 @@ { public int Id { get; set; } public int VehicleId { get; set; } + public int ReminderRecordId { get; set; } public string Date { get; set; } = DateTime.Now.ToShortDateString(); public int Mileage { get; set; } public string Description { get; set; } diff --git a/Models/UpgradeRecord/UpgradeReportInput.cs b/Models/UpgradeRecord/UpgradeReportInput.cs index 812c8c4..cf16d4c 100644 --- a/Models/UpgradeRecord/UpgradeReportInput.cs +++ b/Models/UpgradeRecord/UpgradeReportInput.cs @@ -4,6 +4,7 @@ { public int Id { get; set; } public int VehicleId { get; set; } + public int ReminderRecordId { get; set; } public string Date { get; set; } = DateTime.Now.ToShortDateString(); public int Mileage { get; set; } public string Description { get; set; } diff --git a/Views/Vehicle/_CollisionRecordModal.cshtml b/Views/Vehicle/_CollisionRecordModal.cshtml index 4722f8f..28247b0 100644 --- a/Views/Vehicle/_CollisionRecordModal.cshtml +++ b/Views/Vehicle/_CollisionRecordModal.cshtml @@ -26,6 +26,14 @@ + @if (isNew) + { +
+
+ @translator.Translate(userLanguage, "Select Reminder") +
+
+ } @if (isNew) @@ -113,6 +121,7 @@