Возвращает Содержимое ответа должно быть строкой или объектом, реализующим __toString () при проверке заблокированного дня на выезд аутентифицированного пользователя. - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть ввод формы запроса на отпуск

"leave_from_date" : "2018-11-02 08:30:00"
"leave_to_date" : "2018-11-07 09:30:00"
"date_applied" : 5
"leave_type" : 2

Но я установил тип события 2: заблокированный день с 2018-11-04 по 2018-11-06, но я получил ошибку Response content must be a string or object implementing __toString()

Это мой код ниже, я проверяю, заблокирован ли тип дня 2 или нет. И если это не событие типа 2, оно будет добавлено в базу данных.

public function store(Request $request){
        // $leave_request = $this->repository->create($request->all());

        //exception for blocked day

        $start_date = Carbon::parse(request('leave_from_date'))->startOfDay();
        $end_date = Carbon::parse(request('leave_to_date'))->startOfDay();

        //Change string to datetime
        $events = Events::where('event_type_id', 2 )
            ->where('is_recurring', 1)
            ->get();

        foreach ($events as $event) {

                /** @var Events $event */
                $rrule = $event->toRRule();

                foreach ($rrule as $blocked_date) {

                    /** @var \DateTime $blocked_date */
                    $blocked_day = Carbon::createFromTimestamp($blocked_date->getTimestamp());
                    if ($blocked_day->between($start_date, $end_date)) {
                        return false;
                    }
                 }

        }


        //For One time event check in blocked day type 2
        $exists = DB::table('events')
            ->where('event_type_id', 2)
            ->where('from_date', '<=', $start_date->endOfDay()) // cuoi ngay
            ->where('to_date', '>=', $start_date->startOfDay()) // dau ngay
            ->orWhere(function ($query) use($end_date) {
                $query->where('event_type_id', 2)
                    ->where('from_date', '<=', $end_date->endOfDay())
                    ->where('to_date', '>=', $end_date->startOfDay());
            })->orWhere(function ($query) use($start_date, $end_date) {
                $query->where('event_type_id', 2)
                    ->where('from_date', '<=', $start_date->endOfDay())
                    ->where('to_date', '>=', $end_date->startOfDay());
            })->orWhere(function ($query) use($start_date, $end_date) {
                $query->where('event_type_id', 2)
                    ->where('from_date', '<=', $end_date->endOfDay())
                    ->where('to_date', '>=', $start_date->startOfDay());
            })->exists();

        if($exists) {
            return false;
        }

        //--------------------------------


        $this->validate($request, [
        'leave_from_date' => 'required|date_format:Y-m-d H:i:s',
        'leave_to_date' => 'date_format:Y-m-d H:i:s|required',
        // 'emp_id' => 'exists:employees,employee_id',
        'leave_type' => 'required|between:0,5',
    ]);

        $leave_request = new LeaveRequest();
        $leave_request->leave_from_date = $request->leave_from_date;
        $leave_request->leave_to_date = $request->leave_to_date;
        $leave_request->leave_type = $request->leave_type;
        $leave_request->date_applied = $request->date_applied;

        if($this->user->leave_request()->save($leave_request))
            return response()->json([
            'success' => true,
            'Leave request' => $leave_request
        ]);
        else
            return response()->json([
            'success' => false,
            'message' => 'Sorry, leave request could not be added'
        ], 500);            
    }

Когда я удалил все исключения за заблокированный день, это добавит успех. Но когда я проверяю на заблокированный тип 2 дня, это возвращает ошибку. Кто-нибудь может дать мне несколько советов по этому поводу? Большое вам спасибо

1 Ответ

0 голосов
/ 09 ноября 2018

Ваша проблема в том, что вы отправляете ответ false, как показано ниже: Вы не можете отправить bool в методе маршрута например:

if($exists) {
        return false;
    }

до

if($exists) {
        return response()->json([
        'success' => false,
        'message' => 'what ever'
    ], 500); 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...