Laravel Controller Repository - dathalongbay/notes GitHub Wiki

public function storeTableRestaurant(Request $request)
    {
        $currentUser = Auth::user();

        // check if is role cskh
        if ($currentUser->getRole()->id == 2) {
            return redirect(action('Admin\Bookings\Booking@cskh'));
        }

        if ($currentUser->hasRole('restaurant')) {
            $resIdFromCurrentUser = ($currentUser->restaurants()->first()) ['code'];  // Lấy ra giá trị nhà hàng đầu tiên vì quan hệ user - restaurant (n:n)

            $restaurant = new Restaurant([
                'code' => (int) $resIdFromCurrentUser,
                'customerServiceTableAmount' => $request->customer_service_table_amount,
                'websiteTableAmount' => $request->website_table_amount,
            ]);

            $doUpdate = $this->restaurantRepo->updateRestaurant($restaurant);

            $patternRegexDateTime = "/^\d\d\d\d-\d\d-\d\d \d\d:\d\d$/";

            $dataBookingSeatSchedules = [];
            if (isset($request->schedule_id) && is_array($request->schedule_id) && !empty($request->schedule_id)) {
                for($i = 0; $i < count($request->schedule_id); $i++) {
                    $checkStartTime = strtotime($request->start_time[$i]);
                    $checkEndTime = strtotime($request->end_time[$i]);

                   /* $a[] = preg_match($patternRegexDateTime, $request->start_time[$i]);
                    $b[] = preg_match($patternRegexDateTime, $request->end_time[$i]);*/
                    if (isset($request->schedule_id[$i]) && isset($request->status[$i]) && isset($request->source[$i]) && isset($request->start_time[$i]) && isset($request->end_time[$i]) && isset($request->seat_amount[$i]) && ($request->seat_amount[$i] >= 0) &&
                        (preg_match($patternRegexDateTime, $request->start_time[$i]) == 1) && (preg_match($patternRegexDateTime, $request->end_time[$i]) == 1)
                        && ($checkStartTime < $checkEndTime)
                    ) {
                        $dataBookingSeatSchedules[$i] = [
                            "id" => $request->schedule_id[$i],"status" => $request->status[$i],
                            "restaurant_code" => (int) $resIdFromCurrentUser, "source" => $request->source[$i], "start_time" => $request->start_time[$i], "end_time" => $request->end_time[$i], "seat_amount" => $request->seat_amount[$i]
                        ];
                    }
                }
            }

            if (is_array($dataBookingSeatSchedules) && !empty($dataBookingSeatSchedules)) {
                foreach($dataBookingSeatSchedules as $dataBookingSeatScheduleItem){
                    $dataBookingSeatScheduleItemId = (int)$dataBookingSeatScheduleItem["id"];
                    $status = (int)$dataBookingSeatScheduleItem["status"];
                    unset($dataBookingSeatScheduleItem["id"]);
                    unset($dataBookingSeatScheduleItem["status"]);

                    if ($dataBookingSeatScheduleItemId > 0 && $status == 1) {
                        $this->bookingSeatSchedulesRepository->update($dataBookingSeatScheduleItem, $dataBookingSeatScheduleItemId);
                    }
                    if (!$dataBookingSeatScheduleItemId) {
                        $this->bookingSeatSchedulesRepository->create($dataBookingSeatScheduleItem);
                    }
                    if ($dataBookingSeatScheduleItemId > 0 && $status == 0) {
                        $this->bookingSeatSchedulesRepository->delete($dataBookingSeatScheduleItemId);
                    }
                }
            }

            if ($doUpdate->messageCode == Message::SUCCESS) {
                return redirect(action('Admin\Bookings\Booking@configTableRestaurant'))->with('flashMessage', 'Cập nhật thành công');
            } else {
                return redirect(action('Admin\Bookings\Booking@configTableRestaurant'))->with('flashMessage', $doUpdate->message);
            }
        }

        return redirect(action('Admin\Bookings\Booking@configTableRestaurant'))->with('flashMessage', '');
    } // end update