public function my_schedule()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         $data["actions"] = Session::get('actions');
         if (in_array('side_mi_horario', $data["actions"])) {
             $current_ay = AcademicYear::getCurrentAcademicYear();
             if (!$current_ay) {
                 return View::make('schedule/academic_year_error', $data);
             }
             $student = $data["user"]->student;
             $data["enrollment_info"] = $student->getCurrentEnrollment();
             $data["level"] = $data["enrollment_info"]->level;
             $data["schedules_data"] = $data["level"]->schedules()->orderBy('initial_hour')->get();
             return View::make('schedule/my_schedule', $data);
         } else {
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se intentó acceder a la ruta '" . Request::path() . "' por el método '" . Request::method() . "'";
             Helpers::registerLog(10, $log_description);
             Session::flash('error', 'Usted no tiene permisos para realizar dicha acción.');
             return Redirect::to('/dashboard');
         }
     } else {
         return View::make('error/error');
     }
 }
 public function logout()
 {
     // Llamo a la función para registrar el log de auditoria
     $log_description = "Se cerró sesión";
     Helpers::registerLog(2, $log_description);
     // Cierro la sesion del usuario
     Auth::logout();
     Session::flush();
     return Redirect::to('/');
 }
 public function delete_incident()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         $data["actions"] = Session::get('actions');
         if (in_array('side_ver_anotaciones', $data["actions"])) {
             $incident_id = Input::get('incident_id');
             $incident = ControlNotebookIncident::find($incident_id);
             if ($incident->teacher->id != $data["user"]->teacher->id) {
                 Session::flash('error', 'Usted no puede eliminar esta anotación.');
                 return Redirect::to('control_notebook_incidents/view_incidents')->withInput($input);
             }
             $incident->delete();
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se eliminó la Anotación con id {{$incident->id}}";
             Helpers::registerLog(5, $log_description);
             Session::flash('message', 'Se eliminó correctamente la anotación.');
             $input = ['level_id' => $incident->enrollment->level_id, 'student_id' => $incident->enrollment->student->id];
             return Redirect::to('control_notebook_incidents/view_incidents')->withInput($input);
         } else {
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se intentó acceder a la ruta '" . Request::path() . "' por el método '" . Request::method() . "'";
             Helpers::registerLog(10, $log_description);
             Session::flash('error', 'Usted no tiene permisos para realizar dicha acción.');
             return Redirect::to('/dashboard');
         }
     } else {
         return View::make('error/error');
     }
 }
 public function delete_academic_year()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         $data["actions"] = Session::get('actions');
         if (in_array('side_nuevo_anho_escolar', $data["actions"])) {
             $academic_year_id = Input::get('academic_year_id');
             $academic_year = AcademicYear::find($academic_year_id);
             // verificar si existen matriculas en el año escolar
             $exist_enrollments = $academic_year->enrollments;
             if ($exist_enrollments->isEmpty()) {
                 // elimino los comunicados
                 $academic_year->notices()->delete();
                 // elimino las tareas
                 $academic_year->homeworks()->delete();
                 // elimino las evaluaciones
                 $academic_year->evaluations()->delete();
                 // elimino el año escolar
                 $academic_year->delete();
                 // borro las carpetas
                 $success = File::deleteDirectory('files/' . $academic_year->dir_name . '/');
                 // Llamo a la función para registrar el log de auditoria
                 $log_description = "Se eliminó el Año escolar con id {{$academic_year->id}}";
                 Helpers::registerLog(5, $log_description);
                 Session::flash('message', 'Se eliminó correctamente el Año escolar.');
                 return Redirect::to('academic_years/list_academic_years');
             } else {
                 Session::flash('error', 'Hay alumnos matriculados en este Año Escolar. No es posible eliminarlo.');
                 return Redirect::to('academic_years/edit_academic_year/' . $academic_year->id);
             }
         } else {
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se intentó acceder a la ruta '" . Request::path() . "' por el método '" . Request::method() . "'";
             Helpers::registerLog(10, $log_description);
             Session::flash('error', 'Usted no tiene permisos para realizar dicha acción.');
             return Redirect::to('/dashboard');
         }
     } else {
         return View::make('error/error');
     }
 }
 public function delete_administrative_staff()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         $data["actions"] = Session::get('actions');
         if (in_array('side_nuevo_personal_administrativo', $data["actions"])) {
             $administrative_staff_id = Input::get('administrative_staff_id');
             $administrative_staff = AdministrativeStaff::find($administrative_staff_id);
             $user = $administrative_staff->user;
             $user->delete();
             $administrative_staff->delete();
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se eliminó el Personal Administrativo con id {{$administrative_staff->id}}";
             Helpers::registerLog(5, $log_description);
             Session::flash('message', 'Se eliminó correctamente el Personal Administrativo.');
             return Redirect::to('people/list_administrative_staff');
         } else {
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se intentó acceder a la ruta '" . Request::path() . "' por el método '" . Request::method() . "'";
             Helpers::registerLog(10, $log_description);
             Session::flash('error', 'Usted no tiene permisos para realizar dicha acción.');
             return Redirect::to('/dashboard');
         }
     } else {
         return View::make('error/error');
     }
 }
 public function show_homework($id)
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         $data["actions"] = Session::get('actions');
         if (in_array('side_mis_tareas', $data["actions"])) {
             $current_ay = AcademicYear::getCurrentAcademicYear();
             if (!$current_ay) {
                 return View::make('homeworks/academic_year_error', $data);
             }
             $data["homework_info"] = Homework::find($id);
             if (!$data["homework_info"]) {
                 Session::flash('error', 'No se encontró la Tarea solicitada.');
                 return Redirect::to('homeworks/my_homeworks');
             }
             $data["course_info"] = $data["homework_info"]->course;
             $data["level_info"] = $data["course_info"]->level;
             return View::make('homeworks/show_homework', $data);
         } else {
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se intentó acceder a la ruta '" . Request::path() . "' por el método '" . Request::method() . "'";
             Helpers::registerLog(10, $log_description);
             Session::flash('error', 'Usted no tiene permisos para realizar dicha acción.');
             return Redirect::to('/dashboard');
         }
     } else {
         return View::make('error/error');
     }
 }
 public function download_supply_list($id)
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         $data["actions"] = Session::get('actions');
         if (in_array('side_listar_niveles', $data["actions"]) || in_array('side_mis_matriculas', $data["actions"])) {
             $document = Document::find($id);
             if (!$document) {
                 Session::flash('error', 'No se encontró el documento solicitado.');
             }
             $path = $document->path . $document->name;
             $headers = array('Content-Type', mime_content_type($path));
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se descargó el Documento con id: {{$document->id}}";
             Helpers::registerLog(9, $log_description);
             return Response::download($path, basename($document->title), $headers);
         } else {
             // Llamo a la función para registrar el log de auditoria
             $descripcion_log = "Se intentó acceder a la ruta '" . Request::path() . "' por el método '" . Request::method() . "'";
             Helpers::registerLog(10, $descripcion_log);
             Session::flash('error', 'Usted no tiene permisos para realizar dicha acción.');
             return Redirect::to('/dashboard');
         }
     } else {
         return View::make('error/error');
     }
 }
 public function update_my_account()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         // Validate the info, create rules for the inputs
         $attributes = array('email' => 'E-mail', 'birthdate' => 'Fecha de nacimiento', 'telephone' => 'Teléfono o Celular', 'new_password' => 'Nueva Contraseña');
         $messages = array();
         $rules = array('email' => 'email|max:100|unique:users,email,' . $data["user"]->id . ',id,deleted_at,NULL', 'new_password' => 'min:6|max:60');
         // Run the validation rules on the inputs from the form
         $validator = Validator::make(Input::all(), $rules, $messages, $attributes);
         // If the validator fails, redirect back to the form
         if ($validator->fails()) {
             return Redirect::to("users/my_account")->withErrors($validator)->withInput(Input::all());
         } else {
             $user = $data["user"];
             $person = null;
             if ($user->teacher) {
                 $person = $user->teacher;
             } elseif ($user->student) {
                 $person = $user->student;
             }
             if ($person) {
                 $person->telephone = Input::get('telephone');
                 if (!empty(Input::get('birthdate'))) {
                     $person->birthdate = date('Y-m-d', strtotime(Input::get('birthdate')));
                 }
                 $person->save();
             }
             if (!empty(Input::get('email'))) {
                 $user->email = Input::get('email');
             }
             if (!empty(Input::get('current_password'))) {
                 if (Hash::check(Input::get('current_password'), $user->password)) {
                     $new_password = Input::get('new_password');
                     if (!empty($new_password)) {
                         if ($new_password == Input::get('password_confirmation')) {
                             $user->password = Hash::make(Input::get('password_confirmation'));
                         } else {
                             Session::flash('error', 'La nueva contraseña y su confirmación no coinciden.');
                             return Redirect::to("users/my_account")->withInput(Input::all());
                         }
                     }
                 } else {
                     Session::flash('error', 'La contraseña actual no es la correcta.');
                     return Redirect::to("users/my_account")->withInput(Input::all());
                 }
             }
             $user->save();
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Editó su información de usuario";
             Helpers::registerLog(4, $log_description);
             Session::flash('message', 'Se guardó correctamente la información.');
             return Redirect::to("users/my_account");
         }
     } else {
         return View::make('error/error');
     }
 }
 public function delete_notice()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         $data["actions"] = Session::get('actions');
         if (in_array('side_nuevo_comunicado', $data["actions"])) {
             $notice_id = Input::get('notice_id');
             $notice = Notice::find($notice_id);
             // elimino el comunicado
             $notice->delete();
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se eliminó el Comunicado con id {{$notice->id}}";
             Helpers::registerLog(5, $log_description);
             Session::flash('message', 'Se eliminó correctamente el Comunicado.');
             return Redirect::to('notices/view_notices');
         } else {
             // Llamo a la función para registrar el log de auditoria
             $log_description = "Se intentó acceder a la ruta '" . Request::path() . "' por el método '" . Request::method() . "'";
             Helpers::registerLog(10, $log_description);
             Session::flash('error', 'Usted no tiene permisos para realizar dicha acción.');
             return Redirect::to('/dashboard');
         }
     } else {
         return View::make('error/error');
     }
 }