From e05e92b96bc295f67baf653614670e3f7b379fbf Mon Sep 17 00:00:00 2001 From: Truong Vo <41848815+vmtruong301296@users.noreply.github.com> Date: Mon, 16 Jun 2025 08:15:14 +0700 Subject: [PATCH] =?UTF-8?q?fix=20l=E1=BB=97i=20c=C3=B3=20ph=C3=A9p=20?= =?UTF-8?q?=C4=91=C6=B0=E1=BB=A3c=20duy=E1=BB=87t=20trong=20th=E1=BB=9Di?= =?UTF-8?q?=20gian=20=C4=91=C6=B0=E1=BB=A3c=20ch=E1=BB=8Dn=20khi=20t?= =?UTF-8?q?=E1=BA=A1o=20ticket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/Http/Controllers/TicketController.php | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/BACKEND/Modules/Admin/app/Http/Controllers/TicketController.php b/BACKEND/Modules/Admin/app/Http/Controllers/TicketController.php index 8ea27d8..2e21060 100644 --- a/BACKEND/Modules/Admin/app/Http/Controllers/TicketController.php +++ b/BACKEND/Modules/Admin/app/Http/Controllers/TicketController.php @@ -238,10 +238,24 @@ class TicketController extends Controller } // Lấy thông tin tickets nghỉ phép đang ở trạng thái CONFIRMED - $ticketsConfirmed = Ticket::where('user_id', $user->id)->where('status', 'CONFIRMED') + $ticketsConfirmed = Ticket::where('user_id', $user->id) + ->where('status', 'CONFIRMED') ->whereIn('type', ['ONLEAVE']) - ->where(DB::raw('DATE(start_date)'), '>=', $start_date->toDateString()) - ->where(DB::raw('DATE(end_date)'), '<=', $end_date->toDateString()) + ->where(function($query) use ($start_date, $end_date) { + $query->where(function($q) use ($start_date, $end_date) { + // Trường hợp 1: start_date nằm trong khoảng + $q->whereBetween(DB::raw('DATE(start_date)'), [$start_date->toDateString(), $end_date->toDateString()]); + }) + ->orWhere(function($q) use ($start_date, $end_date) { + // Trường hợp 2: end_date nằm trong khoảng + $q->whereBetween(DB::raw('DATE(end_date)'), [$start_date->toDateString(), $end_date->toDateString()]); + }) + ->orWhere(function($q) use ($start_date, $end_date) { + // Trường hợp 3: Khoảng thời gian được chọn nằm trong khoảng của ticket + $q->where(DB::raw('DATE(start_date)'), '<=', $start_date->toDateString()) + ->where(DB::raw('DATE(end_date)'), '>=', $end_date->toDateString()); + }); + }) ->get(); $dataListPeriodConfirmed = []; @@ -250,7 +264,7 @@ class TicketController extends Controller $dataListPeriodConfirmed = array_merge($dataListPeriodConfirmed, $this->getAllPeriodNew($ticket->start_date, $ticket->start_period, $ticket->end_date, $ticket->end_period)); } } - + // dd($dataListPeriodConfirmed,$ticketsConfirmed,$start_date->toDateString(),$end_date->toDateString()); // Chuyển đổi mảng đa chiều thành mảng chuỗi để có thể so sánh $periodStrings = []; $waitingPeriodStrings = []; @@ -292,7 +306,7 @@ class TicketController extends Controller if (count(array_intersect($periodStrings, $confirmedPeriodStrings)) > 0) { return AbstractController::ResultError('Đã có ticket được duyệt trong thời gian này, không thể tạo ticket mới!'); } - + // Tạo thông báo về tickets waiting nếu có $waitingTicketsMessage = ''; if (!empty($dataListPeriodWaiting)) {