From 2e2942e42ce2c2baacc1ed363407faedd42b7203 Mon Sep 17 00:00:00 2001 From: nikden13 Date: Thu, 10 Dec 2020 00:14:00 +0700 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8E=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0?= =?UTF-8?q?=D1=82=20=D0=BD=D0=B0=20=D1=82=D0=B5=D0=BA=D1=83=D1=89=D1=83?= =?UTF-8?q?=D1=8E=20=D0=BD=D0=B5=D0=B4=D0=B5=D0=BB=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Filters/TimetableFilter.php | 7 +++--- app/Http/Controllers/TimetableController.php | 23 +++++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/Filters/TimetableFilter.php b/app/Filters/TimetableFilter.php index e834c08..9fdb3ae 100644 --- a/app/Filters/TimetableFilter.php +++ b/app/Filters/TimetableFilter.php @@ -30,11 +30,12 @@ class TimetableFilter extends QueryFilter protected function date($value) { - $start_date = str_replace('/', '-', $value); - $end_date = Carbon::parse($start_date) + $formatValue = str_replace('/', '-', $value); + $weekStartDate = Carbon::parse($formatValue)->startOfWeek()->format('Y-m-d'); + $weekEndDate = Carbon::parse($weekStartDate) ->addDays(5) ->format('Y-m-d'); - $this->builder = $this->builder->whereBetween('date', [$start_date, $end_date]); + $this->builder = $this->builder->whereBetween('date', [$weekStartDate, $weekEndDate]); } } diff --git a/app/Http/Controllers/TimetableController.php b/app/Http/Controllers/TimetableController.php index 964dbf0..478b080 100644 --- a/app/Http/Controllers/TimetableController.php +++ b/app/Http/Controllers/TimetableController.php @@ -20,6 +20,15 @@ class TimetableController extends Controller ]); $builder = Timetable::all()->sortBy('timeStart'); $timetables = (new TimetableFilter($builder, $request))->apply()->values(); + if (!$request->filled('date')) { + $now = Carbon::now(); + $weekStartDate = $now->startOfWeek()->format('Y-m-d'); + $weekEndDate = Carbon::parse($weekStartDate) + ->addDays(5) + ->format('Y-m-d'); + $timetables = $timetables->whereBetween('date', [$weekStartDate, $weekEndDate]); + } + $filterTimetables = collect([]); foreach ($timetables as $timetable) { $subject = $timetable->subject->name; @@ -36,12 +45,16 @@ class TimetableController extends Controller 'class' => $class, ]); } + $dateTimetables = []; - for ($i = 0; $i < 6; $i++) { - $date = Carbon::parse($request->input('date')) - ->addDays($i) - ->format('Y-m-d'); - array_push($dateTimetables, [$date => $filterTimetables->where('date', $date)->values()]); + if (!$filterTimetables->isEmpty()) { + for ($i = 0; $i < 6; $i++) { + $date = Carbon::parse($request->input('date')) + ->startOfWeek() + ->addDays($i) + ->format('Y-m-d'); + array_push($dateTimetables, [$date => $filterTimetables->where('date', $date)->values()]); + } } return response()->json($dateTimetables, 200); }