Пример #1
0
 public static function disponible($horarios, $asignatura_id, $ciclo_id, $horas)
 {
     $ciclo = Ciclo::find($ciclo_id);
     $asignatura = Asignatura::find($asignatura_id);
     $profesores_disponibles = self::whereHas('clases', function ($q) use($ciclo_id, $horarios) {
         $q->whereHas('grupo', function ($q) use($ciclo_id) {
             $q->where('ciclo_id', '=', $ciclo_id);
         })->whereIn('horario_id', array_fetch($horarios->toArray(), 'id'));
     }, '<=', $horarios->count() - $horas)->whereHas('asignaturas', function ($q) use($asignatura) {
         $q->where('asignatura_id', '=', $asignatura->id);
     })->get();
     if ($profesores_disponibles->count() > 0) {
         return $profesores_disponibles->random();
     }
     $profesores_capacitables = Profesor::whereHas('clases', function ($q) use($ciclo_id, $horarios) {
         $q->whereHas('grupo', function ($q) use($ciclo_id) {
             $q->where('ciclo_id', '=', $ciclo_id);
         })->whereIn('horario_id', array_fetch($horarios->toArray(), 'id'));
     }, '<=', $horarios->count() - $horas)->whereDoesntHave('asignaturas', function ($q) use($asignatura) {
         $q->where('asignatura_id', '=', $asignatura->id);
     })->has('asignaturas', '<', 10)->get();
     if ($profesores_capacitables->count() > 0) {
         $profesor = $profesores_capacitables->random();
         $profesor->asignaturas()->attach($asignatura->id);
         return $profesor;
     }
     $profesor = self::crearProfesor();
     $profesor->asignaturas()->attach($asignatura->id);
     return $profesor;
 }
Пример #2
0
 public static function curp($nombre, $paterno, $materno, $fecha, $genero, $estado)
 {
     $nombre = str_replace(array('á', 'Á', 'é', 'É', 'í', 'Í', 'ó', 'Ó', 'ú', 'Ú', 'ñ', 'Ñ'), array('a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U', 'x', 'X'), $nombre);
     $paterno = str_replace(array('á', 'Á', 'é', 'É', 'í', 'Í', 'ó', 'Ó', 'ú', 'Ú', 'ñ', 'Ñ'), array('a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U', 'x', 'X'), $paterno);
     $materno = str_replace(array('á', 'Á', 'é', 'É', 'í', 'Í', 'ó', 'Ó', 'ú', 'Ú', 'ñ', 'Ñ'), array('a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U', 'x', 'X'), $materno);
     $curp = $paterno[0];
     //primera letra apellido paterno
     preg_match("/([aeiou])/", substr($paterno, 1), $vocal);
     $curp .= $vocal[1];
     //primera vocal interna apellido paterno
     $curp .= $materno[0];
     //primera letra apellido materno
     $curp .= $nombre[0];
     //primera letra nombre
     $fecha = new DateTime($fecha);
     $curp .= $fecha->format('y');
     //año
     $curp .= $fecha->format('m');
     //mes
     $curp .= $fecha->format('d');
     //dia
     $curp .= $genero;
     //genero
     $curp .= $estado;
     //clave estado
     preg_match("/([^aeiou])/i", substr($paterno, 1), $consonante);
     $curp .= $consonante[1];
     //primera consonante interna apellido paterno;
     preg_match("/([^aeiou])/i", substr($materno, 1), $consonante);
     $curp .= $consonante[1];
     //primera consonante interna apellido materno;
     preg_match("/([^aeiou])/i", substr($nombre, 1), $consonante);
     $curp .= $consonante[1];
     //primera consonante interna del nombre;
     //homoclave
     for ($i = 65; $i <= 90; $i++) {
         if (Alumno::where('curp', 'like', '%' . strtoupper($curp . chr($i)) . '%')->get()->isEmpty() && Profesor::where('curp', 'like', '%' . strtoupper($curp . chr($i)) . '%')->get()->isEmpty()) {
             $curp .= chr($i);
             break;
         }
     }
     $curp .= rand(1, 9);
     return strtoupper($curp);
 }
Пример #3
0
 public static function crearClases($grupo_id, $ciclo_id)
 {
     $grupo = Grupo::find($grupo_id);
     $asignaturas = Asignatura::with(array('carreras' => function ($q) use($grupo) {
         $q->where('carrera_id', '=', $grupo->carrera_id);
     }))->whereHas('carreras', function ($q) use($grupo) {
         $q->where('carrera_id', '=', $grupo->carrera_id)->where('cuatrimestre', '=', $grupo->cuatrimestre);
     })->get();
     foreach ($asignaturas as $asignatura) {
         $horas_semana = $asignatura->carreras->first()->pivot->horas_semana;
         $horarios_disponibles = Horario::whereDoesntHave('clases', function ($q) use($grupo) {
             $q->where('grupo_id', '=', $grupo->id);
         })->get();
         $profesor = Profesor::disponible($horarios_disponibles, $asignatura->id, $ciclo_id, $horas_semana);
         $horarios_seleccionados = Horario::organizarSemana($horarios_disponibles, $profesor->id, $horas_semana, $ciclo_id);
         foreach ($horarios_seleccionados as $horario) {
             $aula = Aula::disponible($horario->id, $ciclo_id);
             $clase = Clase::create(array('profesor_id' => $profesor->id, 'grupo_id' => $grupo->id, 'asignatura_id' => $asignatura->id, 'aula_id' => $aula->id, 'horario_id' => $horario->id));
         }
     }
 }