瀏覽代碼

Agregados niveles a municipios

Isaac Noriega 10 月之前
父節點
當前提交
912827d603

+ 26 - 0
migrations/m240625_222117_nivel_municipio.php

@@ -0,0 +1,26 @@
+<?php
+
+use yii\db\Migration;
+
+class m240625_222117_nivel_municipio extends Migration {
+  public function safeUp() {
+    $this->createTable('NivelMunicipio', [
+      "id" => $this->string(36),
+      "idMunicipio" => $this->string(36),
+      "idNivel" => $this->string(36),
+      "creado" => $this->timestamp()->append('with time zone'),
+      "modificado" => $this->timestamp()->append('with time zone'),
+      "eliminado" => $this->timestamp()->append('with time zone'),
+    ]);
+
+    $this->addPrimaryKey('NivelMunicipioPK', 'NivelMunicipio', 'id');
+    $this->addForeignKey('NivelMunicipioMunicipioFK', 'NivelMunicipio', 'idMunicipio', 'Municipio', 'id');
+    $this->addForeignKey('NivelMunicipioNivelFK', 'NivelMunicipio', 'idNivel', 'Nivel', 'id');
+  }
+  public function safeDown() {
+    $this->dropForeignKey('NivelMunicipioNivelFK', 'NivelMunicipio');
+    $this->dropForeignKey('NivelMunicipioMunicipioFK', 'NivelMunicipio');
+    $this->dropPrimaryKey('NivelMunicipioPK', 'NivelMunicipio');
+    $this->dropTable('NivelMunicipio');
+  }
+}

+ 73 - 0
models/NivelMunicipio.php

@@ -0,0 +1,73 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "NivelMunicipio".
+ *
+ * @property string $id
+ * @property string|null $idMunicipio
+ * @property string|null $idNivel
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Municipio $idMunicipio0
+ * @property Nivel $idNivel0
+ */
+class NivelMunicipio extends ModeloBase {
+  /**
+   * {@inheritdoc}
+   */
+  public static function tableName() {
+    return 'NivelMunicipio';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rules() {
+    return [
+      [['id'], 'required'],
+      [['creado', 'modificado', 'eliminado'], 'safe'],
+      [['id', 'idMunicipio', 'idNivel'], 'string', 'max' => 36],
+      [['id'], 'unique'],
+      [['idMunicipio'], 'exist', 'skipOnError' => true, 'targetClass' => Municipio::class, 'targetAttribute' => ['idMunicipio' => 'id']],
+      [['idNivel'], 'exist', 'skipOnError' => true, 'targetClass' => Nivel::class, 'targetAttribute' => ['idNivel' => 'id']],
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function attributeLabels() {
+    return [
+      'id' => 'ID',
+      'idMunicipio' => 'Id Municipio',
+      'idNivel' => 'Id Nivel',
+      'creado' => 'Creado',
+      'modificado' => 'Modificado',
+      'eliminado' => 'Eliminado',
+    ];
+  }
+
+  /**
+   * Gets query for [[IdMunicipio0]].
+   *
+   * @return \yii\db\ActiveQuery
+   */
+  public function getMunicipio() {
+    return $this->hasOne(Municipio::class, ['id' => 'idMunicipio']);
+  }
+
+  /**
+   * Gets query for [[IdNivel0]].
+   *
+   * @return \yii\db\ActiveQuery
+   */
+  public function getNivel() {
+    return $this->hasOne(Nivel::class, ['id' => 'idNivel']);
+  }
+}

+ 24 - 6
modules/v1/controllers/MunicipioController.php

@@ -6,6 +6,8 @@ use common\data\Respuesta;
 use common\rest\AuthController;
 use yii\db\Expression;
 use app\models\Municipio;
+use v1\models\Nivel;
+use v1\models\NivelMunicipio;
 
 class MunicipioController extends AuthController {
 
@@ -21,11 +23,11 @@ class MunicipioController extends AuthController {
 
     if ($idEstado !== "") {
       $query->andWhere(["Estado.id" => $idEstado]);
-  }
+    }
 
-  if ($id !== "") {
+    if ($id !== "") {
       $query->andWhere(["Municipio.id" => $id]);
-  }
+    }
 
     if (!empty($buscar)) {
       $query->andWhere([
@@ -40,6 +42,7 @@ class MunicipioController extends AuthController {
 
   public function actionGuardar() {
     $id = trim($this->req->getBodyParam("id", ""));
+    $niveles = $this->req->getBodyParam("niveles", []);
 
     $modelo = null;
     if ($id !== "") {
@@ -50,13 +53,13 @@ class MunicipioController extends AuthController {
     try {
       if ($modelo === null) {
         $modelo = new $this->modelClass();
-        $modelo -> uuid ();
+        $modelo->uuid();
         $modelo->creado = new Expression('now()');
       } else {
         $modelo->modificado = new Expression('now()');
       }
 
-      $modelo->load($this->req->getBodyParams(),'');
+      $modelo->load($this->req->getBodyParams(), '');
 
       if (!$modelo->save()) {
         return (new Respuesta($modelo))
@@ -64,12 +67,27 @@ class MunicipioController extends AuthController {
           ->mensaje("Hubo un problema al guardar el registro del Municipio.");
       }
 
+      \v1\models\NivelMunicipio::deleteAll(['idMunicipio' => $modelo->id]);
+      if (count($niveles) > 0) {
+        foreach ($niveles as $idNivel) {
+          $nivel = new NivelMunicipio();
+          $nivel->uuid();
+          $nivel->idNivel = $idNivel;
+          $nivel->idMunicipio = $modelo->id;
+          $nivel->creado = new Expression('now()');
+          if (!$nivel->save()) {
+            return (new Respuesta($nivel))
+              ->esError()
+              ->mensaje("Hubo un problema al guardar el registro del Municipio.");
+          }
+        }
+      }
+
       $tran->commit();
       $modelo->refresh();
 
       return (new Respuesta($modelo))
         ->mensaje("Registro de Municipio guardado con éxito.");
-
     } catch (\Exception $e) {
       return (new Respuesta())
         ->esError()

+ 6 - 2
modules/v1/models/Municipio.php

@@ -10,17 +10,21 @@ class Municipio extends \app\models\Municipio {
       'nombre',
       'idEstado',
       'creado',
-      'modificado'
+      'modificado',
     ];
   }
 
   public function extraFields() {
     return [
-      'estado'
+      'estado',
+      'niveles'
     ];
   }
 
   public function getEstado() {
     return $this->hasOne(Estado::class, ['id' => 'idEstado']);
   }
+  public function getNiveles() {
+    return $this->hasMany(Nivel::class, ['id' => 'idNivel'])->viaTable('NivelMunicipio', ['idMunicipio' => 'id']);
+  }
 }

+ 31 - 0
modules/v1/models/NivelMunicipio.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace v1\models;
+
+use app\models\NivelMunicipio as ModeloNivelMunicipio;
+
+class NivelMunicipio extends ModeloNivelMunicipio {
+	public function fields() {
+		return [
+			'id',
+			'idMunicipio',
+			'idNivel',
+			'creado',
+			'modificado',
+			'eliminado',
+		];
+	}
+	public function extraFields() {
+		return [
+			'municipio',
+			'nivel'
+		];
+	}
+	public function getMunicipio() {
+		return $this->hasOne(Municipio::class, ['id' => 'idMunicipio']);
+	}
+
+	public function getNivel() {
+		return $this->hasOne(Nivel::class, ['id' => 'idNivel']);
+	}
+}