public function submit_create_reporte_calibracion()
 {
     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 || $data["user"]->idrol == 4) {
             // Validate the info, create rules for the inputs
             $attributes = array();
             $messages = array();
             $rules = array();
             $array_activos = Input::get('details_activos');
             $array_posiciones = Input::get('details_posiciones');
             // 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('reportes_calibracion/create_reporte')->withErrors($validator)->withInput(Input::all());
             } else {
                 $array_activos_no_registrados = [];
                 $array_idactivos = Input::get('details_activos');
                 $cantidad_activos = count($array_idactivos);
                 if ($cantidad_activos > 0) {
                     for ($i = 0; $i < $cantidad_activos; $i++) {
                         $idactivo = $array_idactivos[$i];
                         //se realiza una primera validacion de que se estan subierno por lo menos un archivo.
                         $existeArchivos = 0;
                         for ($j = 0; $j < 10; $j++) {
                             if (Input::hasFile('input-file-' . $idactivo . '-' . $j)) {
                                 $existeArchivos = 1;
                                 break;
                             }
                         }
                         if ($existeArchivos == 1 && Input::get('fecha_calibracion-' . $idactivo) != null && Input::get('fecha_proximo-' . $idactivo) != null) {
                             //como ya existe se crea de una vez el reporte de calibracion
                             $reporte_calibracion = new ReporteCalibracion();
                             $reporte_calibracion->codigo_abreviatura = "RC";
                             $reporte_calibracion->codigo_correlativo = $this->getCorrelativeReportNumber();
                             $reporte_calibracion->codigo_anho = date('y');
                             $reporte_calibracion->idactivo = $idactivo;
                             $reporte_calibracion->fecha_calibracion = date("Y-m-d", strtotime(Input::get('fecha_calibracion-' . $idactivo)));
                             $reporte_calibracion->fecha_proxima_calibracion = date("Y-m-d", strtotime(Input::get('fecha_proximo-' . $idactivo)));
                             $reporte_calibracion->idestado = 27;
                             $reporte_calibracion->save();
                             for ($j = 0; $j < 10; $j++) {
                                 if (Input::hasFile('input-file-' . $idactivo . '-' . $j)) {
                                     $archivo = Input::file('input-file-' . $idactivo . '-' . $j);
                                     $rutaDestino = 'uploads/documentos/riesgos/Reportes de Calibracion/' . $reporte_calibracion->codigo_abreviatura . $reporte_calibracion->codigo_correlativo . $reporte_calibracion->codigo_anho . '/';
                                     $nombreArchivo = $archivo->getClientOriginalName();
                                     $nombreArchivoEncriptado = Str::random(27) . '.' . pathinfo($nombreArchivo, PATHINFO_EXTENSION);
                                     $uploadSuccess = $archivo->move($rutaDestino, $nombreArchivoEncriptado);
                                     $detalle_reporte_calibracion = new DetalleReporteCalibracion();
                                     $detalle_reporte_calibracion->nombre = $nombreArchivo;
                                     $detalle_reporte_calibracion->nombre_archivo = $nombreArchivo;
                                     $detalle_reporte_calibracion->nombre_archivo_encriptado = $nombreArchivoEncriptado;
                                     $detalle_reporte_calibracion->url = $rutaDestino;
                                     $detalle_reporte_calibracion->idreporte_calibracion = $reporte_calibracion->id;
                                     $detalle_reporte_calibracion->save();
                                 }
                             }
                         } else {
                             array_push($array_activos_no_registrados, $idactivo);
                         }
                     }
                     $cantidad = count($array_activos_no_registrados);
                     if ($cantidad != $cantidad_activos) {
                         if ($cantidad == 0) {
                             $string = "Se han registrado los reportes de calibracion.<br>";
                             Session::flash('message', $string);
                             return Redirect::to('reportes_calibracion/list_reportes_calibracion');
                         }
                         $string = "Se han registrado los reportes de calibracion con excepción de los siguientes equipos:<br>";
                         for ($i = 0; $i < $cantidad; $i++) {
                             $activo = Activo::searchActivosById($array_activos_no_registrados[$i])->get()[0];
                             $familia_activo = FamiliaActivo::find($activo->idfamilia_activo)->get()[0];
                             $modelo_activo = ModeloActivo::find($activo->modelo)->get()[0];
                             $string_line = $i + 1 . ':<pre> Equipo: ' . $familia_activo->nombre_equipo . ' Modelo: ' . $modelo_activo->nombre . ' Cód. Patrimonial: ' . $activo->codigo_patrimonial . '</pre><br>';
                             $string = $string . $string_line;
                         }
                     } else {
                         Session::flash('error', 'Para registrar un reporte de calibración a un equipo debe:<br> Adjuntar por lo menos 1 documento.<br>Llenar los campos Fecha de Calibración y Fecha Próxima de Calibración');
                         return Redirect::to('reportes_calibracion/create_reporte');
                     }
                     Session::flash('message', $string);
                     return Redirect::to('reportes_calibracion/list_reportes_calibracion');
                 } else {
                     Session::flash('error', 'Ingrese uno o más equipos médicos');
                     return Redirect::to('reportes_calibracion/create_reporte');
                 }
             }
         } else {
             return View::make('error/error', $data);
         }
     } else {
         return View::make('error/error', $data);
     }
 }
 public function submit_create_activo()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         if ($data["user"]->idrol == 1 || $data["user"]->idrol == 2 || $data["user"]->idrol == 3 || $data["user"]->idrol == 4) {
             $attributes = array('servicio_clinico' => 'Servicio Clínico', 'ubicacion_fisica' => 'Ubicación Física', 'grupo' => 'Grupo', 'marca' => 'Marca', 'nombre_equipo' => 'Nombre del Equipo', 'modelo' => 'Modelo', 'numero_serie' => 'Número de Serie', 'proveedor' => 'Proveedor', 'codigo_compra' => 'Código de Compra', 'codigo_patrimonial' => 'Código Patrimonial', 'fecha_adquisicion' => 'Fecha de Adquisición', 'garantia' => 'Garantía', 'idreporte_instalacion' => 'Código de Reporte de Instalación', 'costo' => 'Precio de Compra', 'fecha_calibracion' => 'Fecha de Calibración', 'fecha_proximo' => 'Próxima Fecha de Calibración', 'input-file-0' => 'Certificado de Calibración');
             $messages = array();
             $rules = array('servicio_clinico' => 'required', 'ubicacion_fisica' => 'required', 'grupo' => 'required', 'marca' => 'required', 'nombre_equipo' => 'required', 'modelo' => 'required', 'numero_serie' => 'required|alpha_dash', 'proveedor' => 'required', 'codigo_compra' => 'required|numeric', 'codigo_patrimonial' => 'required|digits:12|unique:activos,codigo_patrimonial', 'fecha_adquisicion' => 'required', 'garantia' => 'required|numeric', 'idreporte_instalacion' => 'required', 'costo' => 'required|numeric', 'fecha_calibracion' => 'required', 'fecha_proximo' => 'required', 'input-file-0' => 'required');
             $validator = Validator::make(Input::all(), $rules, $messages, $attributes);
             if ($validator->fails()) {
                 return Redirect::to('equipos/create_equipo')->withErrors($validator)->withInput(Input::all());
             } else {
                 $activo = new Activo();
                 $activo->codigo_patrimonial = Input::get('codigo_patrimonial');
                 $activo->numero_serie = Input::get('numero_serie');
                 $activo->anho_adquisicion = date('Y-m-d', strtotime(Input::get('fecha_adquisicion')));
                 $activo->garantia = Input::get('garantia');
                 $activo->fecha_garantia_fin = Carbon\Carbon::createFromFormat('Y-m-d', $activo->anho_adquisicion)->addMonths($activo->garantia);
                 $activo->codigo_compra = Input::get('codigo_compra');
                 $activo->idgrupo = Input::get('grupo');
                 $activo->idmodelo_equipo = Input::get('modelo');
                 $activo->idservicio = Input::get('servicio_clinico');
                 $activo->idproveedor = Input::get('proveedor');
                 $activo->idreporte_instalacion = Input::get('idreporte_instalacion');
                 $activo->idestado = 3;
                 $activo->idubicacion_fisica = Input::get('ubicacion_fisica');
                 $activo->costo = Input::get('costo');
                 $activo->save();
                 /* Registrar reporte de calibracion */
                 $reporte_calibracion = new ReporteCalibracion();
                 $reporte_controller = new ReportesCalibracionController();
                 $reporte_calibracion->codigo_abreviatura = "RC";
                 $reporte_calibracion->codigo_correlativo = $reporte_controller->getCorrelativeReportNumber();
                 $reporte_calibracion->codigo_anho = date('y');
                 $reporte_calibracion->idactivo = $activo->idactivo;
                 $reporte_calibracion->fecha_calibracion = date("Y-m-d", strtotime(Input::get('fecha_calibracion')));
                 $reporte_calibracion->fecha_proxima_calibracion = date("Y-m-d", strtotime(Input::get('fecha_proximo')));
                 $reporte_calibracion->idestado = 27;
                 $reporte_calibracion->save();
                 if (Input::hasFile('input-file-0')) {
                     $archivo = Input::file('input-file-0');
                     $rutaDestino = 'uploads/documentos/riesgos/Reportes de Calibracion/' . $reporte_calibracion->codigo_abreviatura . $reporte_calibracion->codigo_correlativo . $reporte_calibracion->codigo_anho . '/';
                     $nombreArchivo = $archivo->getClientOriginalName();
                     $nombreArchivoEncriptado = Str::random(27) . '.' . pathinfo($nombreArchivo, PATHINFO_EXTENSION);
                     $uploadSuccess = $archivo->move($rutaDestino, $nombreArchivoEncriptado);
                     $detalle_reporte_calibracion = new DetalleReporteCalibracion();
                     $detalle_reporte_calibracion->nombre = $nombreArchivo;
                     $detalle_reporte_calibracion->nombre_archivo = $nombreArchivo;
                     $detalle_reporte_calibracion->nombre_archivo_encriptado = $nombreArchivoEncriptado;
                     $detalle_reporte_calibracion->url = $rutaDestino;
                     $detalle_reporte_calibracion->idreporte_calibracion = $reporte_calibracion->id;
                     $detalle_reporte_calibracion->save();
                 }
                 return Redirect::to('equipos/list_equipos')->with('message', 'Se registró correctamente el activo.');
             }
         } else {
             return View::make('error/error', $data);
         }
     } else {
         return View::make('error/error', $data);
     }
 }