Bổ sung check ticket đang được duyệt k thể tạo
This commit is contained in:
parent
655d9cd4c6
commit
5b65415d76
|
|
@ -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