/** * Store a newly created resource in storage. * @Post("claseschedule/store") * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function claseScheduleStore(Request $request) { $claseschedule = new ClaseSchedule(); $claseschedule->capMax = $request->capMax; $claseschedule->startTime = $request->startTime; $claseschedule->endTime = $request->endTime; $claseschedule->date = $request->date; $claseschedule->intensity = $request->intensity; $claseschedule->instructor = $request->instructor; $claseschedule->clase_id = $request->clase_id; $claseschedule->schedule_id = $request->schedule_id; $claseschedule->room_id = $request->room_id; if ($request->startTime < $request->endTime) { $newStartTime = date('H:i', strtotime($request->startTime) + 60); $newEndTime = date('H:i', strtotime($request->endTime) - 60); $hoursStart = ClaseSchedule::whereBetween('startTime', [$newStartTime, $newEndTime])->where('date', $request->date)->where('schedule_id', $request->schedule_id)->lists('room_id'); $hoursEnd = ClaseSchedule::whereBetween('endTime', [$newStartTime, $newEndTime])->where('date', $request->date)->where('schedule_id', $request->schedule_id)->lists('room_id'); //Class with same start or end time $hoursEqStart = ClaseSchedule::where('startTime', '=', $request->startTime)->where('date', $request->date)->where('schedule_id', $request->schedule_id)->lists('room_id'); $hoursEqEnd = ClaseSchedule::where('endTime', '=', $request->endTime)->where('date', $request->date)->where('schedule_id', $request->schedule_id)->lists('room_id'); $rooms_match = array_unique(array_merge($hoursStart->toArray(), $hoursEnd->toArray(), $hoursEqStart->toArray(), $hoursEqEnd->toArray())); $flag_room = true; foreach ($rooms_match as $room) { if ($flag_room) { if ($request->room_id == $room) { $flag_room = false; } } } if ($flag_room) { $claseschedule->save(); Session::flash('message-success', 'Clase creada correctamente.'); return Redirect::to('/schedule/index/event/' . $request->schedule_id); } else { Session::flash('message-error', 'Error: Existe un evento entre las horas indicadas sobre la misma sala.'); return Redirect::to('/claseschedule/create'); } } else { Session::flash('message-error', 'Error: La hora de inicio no puede ser mayor o igual a la hora de fin del evento.'); return Redirect::to('/claseschedule/create'); } }