Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- HELPER
- static function parseo($arrayArchivo, $idArchivo){
- $now = Carbon::now()->toDateTimeString();
- $highestRow = count($arrayArchivo);
- $tableData = [];
- //Definimos la variable error
- $error = '';
- for ($row = 2; $row <= $highestRow; $row++){
- $codigoProducto = isset($arrayArchivo[$row]['A'])? $arrayArchivo[$row]['A'] : null;
- $descriptor = isset($arrayArchivo[$row]['B'])? $arrayArchivo[$row]['B'] : null;
- $codigo = isset($arrayArchivo[$row]['C'])? $arrayArchivo[$row]['C'] : null;
- $laboratorio = isset($arrayArchivo[$row]['D'])? $arrayArchivo[$row]['D'] : null;
- $clasificacionTerapeutica = isset($arrayArchivo[$row]['E'])? $arrayArchivo[$row]['E'] : null;
- // validar de que los campos no vengan con datos nulos
- $rowValido = self::_camposValidos($row, $codigoProducto, $descriptor, $codigo, $laboratorio, $clasificacionTerapeutica);
- if( $rowValido!=null )
- $error = $error.$rowValido; // si se concatena un null con un string, el resultado es un string
- array_push($tableData,[
- 'idArchivoMaestra' => $idArchivo,
- 'codigoProducto' => $codigoProducto,
- 'descriptor' => $descriptor,
- 'codigo' => $codigo,
- 'laboratorio' => $laboratorio,
- 'clasificacionTerapeutica' => $clasificacionTerapeutica,
- 'created_at' => $now,
- 'updated_at' => $now
- ]);
- }
- return (object)[
- 'datos' => $tableData,
- 'error' => $error
- ];
- }
- //Validar que los campos no contengas valores nulos
- private static function _camposValidos($row, $codigoProducto, $descriptor, $codigo, $laboratorio, $clasificacionTerapeutica){
- // todo: validar el tipo, que no sean string vacios, que sean numeros, etc
- if($codigoProducto==null)
- return "En la fila $row, falta el campo 'codigoProducto'. ";
- if($descriptor==null)
- return "En la fila $row, falta el campo 'descriptor'. ";
- if($codigo==null)
- return "En la fila $row, falta el campo 'codigo'. ";
- if($laboratorio==null)
- return "En la fila $row, falta el campo 'laboratorio'. ";
- if($clasificacionTerapeutica==null)
- return "En la fila $row, falta el campo 'clasificacionTerapeutica'. ";
- return null;
- }
- }
- CONTROLLER
- function subir_maestra(Request $request){
- // ver que el usuario tenga los permisos correspondientes
- $user = Auth::user();
- if(!$user || !$user->can('admin-maestra-fcv'))
- return response()->view('errors.403', [], 403);
- // se adjunto un archivo?
- if (!$request->hasFile('file'))
- return view('errors.errorConMensaje', [
- 'titulo' => 'error', 'descripcion' => 'Debe adjuntar el archivo excel.'
- ]);
- //return response()->json(['error' => 'Debe adjuntar el archivo.'], 400);
- // el archivo es valido?
- $archivo = $request->file('file');
- if (!$archivo->isValid())
- return view('errors.errorConMensaje', [
- 'titulo' => 'error', 'descripcion' => 'Archivo adjunto no es valido.'
- ]);
- //return response()->json(['error' => 'El archivo adjuntado no es valido.'], 400);
- //Mover maestra a una carpeta en el servidor
- $moverArchivo=\ArchivoMaestraFCVHelper::moverAcarpeta($archivo);
- //Guardar archivo en la DB
- $archivoMaestraFCV = ArchivoMaestraFCV::agregarArchivoMaestra(Auth::user(), $moverArchivo);
- //Lee excel de maestra y lo asigna a un arreglo siempre y cuando no se origine un error
- $resultadoExcel = \ExcelHelper::leerExcel($archivoMaestraFCV->getFullPath());
- //Cuando no puede leer el excel retorna un error
- if($resultadoExcel->error!=null){
- $archivoMaestraFCV->setResultado($resultadoExcel->error);
- return view('errors.errorConMensaje',[
- 'titulo' => 'error', 'descripcion' => $resultadoExcel->error
- ]);
- }
- //Parsear los datos del archivo
- $parseo = \ArchivoMaestraFCVHelper::parseo($resultadoExcel->datos, $archivoMaestraFCV->idArchivoMaestra);
- if($parseo->error!=null){
- $archivoMaestraFCV->setResultado($parseo->error);
- return redirect()->route("maestraFCV")
- ->with('mensaje-error', $parseo->error);
- }
- //insertando datos parseados en la BD
- $archivoMaestraFCV->guardarRegistro($parseo->datos);
- $archivoMaestraFCV->setResultado("archivo cargado correctamente en la base de datos");
- return view('success.successConMensaje',[
- 'titulo' => 'Cargado correctamente', 'descripcion' => $archivoMaestraFCV->resultado
- ]);
- }
- SUBIR
- function guardarRegistro($tableData){
- $chunk = array_chunk($tableData,100,true);
- DB::transaction(function() use ($chunk) {
- foreach ($chunk as $dato) {
- DB::table('maestra_fcv')->insert($dato);
- }
Advertisement
Add Comment
Please, Sign In to add comment