dev #130
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -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
 | 
			
		||||
            $ticketsConfirmed = Ticket::where('user_id', $user->id)
 | 
			
		||||
                ->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
 | 
			
		||||
            $periodStrings = [];
 | 
			
		||||
            $waitingPeriodStrings = [];
 | 
			
		||||
            $waitingPeriodStringsWFH = [];
 | 
			
		||||
            $confirmedPeriodStrings = [];
 | 
			
		||||
 | 
			
		||||
            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) {
 | 
			
		||||
                if ($period['period'] == 'ALL') {
 | 
			
		||||
                    $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!');
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // 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
 | 
			
		||||
            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!');
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
            }
 | 
			
		||||
        } 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
 | 
			
		||||
            $ticketsConfirmed = Ticket::where('user_id', $user->id)
 | 
			
		||||
                ->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
 | 
			
		||||
            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!');
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue