truong-leave-day #124
			
				
			
		
		
		
	| 
						 | 
					@ -238,6 +238,15 @@ class TicketController extends Controller
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $ticketsWaitingWFH = Ticket::where('user_id', $user->id)->where('status', 'WAITING')->whereIn('type', ['WFH'])
 | 
				
			||||||
 | 
					                ->get();
 | 
				
			||||||
 | 
					            $dataListPeriodWaitingWFH = [];
 | 
				
			||||||
 | 
					            if ($ticketsWaitingWFH->count() > 0) {
 | 
				
			||||||
 | 
					                foreach ($ticketsWaitingWFH as $ticket) {
 | 
				
			||||||
 | 
					                    $dataListPeriodWaitingWFH = array_merge($dataListPeriodWaitingWFH, $this->getAllPeriodNew($ticket->start_date, $ticket->start_period, $ticket->end_date, $ticket->end_period));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Lấy thông tin tickets nghỉ phép đang ở trạng thái CONFIRMED
 | 
					            // Lấy thông tin tickets nghỉ phép đang ở trạng thái CONFIRMED
 | 
				
			||||||
            $ticketsConfirmed = Ticket::where('user_id', $user->id)
 | 
					            $ticketsConfirmed = Ticket::where('user_id', $user->id)
 | 
				
			||||||
                ->where('status', 'CONFIRMED')
 | 
					                ->where('status', 'CONFIRMED')
 | 
				
			||||||
| 
						 | 
					@ -269,6 +278,7 @@ class TicketController extends Controller
 | 
				
			||||||
            // Chuyển đổi mảng đa chiều thành mảng chuỗi để có thể so sánh
 | 
					            // Chuyển đổi mảng đa chiều thành mảng chuỗi để có thể so sánh
 | 
				
			||||||
            $periodStrings = [];
 | 
					            $periodStrings = [];
 | 
				
			||||||
            $waitingPeriodStrings = [];
 | 
					            $waitingPeriodStrings = [];
 | 
				
			||||||
 | 
					            $waitingPeriodStringsWFH = [];
 | 
				
			||||||
            $confirmedPeriodStrings = [];
 | 
					            $confirmedPeriodStrings = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            foreach ($dataListPeriod as $period) {
 | 
					            foreach ($dataListPeriod as $period) {
 | 
				
			||||||
| 
						 | 
					@ -289,6 +299,15 @@ class TicketController extends Controller
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach ($dataListPeriodWaitingWFH as $period) {
 | 
				
			||||||
 | 
					                if ($period['period'] == 'ALL') {
 | 
				
			||||||
 | 
					                    $waitingPeriodStringsWFH[] = $period['date'] . '_S';
 | 
				
			||||||
 | 
					                    $waitingPeriodStringsWFH[] = $period['date'] . '_C';
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    $waitingPeriodStringsWFH[] = $period['date'] . '_' . $period['period'];
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            foreach ($dataListPeriodConfirmed as $period) {
 | 
					            foreach ($dataListPeriodConfirmed as $period) {
 | 
				
			||||||
                if ($period['period'] == 'ALL') {
 | 
					                if ($period['period'] == 'ALL') {
 | 
				
			||||||
                    $confirmedPeriodStrings[] = $period['date'] . '_S';
 | 
					                    $confirmedPeriodStrings[] = $period['date'] . '_S';
 | 
				
			||||||
| 
						 | 
					@ -303,6 +322,11 @@ class TicketController extends Controller
 | 
				
			||||||
                return AbstractController::ResultError('Đã có ticket đang chờ duyệt trong thời gian này, không thể tạo ticket mới!');
 | 
					                return AbstractController::ResultError('Đã có ticket đang chờ duyệt trong thời gian này, không thể tạo ticket mới!');
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Kiểm tra xem có sự trùng lặp giữa request mới và tickets đang chờ duyệt WFH
 | 
				
			||||||
 | 
					            if (count(array_intersect($periodStrings, $waitingPeriodStringsWFH)) > 0) {
 | 
				
			||||||
 | 
					                return AbstractController::ResultError('Đã có ticket đang chờ duyệt trong thời gian này, không thể tạo ticket mới!');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Kiểm tra xem có sự trùng lặp giữa request mới và tickets đã được duyệt
 | 
					            // Kiểm tra xem có sự trùng lặp giữa request mới và tickets đã được duyệt
 | 
				
			||||||
            if (count(array_intersect($periodStrings, $confirmedPeriodStrings)) > 0) {
 | 
					            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!');
 | 
					                return AbstractController::ResultError('Đã có ticket được duyệt trong thời gian này, không thể tạo ticket mới!');
 | 
				
			||||||
| 
						 | 
					@ -354,6 +378,16 @@ class TicketController extends Controller
 | 
				
			||||||
                return AbstractController::ResultError("Không thỏa mãn điều kiện ngày phép", $balanceCheckResult);
 | 
					                return AbstractController::ResultError("Không thỏa mãn điều kiện ngày phép", $balanceCheckResult);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else if ($type === 'WFH') {
 | 
					        } else if ($type === 'WFH') {
 | 
				
			||||||
 | 
					            // Lấy thông tin tickets nghỉ phép đang ở trạng thái WAITING
 | 
				
			||||||
 | 
					            $ticketsWaiting = Ticket::where('user_id', $user->id)->where('status', 'WAITING')->whereIn('type', ['WFH', 'ONLEAVE'])
 | 
				
			||||||
 | 
					                ->get();
 | 
				
			||||||
 | 
					            $dataListPeriodWaiting = [];
 | 
				
			||||||
 | 
					            if ($ticketsWaiting->count() > 0) {
 | 
				
			||||||
 | 
					                foreach ($ticketsWaiting as $ticket) {
 | 
				
			||||||
 | 
					                    $dataListPeriodWaiting = array_merge($dataListPeriodWaiting, $this->getAllPeriodNew($ticket->start_date, $ticket->start_period, $ticket->end_date, $ticket->end_period));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Lấy thông tin tickets nghỉ phép đang ở trạng thái CONFIRMED
 | 
					            // Lấy thông tin tickets nghỉ phép đang ở trạng thái CONFIRMED
 | 
				
			||||||
            $ticketsConfirmed = Ticket::where('user_id', $user->id)
 | 
					            $ticketsConfirmed = Ticket::where('user_id', $user->id)
 | 
				
			||||||
                ->where('status', 'CONFIRMED')
 | 
					                ->where('status', 'CONFIRMED')
 | 
				
			||||||
| 
						 | 
					@ -405,6 +439,19 @@ class TicketController extends Controller
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach ($dataListPeriodWaiting as $period) {
 | 
				
			||||||
 | 
					                if ($period['period'] == 'ALL') {
 | 
				
			||||||
 | 
					                    $waitingPeriodStrings[] = $period['date'] . '_S';
 | 
				
			||||||
 | 
					                    $waitingPeriodStrings[] = $period['date'] . '_C';
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    $waitingPeriodStrings[] = $period['date'] . '_' . $period['period'];
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            // Kiểm tra xem có sự trùng lặp giữa request mới và tickets đang chờ duyệt
 | 
				
			||||||
 | 
					            if (count(array_intersect($periodStrings, $waitingPeriodStrings)) > 0) {
 | 
				
			||||||
 | 
					                return AbstractController::ResultError('Đã có ticket đang chờ duyệt trong thời gian này, không thể tạo ticket mới!');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Kiểm tra xem có sự trùng lặp giữa request mới và tickets đã được duyệt
 | 
					            // Kiểm tra xem có sự trùng lặp giữa request mới và tickets đã được duyệt
 | 
				
			||||||
            if (count(array_intersect($periodStrings, $confirmedPeriodStrings)) > 0) {
 | 
					            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!');
 | 
					                return AbstractController::ResultError('Đã có ticket được duyệt trong thời gian này, không thể tạo ticket mới!');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue