MunicipioController.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace excel\controllers;
  3. use excel\web\Controller;
  4. use v1\models\Municipio;
  5. class MunicipioController extends Controller {
  6. public function actionIndex() {
  7. $query = Municipio::find()
  8. ->innerJoin('Estado', '{{Estado}}.id = {{Municipio}}.[[idEstado]]')
  9. ->andWhere(['{{Municipio}}.eliminado' => null])
  10. ->andWhere(['{{Estado}}.eliminado' => null])
  11. ->orderBy(['{{Estado}}.nombre' => SORT_ASC, '{{Municipio}}.nombre' => SORT_ASC])
  12. ->all();
  13. $renglones = [
  14. "A7" => [
  15. "valor" => "Estado",
  16. "estilo" => array_merge(self::$bordes, self::$estiloCeldaCentrada)
  17. ],
  18. "B7" => [
  19. "valor" => "Municipio",
  20. "estilo" => array_merge(self::$bordes, self::$estiloCeldaCentrada)
  21. ],
  22. "C7" => [
  23. "valor" => "Niveles",
  24. "estilo" => array_merge(self::$bordes, self::$estiloCeldaCentrada)
  25. ],
  26. ];
  27. $this->agregarRenglones($renglones);
  28. $this->renglonActual = 8;
  29. $renglonActual = $this->renglonActual;
  30. foreach($query as $municipio) {
  31. $niveles = [];
  32. if (count($municipio->niveles) > 0) {
  33. $niveles = $municipio->niveles;
  34. }
  35. $cantidadNiveles = count($niveles);
  36. $contadorNiveles = 0;
  37. $nivelesClaves = '';
  38. foreach ($niveles as $nivel) {
  39. $contadorNiveles++;
  40. $nivelesClaves .= $nivel['clave'];
  41. if ($contadorNiveles < $cantidadNiveles) {
  42. $nivelesClaves .= ', ';
  43. }
  44. }
  45. $this->agregarCelda("A{$renglonActual}", ["valor" => $municipio->estado->nombre]);
  46. $this->agregarCelda("B{$renglonActual}", ["valor" => $municipio->nombre]);
  47. $this->agregarCelda("C{$renglonActual}", ["valor" => $nivelesClaves]);
  48. $renglonActual++;
  49. }
  50. $columnas = [
  51. "A" => ["auto" => true],
  52. "B" => ["auto" => true],
  53. "C" => ["auto" => true],
  54. ];
  55. $this->anchoColumnas($columnas);
  56. $documento = $this->obtenerHojaDeCalculo();
  57. $fecha = (new \DateTime('now', new \DateTimeZone('America/Hermosillo')))
  58. ->format("d_m_Y-H_i_s");
  59. $nombreArchivo = "municipios_{$fecha}";
  60. $this->crear($documento, $nombreArchivo, $tipo = self::TIPO_EXCEL);
  61. \Yii::$app->end();
  62. }
  63. }