From dbeda22e1947e3da2e1fd8d9f7a28761ea099e44 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Mon, 6 Jul 2026 22:16:05 -0500 Subject: [PATCH] feat: auto-fill 12pm-2pm break when disabling continuous day on schedule When toggling off jornada continua, range1Hour2 defaults to 12:00 and range2Hour1 defaults to 14:00 if not already set. Existing values are preserved so the user can still edit them freely. Co-Authored-By: Claude Sonnet 4.6 --- lib/ui/views/schedule_view.dart | 106 +++++++++++++++++++------------- 1 file changed, 63 insertions(+), 43 deletions(-) diff --git a/lib/ui/views/schedule_view.dart b/lib/ui/views/schedule_view.dart index 7806129..7e0cec9 100644 --- a/lib/ui/views/schedule_view.dart +++ b/lib/ui/views/schedule_view.dart @@ -92,13 +92,16 @@ class _ScheduleViewState extends State { }, onContinuousDayChanged: (value) { setState(() { + final cur = profesional.schedules.monday; + final updated = !value + ? cur.copyWith( + continuousDay: false, + range1Hour2: cur.range1Hour2 ?? const TimeOfDay(hour: 12, minute: 0), + range2Hour1: cur.range2Hour1 ?? const TimeOfDay(hour: 14, minute: 0), + ) + : cur.copyWith(continuousDay: true); professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - monday: profesional.schedules.monday.copyWith( - continuousDay: value, - ), - ), - ); + schedules: profesional.schedules.copyWith(monday: updated)); }); }, onRange1Hour1Pick: (pickedTime) { @@ -155,13 +158,16 @@ class _ScheduleViewState extends State { }, onContinuousDayChanged: (value) { setState(() { + final cur = profesional.schedules.tuesday; + final updated = !value + ? cur.copyWith( + continuousDay: false, + range1Hour2: cur.range1Hour2 ?? const TimeOfDay(hour: 12, minute: 0), + range2Hour1: cur.range2Hour1 ?? const TimeOfDay(hour: 14, minute: 0), + ) + : cur.copyWith(continuousDay: true); professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - tuesday: profesional.schedules.tuesday.copyWith( - continuousDay: value, - ), - ), - ); + schedules: profesional.schedules.copyWith(tuesday: updated)); }); }, onRange1Hour1Pick: (pickedTime) { @@ -218,14 +224,16 @@ class _ScheduleViewState extends State { }, onContinuousDayChanged: (value) { setState(() { + final cur = profesional.schedules.wednesday; + final updated = !value + ? cur.copyWith( + continuousDay: false, + range1Hour2: cur.range1Hour2 ?? const TimeOfDay(hour: 12, minute: 0), + range2Hour1: cur.range2Hour1 ?? const TimeOfDay(hour: 14, minute: 0), + ) + : cur.copyWith(continuousDay: true); professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - wednesday: - profesional.schedules.wednesday.copyWith( - continuousDay: value, - ), - ), - ); + schedules: profesional.schedules.copyWith(wednesday: updated)); }); }, onRange1Hour1Pick: (pickedTime) { @@ -282,13 +290,16 @@ class _ScheduleViewState extends State { }, onContinuousDayChanged: (value) { setState(() { + final cur = profesional.schedules.thursday; + final updated = !value + ? cur.copyWith( + continuousDay: false, + range1Hour2: cur.range1Hour2 ?? const TimeOfDay(hour: 12, minute: 0), + range2Hour1: cur.range2Hour1 ?? const TimeOfDay(hour: 14, minute: 0), + ) + : cur.copyWith(continuousDay: true); professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - thursday: profesional.schedules.thursday.copyWith( - continuousDay: value, - ), - ), - ); + schedules: profesional.schedules.copyWith(thursday: updated)); }); }, onRange1Hour1Pick: (pickedTime) { @@ -345,13 +356,16 @@ class _ScheduleViewState extends State { }, onContinuousDayChanged: (value) { setState(() { + final cur = profesional.schedules.friday; + final updated = !value + ? cur.copyWith( + continuousDay: false, + range1Hour2: cur.range1Hour2 ?? const TimeOfDay(hour: 12, minute: 0), + range2Hour1: cur.range2Hour1 ?? const TimeOfDay(hour: 14, minute: 0), + ) + : cur.copyWith(continuousDay: true); professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - friday: profesional.schedules.friday.copyWith( - continuousDay: value, - ), - ), - ); + schedules: profesional.schedules.copyWith(friday: updated)); }); }, onRange1Hour1Pick: (pickedTime) { @@ -408,13 +422,16 @@ class _ScheduleViewState extends State { }, onContinuousDayChanged: (value) { setState(() { + final cur = profesional.schedules.saturday; + final updated = !value + ? cur.copyWith( + continuousDay: false, + range1Hour2: cur.range1Hour2 ?? const TimeOfDay(hour: 12, minute: 0), + range2Hour1: cur.range2Hour1 ?? const TimeOfDay(hour: 14, minute: 0), + ) + : cur.copyWith(continuousDay: true); professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - saturday: profesional.schedules.saturday.copyWith( - continuousDay: value, - ), - ), - ); + schedules: profesional.schedules.copyWith(saturday: updated)); }); }, onRange1Hour1Pick: (pickedTime) { @@ -471,13 +488,16 @@ class _ScheduleViewState extends State { }, onContinuousDayChanged: (value) { setState(() { + final cur = profesional.schedules.sunday; + final updated = !value + ? cur.copyWith( + continuousDay: false, + range1Hour2: cur.range1Hour2 ?? const TimeOfDay(hour: 12, minute: 0), + range2Hour1: cur.range2Hour1 ?? const TimeOfDay(hour: 14, minute: 0), + ) + : cur.copyWith(continuousDay: true); professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - sunday: profesional.schedules.sunday.copyWith( - continuousDay: value, - ), - ), - ); + schedules: profesional.schedules.copyWith(sunday: updated)); }); }, onRange1Hour1Pick: (pickedTime) {