public function get_check_horas_profesor() { $data = Input::all(); $horas = []; //Obtiene las horas ocupadas por la materia en cuestión. $response = Horario::select('horarios.*', 'hd.disponible', 'hd.id')->join('plantillas as p', 'horarios.id_plantilla', '=', 'p.id')->join('aulas as a', 'a.id', '=', 'horarios.id_aula')->join('subjects as s', 'p.id_subject', '=', 's.id')->join('professors as pr', 'pr.id', '=', 'p.id_profesor')->join('horas_disponibles as hd', function ($join) { $join->on('a.id', '=', 'hd.id_aula'); $join->on('horarios.dia', '=', 'hd.dia')->where('hd.disponible', '=', 0); })->where('p.grupo', $data['grupo'])->where('p.id_proyecto', $data['idProyecto'])->where('p.id_profesor', $data['idProf'])->get(); //Guarda los ID de las horas que ocupa la materia, los cuales se relacionan directamente con el aula y el día. foreach ($response as $hora) { array_push($horas, $hora['id']); } //Se obtienen las horas disponibles en el aula actual. $aux = Disponible::select('*')->where('id_aula', $response[0]->id_aula)->get(); /* Se ponen temporalmente como disponibles las horas que se utilizan para esta materia en el aula seleccionada. Esto para asegurar el buen funcionamiento de los combobox para selección de horas */ for ($i = 0; $i < sizeof($response); $i++) { for ($k = 0; $k < sizeof($aux); $k++) { if ($response[$i]->id == $aux[$k]->id) { $aux[$k]->disponible = 1; } } } //Obtiene el aula y las horas ocupadas por esta materia por día. $response = Horario::select('horarios.*', 'hd.disponible', 'hd.id')->join('plantillas as p', 'horarios.id_plantilla', '=', 'p.id')->join('aulas as a', 'a.id', '=', 'horarios.id_aula')->join('subjects as s', 'p.id_subject', '=', 's.id')->join('professors as pr', 'pr.id', '=', 'p.id_profesor')->join('horas_disponibles as hd', function ($join) { $join->on('a.id', '=', 'hd.id_aula'); $join->on('horarios.dia', '=', 'hd.dia')->where('hd.disponible', '=', 0); })->where('p.grupo', $data['grupo'])->where('p.id_proyecto', $data['idProyecto'])->where('p.id_profesor', $data['idProf'])->groupBy('horarios.id')->get(); $data = []; array_push($data, $response); array_push($data, $aux); array_push($data, $horas); //Se envían el array de datos que contiene las horas ocupadas del aula por día y las horas disponibles por día. echo json_encode($data); }