Laravel controller ajax - dathalongbay/notes GitHub Wiki
public function checkStoreTableRestaurantAjax(Request $request) {
$duplicate = 0;
$duplicateMessage = '';
$listTime = [];
if (isset($request->start_time) && is_array($request->start_time) && !empty($request->start_time)) {
for($i = 0; $i < count($request->start_time); $i++) {
if (isset($request->start_time[$i]) && isset($request->end_time[$i]) && isset($request->source[$i]) && isset($request->status[$i])) {
$listTime[$i] = [
"start_time" => $request->start_time[$i], "end_time" => $request->end_time[$i],
"source" => $request->source[$i], "status" => $request->status[$i]
];
} else {
$duplicate = 1;
$duplicateMessage = 'Dữ liệu không hợp lệ';
$response = [
'duplicate' => $duplicate,
'msg' => $duplicateMessage,
];
return response()->json($response);
}
}
}
$checkTimeList = $listTime;
$patternRegexDateTime = "/^\d\d\d\d-\d\d-\d\d \d\d:\d\d$/";
if (is_array($listTime) && !empty($listTime)) {
foreach($listTime as $keyItemTime => $itemTime) {
$startTime = strtotime($itemTime['start_time']);
$endTime = strtotime($itemTime['end_time']);
if (preg_match($patternRegexDateTime, $itemTime['start_time']) == 1 && preg_match($patternRegexDateTime, $itemTime['end_time']) == 1) {
if ($startTime >= $endTime) {
$duplicate = 1;
$duplicateMessage = "Khung thời gian " . $itemTime['start_time'] . " đến " . $itemTime['end_time'] . " không hợp lệ . Thời gian bắt đầu phải nhỏ hơn thời gian kết thúc";
break;
}
} else {
$duplicate = 1;
$duplicateMessage = "Khung thời gian " . $itemTime['start_time'] . " đến " . $itemTime['end_time'] . " không hợp lệ . Định dạng thời gian không đúng YYYY-mm-dd HH:ii vd 2020-05-15 12:15";
break;
}
foreach($checkTimeList as $keyCheckTime => $checkItemTime) {
$checkStartTime = strtotime($checkItemTime['start_time']);
$checkEndTime = strtotime($checkItemTime['end_time']);
if ( ($keyItemTime != $keyCheckTime) && ($itemTime["source"] == $checkItemTime["source"]) && ($itemTime["status"] == 1) && ($checkItemTime["status"] == 1) ) {
if ( (($checkStartTime <= $startTime) && ($startTime <= $checkEndTime)) || (($checkStartTime <= $endTime) && ($endTime <= $checkEndTime)) ) {
$duplicate = 1;
$duplicateMessage = "Khung thời gian " . $itemTime['start_time'] . " đến " . $itemTime['end_time'] . " trùng với khung " . $checkItemTime['start_time'] . " đến " . $checkItemTime['end_time'];
break;
}
} //
} // endforeach level 2
if ($duplicate == 1) {
break;
}
} // endforeach level 1
}
$response = [
'duplicate' => $duplicate,
'msg' => $duplicateMessage,
];
return response()->json($response);
}