public function submit_create_rep_instalacion()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         // Verifico si el usuario es un Webmaster
         if ($data["user"]->idrol == 1 || $data["user"]->idrol == 2 || $data["user"]->idrol == 3) {
             // Validate the info, create rules for the inputs
             $idtipo = Input::get('idtipo_reporte_instalacion');
             if ($idtipo == 1) {
                 $attributes = array('idtipo_reporte_instalacion' => 'Tipo de Reporte de Instalación', 'idproveedor' => 'Proveedor', 'fecha' => 'Fecha', 'codigo_compra' => 'Código de Compra', 'idarea' => 'Área', 'numero_documento1' => 'N° Documento de Identidad', 'descripcion' => 'Descripción');
                 $messages = array();
                 $rules = array('idtipo_reporte_instalacion' => 'required', 'idproveedor' => 'required', 'fecha' => 'required', 'codigo_compra' => 'required|alpha_num', 'idarea' => 'required', 'numero_documento1' => 'required', 'descripcion' => 'max:200|alpha_num_spaces_slash_dash_enter');
             } else {
                 if ($idtipo == 2) {
                     $attributes = array('idtipo_reporte_instalacion' => 'Tipo de Reporte de Instalación', 'idproveedor' => 'Proveedor', 'fecha' => 'Fecha', 'codigo_compra' => 'Código de Compra', 'idarea' => 'Área', 'numero_documento1' => 'N° Documento de Identidad', 'descripcion' => 'Descripción', 'num_doc_relacionado1' => 'Certificado de Funcionalidad', 'num_doc_relacionado2' => 'Contrato', 'num_doc_relacionado3' => 'Manual', 'num_doc_relacionado4' => 'Término de Referencia', 'numero_reporte_entorno_concluido' => 'Número de Reporte Entorno Concluido');
                     $messages = array();
                     $rules = array('idtipo_reporte_instalacion' => 'required', 'idproveedor' => 'required', 'fecha' => 'required', 'codigo_compra' => 'required', 'idarea' => 'required', 'numero_documento1' => 'required', 'descripcion' => 'max:200|alpha_num_spaces_slash_dash_enter', 'num_doc_relacionado1' => 'required', 'num_doc_relacionado2' => 'required', 'num_doc_relacionado3' => 'required', 'num_doc_relacionado4' => 'required', 'numero_reporte_entorno_concluido' => 'required');
                 } else {
                     $attributes = array('idtipo_reporte_instalacion' => 'Tipo de Reporte de Instalación');
                     $messages = array();
                     $rules = array('idtipo_reporte_instalacion' => 'required');
                 }
             }
             // 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('rep_instalacion/create_rep_instalacion')->withErrors($validator)->withInput(Input::all());
             } else {
                 $existeReporteEntornoConcluido = ReporteInstalacion::searchReporteEntornoConcluidoByCodigoCompra(Input::get('codigo_compra'))->get();
                 if (Input::get('idtipo_reporte_instalacion') == 1 || Input::get('idtipo_reporte_instalacion') == 2 && !$existeReporteEntornoConcluido->isEmpty()) {
                     $details_tarea = Input::get('details_tarea');
                     $details_estado = Input::get('details_estado');
                     $cant = count($details_tarea);
                     if ($cant > 0) {
                         $reporte = new ReporteInstalacion();
                         if (Input::get('idtipo_reporte_instalacion') == 1) {
                             $abreviatura = "IE";
                         } else {
                             $abreviatura = "IF";
                         }
                         $name_controller = "ReporteInstalacion";
                         // Algoritmo para añadir numeros correlativos
                         $string = $this->getCorrelativeReportNumber($name_controller, Input::get('idtipo_reporte_instalacion'));
                         //Get Año Actual
                         $anho = date('y');
                         $reporte->numero_reporte_abreviatura = $abreviatura;
                         $reporte->numero_reporte_correlativo = $string;
                         $reporte->numero_reporte_anho = $anho;
                         $reporte->idtipo_reporte_instalacion = Input::get('idtipo_reporte_instalacion');
                         $reporte->descripcion = Input::get('descripcion');
                         $reporte->fecha = date('Y-m-d H:i:s', strtotime(Input::get('fecha')));
                         $reporte->idarea = Input::get('idarea');
                         $reporte->idproveedor = Input::get('idproveedor');
                         $reporte->codigo_compra = Input::get('codigo_compra');
                         $reporte->idestado = 1;
                         $id_usuario_responsable = Input::get('numero_documento1');
                         $usuario_responsable = User::searchPersonalByNumeroDoc($id_usuario_responsable)->get();
                         if ($usuario_responsable->isEmpty()) {
                             Session::flash('error', 'Usuario revisión no existe.');
                             return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                         } else {
                             $reporte->id_responsable = $usuario_responsable[0]->id;
                         }
                         if (Input::get('idtipo_reporte_instalacion') == 2) {
                             $num_rep_entorno_concluido = Input::get('numero_reporte_entorno_concluido');
                             $abreviatura = mb_substr($num_rep_entorno_concluido, 0, 2);
                             $correlativo = mb_substr($num_rep_entorno_concluido, 2, 4);
                             $anho = mb_substr($num_rep_entorno_concluido, 7, 2);
                             $rep_ent_concluido = ReporteInstalacion::searchReporteEntornoConcluidoByNumeroReporte($abreviatura, $correlativo, $anho)->get();
                             if ($rep_ent_concluido->isEmpty()) {
                                 Session::flash('error', 'Reporte de Entorno Concluido no existe.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                             } else {
                                 $reporte->idreporte_instalacion_entorno_concluido = $rep_ent_concluido[0]->idreporte_instalacion;
                             }
                             if (Input::get('flag_doc1') == 0) {
                                 Session::flash('error', 'Certficado de Funcionalidad no adjuntado correctamente.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion/' . $rep_ent_concluido[0]->idreporte_instalacion)->withInput(Input::all());
                             }
                             if (Input::get('flag_doc2') == 0) {
                                 Session::flash('error', 'Certficado de Funcionalidad no adjuntado correctamente.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion/' . $rep_ent_concluido[0]->idreporte_instalacion)->withInput(Input::all());
                             }
                             if (Input::get('flag_doc3') == 0) {
                                 Session::flash('error', 'Certficado de Funcionalidad no adjuntado correctamente.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion/' . $rep_ent_concluido[0]->idreporte_instalacion)->withInput(Input::all());
                             }
                             if (Input::get('flag_doc4') == 0) {
                                 Session::flash('error', 'Certficado de Funcionalidad no adjuntado correctamente.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion/' . $rep_ent_concluido[0]->idreporte_instalacion)->withInput(Input::all());
                             }
                         }
                         $reporte->save();
                         $idReporte = $reporte->idreporte_instalacion;
                         for ($i = 0; $i < $cant; $i++) {
                             $detalle_reporte_instalacion = new DetalleReporteInstalacion();
                             $detalle_reporte_instalacion->nombre_tarea = $details_tarea[$i];
                             if ($details_estado[$i] == "Realizado") {
                                 $estado_tarea = 1;
                             } else {
                                 $estado_tarea = 0;
                             }
                             $detalle_reporte_instalacion->tarea_realizada = $estado_tarea;
                             $detalle_reporte_instalacion->idreporte_instalacion = $idReporte;
                             $detalle_reporte_instalacion->save();
                         }
                         $codigo_archivamiento_cert_funcionalidad = Input::get('num_doc_relacionado1');
                         if ($codigo_archivamiento_cert_funcionalidad != '') {
                             $documento = Documento::searchDocumentoByCodigoArchivamiento($codigo_archivamiento_cert_funcionalidad)->get();
                             if ($documento->isEmpty()) {
                                 Session::flash('error', 'Certificado no existe.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                             }
                             $documento = $documento[0];
                             if ($documento->idtipo_documento != 6) {
                                 Session::flash('error', 'El documento no es un Certificado.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                             }
                             $documento->idreporte_instalacion = $idReporte;
                             $documento->save();
                         }
                         $codigo_archivamiento_contrato = Input::get('num_doc_relacionado2');
                         if ($codigo_archivamiento_contrato != '') {
                             $documento = Documento::searchDocumentoByCodigoArchivamiento($codigo_archivamiento_contrato)->get();
                             if ($documento->isEmpty()) {
                                 Session::flash('error', 'Contrato no existe.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                             }
                             $documento = $documento[0];
                             if ($documento->idtipo_documento != 1) {
                                 Session::flash('error', 'El documento no es un Contrato.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                             }
                             $documento->idreporte_instalacion = $idReporte;
                             $documento->save();
                         }
                         $codigo_archivamiento_manual = Input::get('num_doc_relacionado3');
                         if ($codigo_archivamiento_manual != '') {
                             $documento = Documento::searchDocumentoByCodigoArchivamiento($codigo_archivamiento_manual)->get();
                             if ($documento->isEmpty()) {
                                 Session::flash('error', 'Manual no existe.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                             }
                             $documento = $documento[0];
                             if ($documento->idtipo_documento != 2) {
                                 Session::flash('error', 'El documento no es un Manual.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                             }
                             $documento->idreporte_instalacion = $idReporte;
                             $documento->save();
                         }
                         $codigo_archivamiento_tdr = Input::get('num_doc_relacionado4');
                         if ($codigo_archivamiento_tdr != '') {
                             $documento = Documento::searchDocumentoByCodigoArchivamiento($codigo_archivamiento_tdr)->get();
                             if ($documento->isEmpty()) {
                                 Session::flash('error', 'Término de Referencia no existe.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                             }
                             $documento = $documento[0];
                             if ($documento->idtipo_documento != 7) {
                                 Session::flash('error', 'El documento no es un Término de Referencia.');
                                 return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                             }
                             $documento->idreporte_instalacion = $idReporte;
                             $documento->save();
                         }
                         Session::flash('message', 'Se registró correctamente el Reporte de Instalación.');
                         return Redirect::to('rep_instalacion/list_rep_instalacion');
                     } else {
                         Session::flash('error', 'Ingrese por lo menos una tarea.');
                         return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                     }
                 } else {
                     Session::flash('error', 'Solo se puede crear Reporte de Equipo Funcional si ha sido creado el Reporte de Entorno Concluido');
                     return Redirect::to('rep_instalacion/create_rep_instalacion')->withInput(Input::all());
                 }
             }
         } else {
             return View::make('error/error', $data);
         }
     } else {
         return View::make('error/error', $data);
     }
 }