diff --git a/src/PowderCoating.Web/Controllers/AppointmentsController.cs b/src/PowderCoating.Web/Controllers/AppointmentsController.cs index 9418f0a..bfefd92 100644 --- a/src/PowderCoating.Web/Controllers/AppointmentsController.cs +++ b/src/PowderCoating.Web/Controllers/AppointmentsController.cs @@ -381,9 +381,15 @@ public class AppointmentsController : Controller return View(dto); } - // Map changes + // Map changes — capture old start before overwrite so we can detect a reschedule. + var previousStart = appointment.ScheduledStartTime; _mapper.Map(dto, appointment); + // If the appointment was rescheduled, clear the reminder stamp so the background + // service will fire again at the new time. + if (appointment.ScheduledStartTime != previousStart) + appointment.ReminderSentAt = null; + // Update await _unitOfWork.Appointments.UpdateAsync(appointment); await _unitOfWork.CompleteAsync(); @@ -725,6 +731,8 @@ public class AppointmentsController : Controller var duration = appointment.ScheduledEndTime - appointment.ScheduledStartTime; appointment.ScheduledStartTime = start; appointment.ScheduledEndTime = end; + // Drag-drop always changes the time — reset so the reminder fires at the new time. + appointment.ReminderSentAt = null; await _unitOfWork.Appointments.UpdateAsync(appointment); await _unitOfWork.CompleteAsync();