LocateController.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <?php
  2. /*
  3. Nombre del programador: Cordourier Rojas Mathew
  4. Ultima fecha de modificación: [ 24 / Abril / 2023 ]
  5. Descripción: Controlador del submodulo Personal. Perteneciente al Módulo 13 - Gestion del Personal de Mantenimiento
  6. */
  7. namespace App\Http\Controllers;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\DB;
  10. use Illuminate\Support\Facades\Storage;
  11. use PhpOffice\PhpSpreadsheet\IOFactory;
  12. use stdClass;
  13. use Throwable;
  14. ini_set('memory_limit', '-1');
  15. class LocateController extends Controller
  16. {
  17. private $response_controller;
  18. private $encrypt_controller;
  19. public function __construct()
  20. {
  21. $this->response_controller = new ResponseController();
  22. $this->encrypt_controller = new EncryptionController();
  23. }
  24. public function getCountries($line_number)
  25. {
  26. try {
  27. // Busca si el subcontratista existe
  28. $countries = DB::table("S002V01TPAIS")
  29. ->where('PAIS_NULI', '=', $line_number)
  30. ->where('PAIS_ESTA', '=', 'Activo')
  31. ->get([
  32. 'PAIS_IDPA',
  33. 'PAIS_NULI',
  34. 'PAIS_NOMB',
  35. 'PAIS_NOME',
  36. 'PAIS_LADA',
  37. ]);
  38. } catch (Throwable $th) {
  39. return $this->response_controller->makeResponse(TRUE, 'ERR_COUNTRIES_GET001: Ocurrió un error al obteer los paises.', strtoupper($th->getMessage()), 500);
  40. }
  41. // Verifica si el objeto esta vacio
  42. if (!isset($countries[0]) && empty($countries[0])) {
  43. return $this->response_controller->makeResponse(TRUE, "ERR_COUNTRIES_GET000: No se pudo obtener los paises.", $countries, 500);
  44. }
  45. return $this->response_controller->makeResponse(FALSE, 'EXITO: Consulta Exitosa', $countries);
  46. }
  47. public function getDataByPostalCode($postal_code, $line)
  48. {
  49. try {
  50. $state = "N/A";
  51. $municipality = "N/A";
  52. $arr_suburb = [];
  53. $country = "N/A";
  54. $flag = false; # Indica cuando la información sea encontrada para salir del ciclo
  55. // Carga el documento y verifica cuantas hojas tiene
  56. $document = IOFactory::load(Storage::disk('excel')->path("c_CodigoPostal.xls"));
  57. $max_sheets = $document->getSheetCount();
  58. // Verifica por fila los datos buscando el correcto
  59. for ($i = 0; $i < $max_sheets; $i++) {
  60. $sheet = $document->getSheet($i);
  61. $max_row = $sheet->getHighestRow(); # Fila
  62. for ($o = 8; $o <= $max_row; $o++) {
  63. if ($sheet->getCell("A" . $o)->getValue() == $postal_code) {
  64. $state = $sheet->getCell("B" . $o)->getValue();
  65. $municipality = $sheet->getCell("C" . $o)->getValue();
  66. $flag = true;
  67. break;
  68. }
  69. }
  70. // Si el dato se encontró, sale del ciclo para no entrar en otra hoja
  71. if ($flag) {
  72. break;
  73. }
  74. }
  75. // Verifica si el código postal se encontró en el catalogo
  76. if($flag){
  77. $flag = false;
  78. }else{
  79. return $this->response_controller
  80. ->makeResponse(TRUE, "ERR_PAIS_REG001: El código postal {$postal_code} no existe", [], 400);
  81. }
  82. $document = IOFactory::load(Storage::disk('excel')->path("c_Municipio.xls"));
  83. $max_sheets = $document->getSheetCount();
  84. for ($i = 0; $i < $max_sheets; $i++) {
  85. $sheet = $document->getSheet($i);
  86. $max_row = $sheet->getHighestRow(); # Fila
  87. for ($o = 5; $o <= $max_row; $o++) {
  88. if ($sheet->getCell("A" . $o)->getValue() == $municipality && $sheet->getCell("B" . $o)->getValue() == $state) {
  89. $municipality = $sheet->getCell("C" . $o)->getValue();
  90. break;
  91. }
  92. }
  93. }
  94. $document = IOFactory::load(Storage::disk('excel')->path("c_Estado.xls"));
  95. $max_sheets = $document->getSheetCount();
  96. for ($i = 0; $i < $max_sheets; $i++) {
  97. $sheet = $document->getSheet($i);
  98. $max_row = $sheet->getHighestRow(); # Fila
  99. for ($o = 5; $o <= $max_row; $o++) {
  100. if ($sheet->getCell("A" . $o)->getValue() == $state) {
  101. $country = $sheet->getCell("B" . $o)->getValue();
  102. $state = $sheet->getCell("C" . $o)->getValue();
  103. break;
  104. }
  105. }
  106. }
  107. $document = IOFactory::load(Storage::disk('excel')->path("c_Pais.xls"));
  108. $max_sheets = $document->getSheetCount();
  109. for ($i = 0; $i < $max_sheets; $i++) {
  110. $sheet = $document->getSheet($i);
  111. $max_row = $sheet->getHighestRow(); # Fila
  112. for ($o = 5; $o <= $max_row; $o++) {
  113. if ($sheet->getCell("A" . $o)->getValue() == $country) {
  114. $country = $sheet->getCell("B" . $o)->getValue();
  115. break;
  116. }
  117. }
  118. }
  119. $document = IOFactory::load(Storage::disk('excel')->path("c_Colonia.xls"));
  120. $max_sheets = $document->getSheetCount();
  121. for ($i = 0; $i < $max_sheets; $i++) {
  122. $sheet = $document->getSheet($i);
  123. $max_row = $sheet->getHighestRow(); # Fila
  124. for ($o = 5; $o <= $max_row; $o++) {
  125. if ($sheet->getCell("B" . $o)->getValue() == $postal_code) {
  126. $arr_suburb[] = $sheet->getCell("C" . $o)->getValue();
  127. }
  128. }
  129. }
  130. $data = new stdClass();
  131. $data->POSTAL_CODE = $postal_code;
  132. $data->SUBURB = sizeof($arr_suburb) != 0 ? $arr_suburb : "N/A";
  133. $data->MUNICIPALITY = $municipality != null ? $municipality : "N/A";
  134. $data->STATE = $state != null ? $state : "N/A";
  135. $data->COUNTRY = $country != null ? $country : "N/A";
  136. return $this->response_controller->makeResponse(false, 'Consulta Exitosa', $data, 200);
  137. } catch (Throwable $th) {
  138. return $this->response_controller
  139. ->makeResponse(TRUE, 'ERR_PAIS_REG002: Error inesperado', strtoupper($th->getMessage()), 500);
  140. }
  141. }
  142. public function getSuburbByPostalCode($postal_code, $line)
  143. {
  144. try {
  145. $arr_suburb = [];
  146. $document = IOFactory::load(Storage::disk('excel')->path("c_Colonia.xls"));
  147. $max_sheets = $document->getSheetCount();
  148. for ($i = 0; $i < $max_sheets; $i++) {
  149. $sheet = $document->getSheet($i);
  150. $max_row = $sheet->getHighestRow(); # Fila
  151. for ($o = 5; $o <= $max_row; $o++) {
  152. if ($sheet->getCell("B" . $o)->getValue() == $postal_code) {
  153. $arr_suburb[] = $sheet->getCell("C" . $o)->getValue();
  154. }
  155. }
  156. }
  157. return $this->response_controller->makeResponse(false, 'Consulta Exitosa', sizeof($arr_suburb) != 0 ? $arr_suburb : "N/A", 200);
  158. } catch (Throwable $th) {
  159. return $this->response_controller
  160. ->makeResponse(TRUE, 'ERR_PAIS_REG000: Error inesperado', strtoupper($th->getMessage()), 500);
  161. }
  162. }
  163. }