public function store()
 {
     $rules = array('nombres' => 'required', 'apellido_pat' => 'required', 'apellido_mat' => 'required', 'num_documento' => 'required', 'fecha_nacimiento' => 'required', 'email' => 'required');
     $validator = \Validator::make(Input::all(), $rules);
     if ($validator->passes()) {
         $postulante = new \Postulante();
         $postulante->nombres = Input::get('nombres');
         $postulante->apellido_pat = Input::get('apellido_pat');
         $postulante->apellido_mat = Input::get('apellido_mat');
         $postulante->num_documento = Input::get('num_documento');
         $postulante->fecha_nacimiento = date('Y-m-d', strtotime(Input::get('fecha_nacimiento')));
         $postulante->email = Input::get('email');
         $postulante->direccion = Input::get('direccion');
         $postulante->telefono = Input::get('telefono');
         $postulante->celular = Input::get('celular');
         $postulante->idtipo_identificacion = 1;
         $postulante->centro_estudio_trabajo = Input::get('centro_estudio_trabajo');
         $postulante->ciclo_grado = Input::get('ciclo_grado');
         $postulante->carrera = Input::get('carrera');
         $postulante->experiencia = Input::get('experiencia');
         $postulante->aprendizaje = Input::get('aprendizaje');
         $postulante->motivacion = Input::get('motivacion');
         $postulante->aporte = Input::get('aporte');
         $postulante->expectativas = Input::get('expectativas');
         $postulante->save();
         $periodo_actual = \Periodo::getPeriodoActual()->first();
         $postulantexperiodo = new \PostulantesPeriodo();
         $postulantexperiodo->idpostulantes = $postulante->idpostulantes;
         $postulantexperiodo->idperiodos = $periodo_actual->idperiodos;
         $postulantexperiodo->idfases = 1;
         $postulantexperiodo->save();
         return Response::json(['success' => 1], 200);
     } else {
         return Response::json($validator->messages(), 200);
     }
 }
 public function submit_aprobacion_postulantes()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         $data["permisos"] = Session::get('permisos');
         if (in_array('side_nueva_convocatoria', $data["permisos"])) {
             $idpostulantes_periodos = Input::get('idpostulantes_periodos');
             $idperiodos = Input::get('idperiodos');
             $idfase = Input::get('idfase');
             $comentarios = Input::get('comentarios');
             $asistencias = Input::get('asistencias');
             $no_asistencias = Input::get('no-asistencias');
             $aprobaciones = Input::get('aprobaciones');
             $no_aprobaciones = Input::get('no-aprobaciones');
             $count = count($idpostulantes_periodos);
             if ($idfase == 1) {
                 for ($i = 0; $i < $count; $i++) {
                     if ($aprobaciones[$i] == 1 || $no_aprobaciones[$i] == 1) {
                         $postulante_periodo = PostulantesPeriodo::find($idpostulantes_periodos[$i]);
                         $estado_aprobacion_anterior = $postulante_periodo->aprobacion;
                         if ($asistencias[$i] == 1) {
                             $postulante_periodo->asistencia = 1;
                         } else {
                             $postulante_periodo->asistencia = 0;
                         }
                         $postulante_periodo->comentario = $comentarios[$i];
                         if ($aprobaciones[$i] == 1) {
                             $postulante_periodo->aprobacion = 1;
                         } else {
                             $postulante_periodo->aprobacion = 0;
                         }
                         $postulante_periodo->save();
                         // Llamo a la función para registrar el log de auditoria
                         $descripcion_log = "Se aprobó / desaprobó al postulante por periodo con id {{$postulante_periodo->idpostulantes_periodos}}";
                         Helpers::registrarLog(4, $descripcion_log);
                         $postulante = Postulante::searchPostulanteById($postulante_periodo->idpostulantes)->get();
                         $postulante = $postulante[0];
                         if ($aprobaciones[$i] == 1 && $estado_aprobacion_anterior != 1) {
                             $postulante_periodo_nuevo = new PostulantesPeriodo();
                             $postulante_periodo_nuevo->idpostulantes = $postulante_periodo->idpostulantes;
                             $postulante_periodo_nuevo->idperiodos = $postulante_periodo->idperiodos;
                             $postulante_periodo_nuevo->idfases = $idfase + 1;
                             $postulante_periodo_nuevo->save();
                             Mail::send('emails.aprobacionFasePostulacion', array('postulante' => $postulante), function ($message) use($postulante) {
                                 $message->to($postulante->email)->subject('Primera Fase de Postulación - AFI Perú.');
                             });
                             // Llamo a la función para registrar el log de auditoria
                             // Llamo a la función para registrar el log de auditoria
                             $descripcion_log = "Se creó al postulante por periodo con id {{$postulante_periodo_nuevo->idpostulantes_periodos}}";
                             Helpers::registrarLog(3, $descripcion_log);
                         } else {
                             /*
                             								Mail::send('emails.desaprobacionFasePostulacion',array('postulante'=> $postulante),function($message) use ($postulante)
                             {
                             	$message->to($postulante->email)
                             			->subject('Primera Fase de Postulación - AFI Perú.');
                             });
                             */
                         }
                     }
                 }
             }
             if ($idfase == 2) {
                 for ($i = 0; $i < $count; $i++) {
                     if ($aprobaciones[$i] == 1 || $no_aprobaciones[$i] == 1) {
                         $postulante_periodo = PostulantesPeriodo::find($idpostulantes_periodos[$i]);
                         if ($asistencias[$i] == 1) {
                             $postulante_periodo->asistencia = 1;
                         } else {
                             $postulante_periodo->asistencia = 0;
                         }
                         $postulante_periodo->comentario = $comentarios[$i];
                         if ($aprobaciones[$i] == 1) {
                             $postulante_periodo->aprobacion = 1;
                         } else {
                             $postulante_periodo->aprobacion = 0;
                         }
                         $postulante_periodo->save();
                         // Llamo a la función para registrar el log de auditoria
                         $descripcion_log = "Se aprobó / desaprobó al postulante por periodo con id {{$postulante_periodo->idpostulantes_periodos}}";
                         Helpers::registrarLog(4, $descripcion_log);
                         $postulante = Postulante::searchPostulanteById($postulante_periodo->idpostulantes)->get();
                         $postulante = $postulante[0];
                         if ($aprobaciones[$i] == 1) {
                             $postulante_periodo_nuevo = new PostulantesPeriodo();
                             $postulante_periodo_nuevo->idpostulantes = $postulante_periodo->idpostulantes;
                             $postulante_periodo_nuevo->idperiodos = $postulante_periodo->idperiodos;
                             $postulante_periodo_nuevo->idfases = $idfase + 1;
                             $postulante_periodo_nuevo->save();
                             Mail::send('emails.aprobacionFasePostulacion', array('postulante' => $postulante), function ($message) use($postulante) {
                                 $message->to($postulante->email)->subject('Segunda Fase de Postulación - AFI Perú.');
                             });
                             // Llamo a la función para registrar el log de auditoria
                             $descripcion_log = "Se creó al postulante por periodo con id {{$postulante_periodo_nuevo->idpostulantes_periodos}}";
                             Helpers::registrarLog(3, $descripcion_log);
                         } else {
                             /*
                             								Mail::send('emails.desaprobacionFasePostulacion',array('postulante'=> $postulante),function($message) use ($postulante)
                             {
                             	$message->to($postulante->email)
                             			->subject('Segunda Fase de Postulación - AFI Perú.');
                             });
                             */
                         }
                     }
                 }
             }
             if ($idfase == 3) {
                 for ($i = 0; $i < $count; $i++) {
                     if ($aprobaciones[$i] == 1 || $no_aprobaciones[$i] == 1) {
                         $postulante_periodo = PostulantesPeriodo::find($idpostulantes_periodos[$i]);
                         if ($asistencias[$i] == 1) {
                             $postulante_periodo->asistencia = 1;
                         } else {
                             $postulante_periodo->asistencia = 0;
                         }
                         $postulante_periodo->comentario = $comentarios[$i];
                         if ($aprobaciones[$i] == 1) {
                             $postulante_periodo->aprobacion = 1;
                         } else {
                             $postulante_periodo->aprobacion = 0;
                         }
                         $postulante_periodo->save();
                         // Llamo a la función para registrar el log de auditoria
                         $descripcion_log = "Se aprobó / desaprobó al postulante por periodo con id {{$postulante_periodo->idpostulantes_periodos}}";
                         Helpers::registrarLog(4, $descripcion_log);
                         $postulante = Postulante::searchPostulanteById($postulante_periodo->idpostulantes)->get();
                         $postulante = $postulante[0];
                         if ($aprobaciones[$i] == 1) {
                             $persona = new Persona();
                             $persona->nombres = $postulante->nombres;
                             $persona->apellido_pat = $postulante->apellido_pat;
                             $persona->apellido_mat = $postulante->apellido_mat;
                             $persona->fecha_nacimiento = date('Y-m-d H:i:s', strtotime($postulante->fecha_nacimiento));
                             $persona->direccion = $postulante->direccion;
                             $persona->telefono = $postulante->telefono;
                             $persona->celular = $postulante->celular;
                             $persona->save();
                             // Llamo a la función para registrar el log de auditoria
                             $descripcion_log = "Se creó la persdona  con id {{$persona->idpersonas}}";
                             Helpers::registrarLog(3, $descripcion_log);
                             // Creo al usuario y le asigno su información de persona
                             $password = Str::random(8);
                             $user = new User();
                             $user->num_documento = $postulante->num_documento;
                             $user->password = Hash::make($password);
                             $user->idtipo_identificacion = 1;
                             $user->email = $postulante->email;
                             $user->idpersona = $persona->idpersonas;
                             $user->auth_token = Str::random(32);
                             $user->save();
                             // Llamo a la función para registrar el log de auditoria
                             $descripcion_log = "Se creó el usuario con id {{$user->id}}";
                             Helpers::registrarLog(3, $descripcion_log);
                             // Registro los perfiles seleccionados
                             $perfil = 3;
                             $users_perfil = new UsersPerfil();
                             $users_perfil->idusers = $user->id;
                             $users_perfil->idperfiles = $perfil;
                             $users_perfil->save();
                             // Llamo a la función para registrar el log de auditoria
                             $descripcion_log = "Se creó el usuario por perfil con id {{$users_perfil->idusers_perfiles}}";
                             Helpers::registrarLog(3, $descripcion_log);
                             // Registro el usuario en el periodo correspondiente
                             $users_periodo = new UsersPeriodo();
                             $users_periodo->idusers = $user->id;
                             $users_periodo->idperiodos = $postulante_periodo->idperiodos;
                             $users_periodo->save();
                             // Llamo a la función para registrar el log de auditoria
                             $descripcion_log = "Se creó el usuario por periodo con id {{$users_periodo->idusers_periodos}}";
                             Helpers::registrarLog(3, $descripcion_log);
                             Mail::send('emails.aprobacionFinalPostulacion', array('user' => $user, 'persona' => $persona, 'password' => $password), function ($message) use($user, $persona) {
                                 $message->to($user->email, $persona->nombres)->subject('Registro de nuevo usuario');
                             });
                         } else {
                             /*
                             								Mail::send('emails.desaprobacionFasePostulacion',array('postulante'=> $postulante),function($message) use ($postulante)
                             {
                             	$message->to($postulante->email)
                             			->subject('Tercera Fase de Postulación - AFI Perú.');
                             });
                             */
                         }
                     }
                 }
             }
             Session::flash('message', 'Los datos se guardaron correctamente.');
             return Redirect::to('convocatorias/list_postulantes/' . $idperiodos);
         } 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::registrarLog(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');
     }
 }