NameL3ss

Untitled

Sep 29th, 2016
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.19 KB | None | 0 0
  1. HELPER
  2.  
  3. static function parseo($arrayArchivo, $idArchivo){
  4. $now = Carbon::now()->toDateTimeString();
  5. $highestRow = count($arrayArchivo);
  6. $tableData = [];
  7. //Definimos la variable error
  8. $error = '';
  9.  
  10. for ($row = 2; $row <= $highestRow; $row++){
  11. $codigoProducto = isset($arrayArchivo[$row]['A'])? $arrayArchivo[$row]['A'] : null;
  12. $descriptor = isset($arrayArchivo[$row]['B'])? $arrayArchivo[$row]['B'] : null;
  13. $codigo = isset($arrayArchivo[$row]['C'])? $arrayArchivo[$row]['C'] : null;
  14. $laboratorio = isset($arrayArchivo[$row]['D'])? $arrayArchivo[$row]['D'] : null;
  15. $clasificacionTerapeutica = isset($arrayArchivo[$row]['E'])? $arrayArchivo[$row]['E'] : null;
  16. // validar de que los campos no vengan con datos nulos
  17. $rowValido = self::_camposValidos($row, $codigoProducto, $descriptor, $codigo, $laboratorio, $clasificacionTerapeutica);
  18. if( $rowValido!=null )
  19. $error = $error.$rowValido; // si se concatena un null con un string, el resultado es un string
  20. array_push($tableData,[
  21. 'idArchivoMaestra' => $idArchivo,
  22. 'codigoProducto' => $codigoProducto,
  23. 'descriptor' => $descriptor,
  24. 'codigo' => $codigo,
  25. 'laboratorio' => $laboratorio,
  26. 'clasificacionTerapeutica' => $clasificacionTerapeutica,
  27. 'created_at' => $now,
  28. 'updated_at' => $now
  29. ]);
  30. }
  31. return (object)[
  32. 'datos' => $tableData,
  33. 'error' => $error
  34. ];
  35. }
  36. //Validar que los campos no contengas valores nulos
  37. private static function _camposValidos($row, $codigoProducto, $descriptor, $codigo, $laboratorio, $clasificacionTerapeutica){
  38. // todo: validar el tipo, que no sean string vacios, que sean numeros, etc
  39. if($codigoProducto==null)
  40. return "En la fila $row, falta el campo 'codigoProducto'. ";
  41. if($descriptor==null)
  42. return "En la fila $row, falta el campo 'descriptor'. ";
  43. if($codigo==null)
  44. return "En la fila $row, falta el campo 'codigo'. ";
  45. if($laboratorio==null)
  46. return "En la fila $row, falta el campo 'laboratorio'. ";
  47. if($clasificacionTerapeutica==null)
  48. return "En la fila $row, falta el campo 'clasificacionTerapeutica'. ";
  49. return null;
  50. }
  51. }
  52.  
  53.  
  54. CONTROLLER
  55.  
  56. function subir_maestra(Request $request){
  57. // ver que el usuario tenga los permisos correspondientes
  58. $user = Auth::user();
  59. if(!$user || !$user->can('admin-maestra-fcv'))
  60. return response()->view('errors.403', [], 403);
  61.  
  62. // se adjunto un archivo?
  63. if (!$request->hasFile('file'))
  64. return view('errors.errorConMensaje', [
  65. 'titulo' => 'error', 'descripcion' => 'Debe adjuntar el archivo excel.'
  66. ]);
  67. //return response()->json(['error' => 'Debe adjuntar el archivo.'], 400);
  68. // el archivo es valido?
  69. $archivo = $request->file('file');
  70. if (!$archivo->isValid())
  71. return view('errors.errorConMensaje', [
  72. 'titulo' => 'error', 'descripcion' => 'Archivo adjunto no es valido.'
  73. ]);
  74. //return response()->json(['error' => 'El archivo adjuntado no es valido.'], 400);
  75.  
  76. //Mover maestra a una carpeta en el servidor
  77. $moverArchivo=\ArchivoMaestraFCVHelper::moverAcarpeta($archivo);
  78. //Guardar archivo en la DB
  79. $archivoMaestraFCV = ArchivoMaestraFCV::agregarArchivoMaestra(Auth::user(), $moverArchivo);
  80. //Lee excel de maestra y lo asigna a un arreglo siempre y cuando no se origine un error
  81. $resultadoExcel = \ExcelHelper::leerExcel($archivoMaestraFCV->getFullPath());
  82. //Cuando no puede leer el excel retorna un error
  83. if($resultadoExcel->error!=null){
  84. $archivoMaestraFCV->setResultado($resultadoExcel->error);
  85. return view('errors.errorConMensaje',[
  86. 'titulo' => 'error', 'descripcion' => $resultadoExcel->error
  87. ]);
  88. }
  89. //Parsear los datos del archivo
  90. $parseo = \ArchivoMaestraFCVHelper::parseo($resultadoExcel->datos, $archivoMaestraFCV->idArchivoMaestra);
  91. if($parseo->error!=null){
  92. $archivoMaestraFCV->setResultado($parseo->error);
  93. return redirect()->route("maestraFCV")
  94. ->with('mensaje-error', $parseo->error);
  95. }
  96. //insertando datos parseados en la BD
  97. $archivoMaestraFCV->guardarRegistro($parseo->datos);
  98. $archivoMaestraFCV->setResultado("archivo cargado correctamente en la base de datos");
  99. return view('success.successConMensaje',[
  100. 'titulo' => 'Cargado correctamente', 'descripcion' => $archivoMaestraFCV->resultado
  101. ]);
  102. }
  103.  
  104. SUBIR
  105. function guardarRegistro($tableData){
  106. $chunk = array_chunk($tableData,100,true);
  107. DB::transaction(function() use ($chunk) {
  108. foreach ($chunk as $dato) {
  109. DB::table('maestra_fcv')->insert($dato);
  110. }
Advertisement
Add Comment
Please, Sign In to add comment