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);
    }