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); } }