CountriesController.php 7.6 KB

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