LocateController.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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. ->get([
  31. "PAIS_IDPA as COUNTRY_ID",
  32. "PAIS_NOMB as NAME",
  33. "PAIS_LADA as LADA",
  34. "PAIS_NOME AS NOMECLARUTA_ISO2",
  35. "PAIS_NOM2 AS NOMECLARUTA_ISO3"
  36. ]);
  37. // Verifica si el objeto esta vacio
  38. if (!isset($countries[0]) && empty($countries[0])) {
  39. return $this->response_controller
  40. ->makeResponse(TRUE, "ERR_COUNTRIES_GET000: No se pudo obtener los paises.", $countries, 500);
  41. }
  42. return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $countries);
  43. } catch (Throwable $th) {
  44. return $this->response_controller->makeResponse(TRUE, 'ERR_COUNTRIES_GET001: Ocurrió un error al obteer los paises.',
  45. strtoupper($th->getMessage()), 500);
  46. }
  47. }
  48. public function getDataByPostalCode($postal_code, $line)
  49. {
  50. try {
  51. $state = "N/A";
  52. $municipality = "N/A";
  53. $arr_suburb = [];
  54. $country = "N/A";
  55. $flag = false; # Indica cuando la información sea encontrada para salir del ciclo
  56. // Carga el documento y verifica cuantas hojas tiene
  57. $document = IOFactory::load(Storage::disk('excel')->path("c_CodigoPostal.xls"));
  58. $max_sheets = $document->getSheetCount();
  59. // Verifica por fila los datos buscando el correcto
  60. for ($i = 0; $i < $max_sheets; $i++) {
  61. $sheet = $document->getSheet($i);
  62. $max_row = $sheet->getHighestRow(); # Fila
  63. for ($o = 8; $o <= $max_row; $o++) {
  64. if ($sheet->getCell("A" . $o)->getValue() == $postal_code) {
  65. $state = $sheet->getCell("B" . $o)->getValue();
  66. $municipality = $sheet->getCell("C" . $o)->getValue();
  67. $flag = true;
  68. break;
  69. }
  70. }
  71. // Si el dato se encontró, sale del ciclo para no entrar en otra hoja
  72. if ($flag) {
  73. break;
  74. }
  75. }
  76. // Verifica si el código postal se encontró en el catalogo
  77. if($flag){
  78. $flag = false;
  79. }else{
  80. return $this->response_controller
  81. ->makeResponse(TRUE, "ERR_PAIS_REG001: El código postal {$postal_code} no existe", [], 400);
  82. }
  83. $document = IOFactory::load(Storage::disk('excel')->path("c_Municipio.xls"));
  84. $max_sheets = $document->getSheetCount();
  85. for ($i = 0; $i < $max_sheets; $i++) {
  86. $sheet = $document->getSheet($i);
  87. $max_row = $sheet->getHighestRow(); # Fila
  88. for ($o = 5; $o <= $max_row; $o++) {
  89. if ($sheet->getCell("A" . $o)->getValue() == $municipality && $sheet->getCell("B" . $o)->getValue() == $state) {
  90. $municipality = $sheet->getCell("C" . $o)->getValue();
  91. break;
  92. }
  93. }
  94. }
  95. $document = IOFactory::load(Storage::disk('excel')->path("c_Estado.xls"));
  96. $max_sheets = $document->getSheetCount();
  97. for ($i = 0; $i < $max_sheets; $i++) {
  98. $sheet = $document->getSheet($i);
  99. $max_row = $sheet->getHighestRow(); # Fila
  100. for ($o = 5; $o <= $max_row; $o++) {
  101. if ($sheet->getCell("A" . $o)->getValue() == $state) {
  102. $country = $sheet->getCell("B" . $o)->getValue();
  103. $state = $sheet->getCell("C" . $o)->getValue();
  104. break;
  105. }
  106. }
  107. }
  108. $document = IOFactory::load(Storage::disk('excel')->path("c_Pais.xls"));
  109. $max_sheets = $document->getSheetCount();
  110. for ($i = 0; $i < $max_sheets; $i++) {
  111. $sheet = $document->getSheet($i);
  112. $max_row = $sheet->getHighestRow(); # Fila
  113. for ($o = 5; $o <= $max_row; $o++) {
  114. if ($sheet->getCell("A" . $o)->getValue() == $country) {
  115. $country = $sheet->getCell("B" . $o)->getValue();
  116. break;
  117. }
  118. }
  119. }
  120. $document = IOFactory::load(Storage::disk('excel')->path("c_Colonia.xls"));
  121. $max_sheets = $document->getSheetCount();
  122. for ($i = 0; $i < $max_sheets; $i++) {
  123. $sheet = $document->getSheet($i);
  124. $max_row = $sheet->getHighestRow(); # Fila
  125. for ($o = 5; $o <= $max_row; $o++) {
  126. if ($sheet->getCell("B" . $o)->getValue() == $postal_code) {
  127. $arr_suburb[] = $sheet->getCell("C" . $o)->getValue();
  128. }
  129. }
  130. }
  131. $data = new stdClass();
  132. $data->POSTAL_CODE = $postal_code;
  133. $data->SUBURB = sizeof($arr_suburb) != 0 ? $arr_suburb : "N/A";
  134. $data->MUNICIPALITY = $municipality != null ? $municipality : "N/A";
  135. $data->STATE = $state != null ? $state : "N/A";
  136. $data->COUNTRY = $country != null ? $country : "N/A";
  137. return $this->response_controller->makeResponse(false, 'Consulta Exitosa', $data, 200);
  138. } catch (Throwable $th) {
  139. return $this->response_controller
  140. ->makeResponse(TRUE, 'ERR_PAIS_REG002: Error inesperado', strtoupper($th->getMessage()), 500);
  141. }
  142. }
  143. public function getSuburbByPostalCode($postal_code, $line)
  144. {
  145. try {
  146. $arr_suburb = [];
  147. $document = IOFactory::load(Storage::disk('excel')->path("c_Colonia.xls"));
  148. $max_sheets = $document->getSheetCount();
  149. for ($i = 0; $i < $max_sheets; $i++) {
  150. $sheet = $document->getSheet($i);
  151. $max_row = $sheet->getHighestRow(); # Fila
  152. for ($o = 5; $o <= $max_row; $o++) {
  153. if ($sheet->getCell("B" . $o)->getValue() == $postal_code) {
  154. $arr_suburb[] = $sheet->getCell("C" . $o)->getValue();
  155. }
  156. }
  157. }
  158. return $this->response_controller->makeResponse(false, 'Consulta Exitosa', sizeof($arr_suburb) != 0 ? $arr_suburb : "N/A", 200);
  159. } catch (Throwable $th) {
  160. return $this->response_controller
  161. ->makeResponse(TRUE, 'ERR_PAIS_REG000: Error inesperado', strtoupper($th->getMessage()), 500);
  162. }
  163. }
  164. }