CountriesController.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Support\Facades\Storage;
  6. use PhpOffice\PhpSpreadsheet\IOFactory;
  7. use stdClass;
  8. use Throwable;
  9. class CountriesController extends Controller
  10. {
  11. private $response_controller;
  12. private $encrypt_controller;
  13. public function __construct()
  14. {
  15. $this->response_controller = new ResponseController();
  16. $this->encrypt_controller = new EncryptionController();
  17. }
  18. public function getCountries($line_number)
  19. {
  20. try {
  21. // Busca si el subcontratista existe
  22. $countries = DB::table("S002V01TPAIS")
  23. ->select(
  24. "PAIS_IDPA as COUNTRY_ID",
  25. "PAIS_NOMB as NAME",
  26. "PAIS_LADA as LADA",
  27. "PAIS_NOME AS NOMECLARUTA_ISO2",
  28. "PAIS_NOM2 AS NOMECLARUTA_ISO3"
  29. )
  30. ->where('PAIS_NULI', '=', $line_number)
  31. ->get();
  32. // Verifica si el objeto esta vacio
  33. if (!isset($countries[0]) && empty($countries[0])) {
  34. return $this->response_controller
  35. ->makeResponse(TRUE, "ERR_SUBCONTRATISTA_REG001: No se encontró al subcontratista", $countries, 500);
  36. }
  37. return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $countries);
  38. } catch (Throwable $th) {
  39. return $this->response_controller
  40. ->makeResponse(TRUE, 'ERR_SUBCONTRATISTA_REG005: Error inesperado', strtoupper($th->getMessage()), 500);
  41. }
  42. }
  43. public function getDataByPostalCode($postal_code)
  44. {
  45. try {
  46. $state = "N/A";
  47. $municipality = "N/A";
  48. $arr_suburb = [];
  49. $country = "N/A";
  50. $flag = false; # Indica cuando la información sea encontrada para salir del ciclo
  51. // Carga el documento y verifica cuantas hojas tiene
  52. $document = IOFactory::load(Storage::disk('excel')->path("c_CodigoPostal.xls"));
  53. $max_sheets = $document->getSheetCount();
  54. // Verifica por fila los datos buscando el correcto
  55. for ($i = 0; $i < $max_sheets; $i++) {
  56. $sheet = $document->getSheet($i);
  57. $max_row = $sheet->getHighestRow(); # Fila
  58. for ($o = 8; $o <= $max_row; $o++) {
  59. if ($sheet->getCell("A" . $o)->getValue() == $postal_code) {
  60. $state = $sheet->getCell("B" . $o)->getValue();
  61. $municipality = $sheet->getCell("C" . $o)->getValue();
  62. $flag = true;
  63. break;
  64. }
  65. }
  66. // Si el dato se encontró, sale del ciclo para no entrar en otra hoja
  67. if ($flag) {
  68. break;
  69. }
  70. }
  71. // Verifica si el código postal se encontró en el catalogo
  72. if($flag){
  73. $flag = false;
  74. }else{
  75. return $this->response_controller
  76. ->makeResponse(TRUE, "ERR_PAIS_REG001: El código postal {$postal_code} no existe", [], 400);
  77. }
  78. $document = IOFactory::load(Storage::disk('excel')->path("c_Municipio.xls"));
  79. $max_sheets = $document->getSheetCount();
  80. for ($i = 0; $i < $max_sheets; $i++) {
  81. $sheet = $document->getSheet($i);
  82. $max_row = $sheet->getHighestRow(); # Fila
  83. for ($o = 5; $o <= $max_row; $o++) {
  84. if ($sheet->getCell("A" . $o)->getValue() == $municipality && $sheet->getCell("B" . $o)->getValue() == $state) {
  85. $municipality = $sheet->getCell("C" . $o)->getValue();
  86. break;
  87. }
  88. }
  89. }
  90. $document = IOFactory::load(Storage::disk('excel')->path("c_Estado.xls"));
  91. $max_sheets = $document->getSheetCount();
  92. for ($i = 0; $i < $max_sheets; $i++) {
  93. $sheet = $document->getSheet($i);
  94. $max_row = $sheet->getHighestRow(); # Fila
  95. for ($o = 5; $o <= $max_row; $o++) {
  96. if ($sheet->getCell("A" . $o)->getValue() == $state) {
  97. $country = $sheet->getCell("B" . $o)->getValue();
  98. $state = $sheet->getCell("C" . $o)->getValue();
  99. break;
  100. }
  101. }
  102. }
  103. $document = IOFactory::load(Storage::disk('excel')->path("c_Pais.xls"));
  104. $max_sheets = $document->getSheetCount();
  105. for ($i = 0; $i < $max_sheets; $i++) {
  106. $sheet = $document->getSheet($i);
  107. $max_row = $sheet->getHighestRow(); # Fila
  108. for ($o = 5; $o <= $max_row; $o++) {
  109. if ($sheet->getCell("A" . $o)->getValue() == $country) {
  110. $country = $sheet->getCell("B" . $o)->getValue();
  111. break;
  112. }
  113. }
  114. }
  115. $document = IOFactory::load(Storage::disk('excel')->path("c_Colonia.xls"));
  116. $max_sheets = $document->getSheetCount();
  117. for ($i = 0; $i < $max_sheets; $i++) {
  118. $sheet = $document->getSheet($i);
  119. $max_row = $sheet->getHighestRow(); # Fila
  120. for ($o = 5; $o <= $max_row; $o++) {
  121. if ($sheet->getCell("B" . $o)->getValue() == $postal_code) {
  122. $arr_suburb[] = $sheet->getCell("C" . $o)->getValue();
  123. }
  124. }
  125. }
  126. $data = new stdClass();
  127. $data->POSTAL_CODE = $postal_code;
  128. $data->SUBURB = sizeof($arr_suburb) != 0 ? $arr_suburb : "N/A";
  129. $data->MUNICIPALITY = $municipality != null ? $municipality : "N/A";
  130. $data->STATE = $state != null ? $state : "N/A";
  131. $data->COUNTRY = $country != null ? $country : "N/A";
  132. return $this->response_controller
  133. ->makeResponse(FALSE, 'Succesfull', $data, 500);
  134. } catch (Throwable $th) {
  135. return $this->response_controller
  136. ->makeResponse(TRUE, 'ERR_PAIS_REG002: Error inesperado', strtoupper($th->getMessage()), 500);
  137. }
  138. }
  139. }