public function addSchedule(Request $request, Skill $skill) { $input = $request->all(); $validator = Validator::make($request->all(), ['start_time' => 'required | date_format:H:i', 'end_time' => 'required | after:start_time', 'week_day' => 'required | integer', 'title' => 'required']); if ($validator->fails()) { return ['hasCallback' => 0, 'callback' => '', 'hasMsg' => 1, 'msg' => trans('profile.invalidSchedule'), 'msgType' => 'danger', 'returns' => $validator->errors()->all()]; } $conflict = $skill->schedules()->whereRaw('((start_time <= ? AND end_time >= ?) OR (start_time >= ? AND start_time <= ?) OR (end_time >= ? AND end_time <= ?) OR (start_time >= ? AND end_time <= ?)) AND (week_day = ?) ', [$input['start_time'], $input['end_time'], $input['start_time'], $input['end_time'], $input['start_time'], $input['end_time'], $input['start_time'], $input['end_time'], $input['week_day']])->count(); if (!$conflict) { $skill->schedules()->create($request->all()); return ['hasCallback' => '1', 'callback' => 'skill_schedules', 'hasMsg' => 0, 'msg' => '', 'returns' => $skill->schedules()->get()]; } else { return ['hasCallback' => 0, 'callback' => '', 'hasMsg' => 1, 'msg' => trans('profile.conflictSchedule'), 'msgType' => 'danger', 'returns' => '']; } }