0

我有请假申请表的输入

"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 时,它会返回错误。任何人都可以给我一些建议吗?非常感谢

4

1 回答 1

0

您的问题是您将 return false 发送到如下响应:您不能在路由方法中发送 bool 例如:

if($exists) {
        return false;
    }

if($exists) {
        return response()->json([
        'success' => false,
        'message' => 'what ever'
    ], 500); 
    }
于 2018-11-09T06:18:07.383 回答