Bổ sung check trùng ngày phép đã tạo
This commit is contained in:
parent
32b197969c
commit
ca766fc293
|
|
@ -229,40 +229,71 @@ class TicketController extends Controller
|
|||
return AbstractController::ResultError('Không thể tính toán khoảng thời gian nghỉ hợp lệ.');
|
||||
}
|
||||
// Lây thông tin tickets đang ở trạng thái WAITING
|
||||
$ticketsWaiting = Ticket::where('user_id', $user->id)->where('status', 'WAITING')->where('type', 'ONLEAVE')->get();
|
||||
$ticketsWaiting = Ticket::where('user_id', $user->id)->where('status', 'WAITING')->where('type', '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 đang ở trạng thái CONFIRMED
|
||||
$ticketsConfirmed = Ticket::where('user_id', $user->id)->where('status', 'CONFIRMED')
|
||||
->whereIn('type', ['ONLEAVE', 'LEAVE_WITHOUT_PAY'])
|
||||
->where(DB::raw('DATE(start_date)'), '>=', $start_date->toDateString())
|
||||
->where(DB::raw('DATE(end_date)'), '<=', $end_date->toDateString())
|
||||
->get();
|
||||
|
||||
$dataListPeriodConfirmed = [];
|
||||
if ($ticketsConfirmed->count() > 0) {
|
||||
foreach ($ticketsConfirmed as $ticket) {
|
||||
$dataListPeriodConfirmed = array_merge($dataListPeriodConfirmed, $this->getAllPeriodNew($ticket->start_date, $ticket->start_period, $ticket->end_date, $ticket->end_period));
|
||||
}
|
||||
}
|
||||
|
||||
// Chuyển đổi mảng đa chiều thành mảng chuỗi để có thể so sánh
|
||||
$periodStrings = [];
|
||||
$waitingPeriodStrings = [];
|
||||
$confirmedPeriodStrings = [];
|
||||
|
||||
foreach ($dataListPeriod as $period) {
|
||||
if($period['period'] == 'ALL'){
|
||||
if ($period['period'] == 'ALL') {
|
||||
$periodStrings[] = $period['date'] . '_S';
|
||||
$periodStrings[] = $period['date'] . '_C';
|
||||
}else{
|
||||
} else {
|
||||
$periodStrings[] = $period['date'] . '_' . $period['period'];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($dataListPeriodWaiting as $period) {
|
||||
if($period['period'] == 'ALL'){
|
||||
if ($period['period'] == 'ALL') {
|
||||
$waitingPeriodStrings[] = $period['date'] . '_S';
|
||||
$waitingPeriodStrings[] = $period['date'] . '_C';
|
||||
}else{
|
||||
} else {
|
||||
$waitingPeriodStrings[] = $period['date'] . '_' . $period['period'];
|
||||
}
|
||||
}
|
||||
|
||||
// Kiểm tra xem có sự trùng lặp giữa hai mảng không
|
||||
|
||||
foreach ($dataListPeriodConfirmed as $period) {
|
||||
if ($period['period'] == 'ALL') {
|
||||
$confirmedPeriodStrings[] = $period['date'] . '_S';
|
||||
$confirmedPeriodStrings[] = $period['date'] . '_C';
|
||||
} else {
|
||||
$confirmedPeriodStrings[] = $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('Đã tồn tại ticket đang trong thời gian chọn, 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 đã đượ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!');
|
||||
}
|
||||
|
||||
// Tạo thông báo về tickets waiting nếu có
|
||||
$waitingTicketsMessage = '';
|
||||
if (!empty($dataListPeriodWaiting)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue