OscarGil03 месяцев назад: 11
Родитель
Сommit
9721c86805

+ 55 - 0
migrations/m240517_232504_relaciones_condicionantes.php

@@ -0,0 +1,55 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m240517_232504_relaciones_condicionantes
+ */
+class m240517_232504_relaciones_condicionantes extends Migration
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $this->addForeignKey("CondicionanteDestinoCondicionanteFK", "CondicionanteDestino", "idCondicionante", "Condicionante", "id");
+        $this->addForeignKey("CondicionanteDestinoDestinoFK", "CondicionanteDestino", "idDestino", "Estado", "id");
+        $this->addForeignKey("CondicionanteOrigenCondicionanteFK", "CondicionanteOrigen", "idCondicionante", "Condicionante", "id");
+        $this->addForeignKey("CondicionanteOrigenOrigenFK", "CondicionanteOrigen", "idOrigen", "Estado", "id");
+        $this->addForeignKey("CondicionanteTipoCondicionanteFK", "CondicionanteTipo", "idCondicionante", "Condicionante", "id");
+        $this->addForeignKey("CondicionanteTipoTipoFK", "CondicionanteTipo", "idTipo", "TipoMovilizacion", "id");
+        $this->addForeignKey("CondicionanteFinCondicionanteFK", "CondicionanteFin", "idCondicionante", "Condicionante", "id");
+        $this->addForeignKey("CondicionanteFinFinFK", "CondicionanteFin", "idFin", "FinMovilizacion", "id");
+
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        $this->dropForeignKey("CondicionanteDestinoCondicionanteFK", "CondicionanteDestino");
+        $this->dropForeignKey("CondicionanteDestinoDestinoFK", "CondicionanteDestino");
+        $this->dropForeignKey("CondicionanteOrigenCondicionanteFK", "CondicionanteOrigen");
+        $this->dropForeignKey("CondicionanteOrigenOrigenFK", "CondicionanteOrigen");
+        $this->dropForeignKey("CondicionanteTipoCondicionanteFK", "CondicionanteTipo");
+        $this->dropForeignKey("CondicionanteTipoTipoFK", "CondicionanteTipo");
+        $this->dropForeignKey("CondicionanteFinCondicionanteFK", "CondicionanteFin");
+        $this->dropForeignKey("CondicionanteFinFinFK", "CondicionanteFin");
+    }
+
+    /*
+    // Use up()/down() to run migration code without a transaction.
+    public function up()
+    {
+
+    }
+
+    public function down()
+    {
+        echo "m240517_232504_relaciones_condicionantes cannot be reverted.\n";
+
+        return false;
+    }
+    */
+}

+ 180 - 0
models/Condicionante.php

@@ -0,0 +1,180 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "Condicionante".
+ *
+ * @property string $id
+ * @property string|null $titulo
+ * @property string|null $descripcion
+ * @property bool|null $activa
+ * @property string|null $amplitud
+ * @property string|null $idProducto
+ * @property string|null $subproductos
+ * @property string|null $idCreador
+ * @property string|null $idModificador
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property CondicionanteDestino[] $condicionanteDestino
+ * @property CondicionanteFin[] $condicionanteFin
+ * @property CondicionanteOrigen[] $condicionanteOrigen
+ * @property CondicionanteTipo[] $condicionanteTipo
+ * @property Usuario $idCreador
+ * @property Estado[] $idDestino
+ * @property FinMovilizacion[] $idFin
+ * @property Usuario $idModificador
+ * @property Estado[] $idOrigen
+ * @property Producto $idProducto
+ * @property TipoMovilizacion[] $idTipo
+ */
+class Condicionante extends ModeloBase {
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName() {
+        return 'Condicionante';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules() {
+        return [
+            [['id'], 'required'],
+            [['descripcion', 'subproductos'], 'string'],
+            [['activa'], 'boolean'],
+            [['creado', 'modificado', 'eliminado'], 'safe'],
+            [['id', 'idProducto', 'idCreador', 'idModificador'], 'string', 'max' => 36],
+            [['titulo'], 'string', 'max' => 100],
+            [['amplitud'], 'string', 'max' => 50],
+            [['id'], 'unique'],
+            [['idProducto'], 'exist', 'skipOnError' => true, 'targetClass' => Producto::class, 'targetAttribute' => ['idProducto' => 'id']],
+            [['idCreador'], 'exist', 'skipOnError' => true, 'targetClass' => Usuario::class, 'targetAttribute' => ['idCreador' => 'id']],
+            [['idModificador'], 'exist', 'skipOnError' => true, 'targetClass' => Usuario::class, 'targetAttribute' => ['idModificador' => 'id']],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels() {
+        return [
+            'id' => 'ID',
+            'titulo' => 'Titulo',
+            'descripcion' => 'Descripcion',
+            'activa' => 'Activa',
+            'amplitud' => 'Amplitud',
+            'idProducto' => 'Id Producto',
+            'subproductos' => 'Subproductos',
+            'idCreador' => 'Id Creador',
+            'idModificador' => 'Id Modificador',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+
+    /**
+     * Gets query for [[CondicionanteDestino]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getCondicionanteDestino() {
+        return $this->hasMany(CondicionanteDestino::class, ['idCondicionante' => 'id']);
+    }
+
+    /**
+     * Gets query for [[CondicionanteFin]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getCondicionanteFin() {
+        return $this->hasMany(CondicionanteFin::class, ['idCondicionante' => 'id']);
+    }
+
+    /**
+     * Gets query for [[CondicionanteOrigen]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getCondicionanteOrigen() {
+        return $this->hasMany(CondicionanteOrigen::class, ['idCondicionante' => 'id']);
+    }
+
+    /**
+     * Gets query for [[CondicionanteTipo]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getCondicionanteTipo() {
+        return $this->hasMany(CondicionanteTipo::class, ['idCondicionante' => 'id']);
+    }
+
+    /**
+     * Gets query for [[IdCreador]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdCreador() {
+        return $this->hasOne(Usuario::class, ['id' => 'idCreador']);
+    }
+
+    /**
+     * Gets query for [[IdDestino]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdDestino() {
+        return $this->hasMany(Estado::class, ['id' => 'idDestino'])->viaTable('CondicionanteDestino', ['idCondicionante' => 'id']);
+    }
+
+    /**
+     * Gets query for [[IdFin]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdFin() {
+        return $this->hasMany(FinMovilizacion::class, ['id' => 'idFin'])->viaTable('CondicionanteFin', ['idCondicionante' => 'id']);
+    }
+
+    /**
+     * Gets query for [[IdModificador]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdModificador() {
+        return $this->hasOne(Usuario::class, ['id' => 'idModificador']);
+    }
+
+    /**
+     * Gets query for [[IdOrigen]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdOrigen() {
+        return $this->hasMany(Estado::class, ['id' => 'idOrigen'])->viaTable('CondicionanteOrigen', ['idCondicionante' => 'id']);
+    }
+
+    /**
+     * Gets query for [[IdProducto0]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdProducto() {
+        return $this->hasOne(Producto::class, ['id' => 'idProducto']);
+    }
+
+    /**
+     * Gets query for [[IdTipos]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdTipos() {
+        return $this->hasMany(TipoMovilizacion::class, ['id' => 'idTipo'])->viaTable('CondicionanteTipo', ['idCondicionante' => 'id']);
+    }
+}

+ 51 - 0
models/CondicionanteCondicionante.php

@@ -0,0 +1,51 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "CondicionanteCondicionante".
+ *
+ * @property string $id
+ * @property string|null $idCondicionante
+ * @property string|null $nombre
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ */
+class CondicionanteCondicionante extends ModeloBase {
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName() {
+        return 'CondicionanteCondicionante';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules() {
+        return [
+            [['id'], 'required'],
+            [['creado', 'modificado', 'eliminado'], 'safe'],
+            [['id', 'idCondicionante'], 'string', 'max' => 36],
+            [['nombre'], 'string', 'max' => 100],
+            [['id'], 'unique'],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels() {
+        return [
+            'id' => 'ID',
+            'idCondicionante' => 'Id Condicionante',
+            'nombre' => 'Nombre',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+}

+ 71 - 0
models/CondicionanteDestino.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "CondicionanteDestino".
+ *
+ * @property string $idDestino
+ * @property string $idCondicionante
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Condicionante $idCondicionante
+ * @property Estado $idDestino
+ */
+class CondicionanteDestino extends ModeloBase {
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName() {
+        return 'CondicionanteDestino';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules() {
+        return [
+            [['idDestino', 'idCondicionante'], 'required'],
+            [['creado', 'modificado', 'eliminado'], 'safe'],
+            [['idDestino', 'idCondicionante'], 'string', 'max' => 36],
+            [['idDestino', 'idCondicionante'], 'unique', 'targetAttribute' => ['idDestino', 'idCondicionante']],
+            [['idCondicionante'], 'exist', 'skipOnError' => true, 'targetClass' => Condicionante::class, 'targetAttribute' => ['idCondicionante' => 'id']],
+            [['idDestino'], 'exist', 'skipOnError' => true, 'targetClass' => Estado::class, 'targetAttribute' => ['idDestino' => 'id']],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels() {
+        return [
+            'idDestino' => 'Id Destino',
+            'idCondicionante' => 'Id Condicionante',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+
+    /**
+     * Gets query for [[IdCondicionante]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdCondicionante() {
+        return $this->hasOne(Condicionante::class, ['id' => 'idCondicionante']);
+    }
+
+    /**
+     * Gets query for [[IdDestino0]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdDestino() {
+        return $this->hasOne(Estado::class, ['id' => 'idDestino']);
+    }
+}

+ 71 - 0
models/CondicionanteFin.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "CondicionanteFin".
+ *
+ * @property string $idFin
+ * @property string $idCondicionante
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Condicionante $idCondicionante
+ * @property FinMovilizacion $idFin
+ */
+class CondicionanteFin extends ModeloBase {
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName() {
+        return 'CondicionanteFin';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules() {
+        return [
+            [['idFin', 'idCondicionante'], 'required'],
+            [['creado', 'modificado', 'eliminado'], 'safe'],
+            [['idFin', 'idCondicionante'], 'string', 'max' => 36],
+            [['idFin', 'idCondicionante'], 'unique', 'targetAttribute' => ['idFin', 'idCondicionante']],
+            [['idCondicionante'], 'exist', 'skipOnError' => true, 'targetClass' => Condicionante::class, 'targetAttribute' => ['idCondicionante' => 'id']],
+            [['idFin'], 'exist', 'skipOnError' => true, 'targetClass' => FinMovilizacion::class, 'targetAttribute' => ['idFin' => 'id']],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels() {
+        return [
+            'idFin' => 'Id Fin',
+            'idCondicionante' => 'Id Condicionante',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+
+    /**
+     * Gets query for [[IdCondicionante]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdCondicionante() {
+        return $this->hasOne(Condicionante::class, ['id' => 'idCondicionante']);
+    }
+
+    /**
+     * Gets query for [[IdFin]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdFin() {
+        return $this->hasOne(FinMovilizacion::class, ['id' => 'idFin']);
+    }
+}

+ 71 - 0
models/CondicionanteOrigen.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "CondicionanteOrigen".
+ *
+ * @property string $idOrigen
+ * @property string $idCondicionante
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Condicionante $idCondicionante
+ * @property Estado $idOrigen
+ */
+class CondicionanteOrigen extends ModeloBase {
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName() {
+        return 'CondicionanteOrigen';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules() {
+        return [
+            [['idOrigen', 'idCondicionante'], 'required'],
+            [['creado', 'modificado', 'eliminado'], 'safe'],
+            [['idOrigen', 'idCondicionante'], 'string', 'max' => 36],
+            [['idOrigen', 'idCondicionante'], 'unique', 'targetAttribute' => ['idOrigen', 'idCondicionante']],
+            [['idCondicionante'], 'exist', 'skipOnError' => true, 'targetClass' => Condicionante::class, 'targetAttribute' => ['idCondicionante' => 'id']],
+            [['idOrigen'], 'exist', 'skipOnError' => true, 'targetClass' => Estado::class, 'targetAttribute' => ['idOrigen' => 'id']],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels() {
+        return [
+            'idOrigen' => 'Id Origen',
+            'idCondicionante' => 'Id Condicionante',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+
+    /**
+     * Gets query for [[IdCondicionante]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdCondicionante() {
+        return $this->hasOne(Condicionante::class, ['id' => 'idCondicionante']);
+    }
+
+    /**
+     * Gets query for [[IdOrigen]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdOrigen() {
+        return $this->hasOne(Estado::class, ['id' => 'idOrigen']);
+    }
+}

+ 71 - 0
models/CondicionanteTipo.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "CondicionanteTipo".
+ *
+ * @property string $idTipo
+ * @property string $idCondicionante
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Condicionante $idCondicionante
+ * @property TipoMovilizacion $idTipo
+ */
+class CondicionanteTipo extends ModeloBase {
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName() {
+        return 'CondicionanteTipo';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules() {
+        return [
+            [['idTipo', 'idCondicionante'], 'required'],
+            [['creado', 'modificado', 'eliminado'], 'safe'],
+            [['idTipo', 'idCondicionante'], 'string', 'max' => 36],
+            [['idTipo', 'idCondicionante'], 'unique', 'targetAttribute' => ['idTipo', 'idCondicionante']],
+            [['idCondicionante'], 'exist', 'skipOnError' => true, 'targetClass' => Condicionante::class, 'targetAttribute' => ['idCondicionante' => 'id']],
+            [['idTipo'], 'exist', 'skipOnError' => true, 'targetClass' => TipoMovilizacion::class, 'targetAttribute' => ['idTipo' => 'id']],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels() {
+        return [
+            'idTipo' => 'Id Tipo',
+            'idCondicionante' => 'Id Condicionante',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+
+    /**
+     * Gets query for [[IdCondicionante]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdCondicionante() {
+        return $this->hasOne(Condicionante::class, ['id' => 'idCondicionante']);
+    }
+
+    /**
+     * Gets query for [[IdTipo]].
+     *
+     * @return \yii\db\ActiveQuery
+     */
+    public function getIdTipo() {
+        return $this->hasOne(TipoMovilizacion::class, ['id' => 'idTipo']);
+    }
+}

+ 153 - 0
modules/v1/controllers/CondicionanteController.php

@@ -0,0 +1,153 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class CondicionanteController extends AuthController {
+
+  public $modelClass = "v1\models\Condicionante";
+
+  public function actionIndex() {
+    $id = trim($this->req->get("id", ""));
+    $buscar = trim($this->req->get("q", ""));
+    $idProducto = trim($this->req->get("idProducto", ""));
+
+    $query = $this->queryInicial;
+
+    if ($id !== "") {
+      $query->andWhere(["id" => $id]);
+    }
+
+    if ($buscar) {
+      $query->andWhere([
+        "OR",
+        "f_unaccent([[titulo]]) ilike f_unaccent(:q)",
+        "f_unaccent([[descripcion]]) ilike f_unaccent(:q)",
+      ])->addParams([':q' => "%{$buscar}%"]);
+    }
+
+    if ($idProducto) {
+      $query->andWhere(["idProducto" => $idProducto]);
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar() {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $fines = $this->req->getBodyParam("fines", []);
+    $tipos = $this->req->getBodyParam("tipos", []);
+    $origenes = $this->req->getBodyParam("origenes", []);
+    $destinos = $this->req->getBodyParam("destinos", []);
+
+    $modelo = null;
+    if ($id !== "") {
+      $modelo = $this->modelClass::findOne($id);
+    }
+
+    $tran = \Yii::$app->getDb()->beginTransaction();
+    try {
+      if ($modelo === null) {
+        $modelo = new $this->modelClass();
+        $modelo -> uuid ();
+        $modelo->creado = new Expression('now()');
+      } else {
+        $modelo->modificado = new Expression('now()');
+      }
+
+      $modelo->load($this->req->getBodyParams(), '');
+
+      if (!$modelo->save()) {
+        return (new Respuesta($modelo))
+          ->esError()
+          ->mensaje("Hubo un problema al guardar el registro del Condicionante.");
+      }
+
+      // Guardar CondicionanteFines
+      \v1\models\CondicionanteFin::deleteAll(['idCondicionante' => $modelo->id]);
+      foreach ($fines as $fin) {
+        $condicionanteFin = new \v1\models\CondicionanteFin();
+        $condicionanteFin->idCondicionante = $modelo->id;
+        $condicionanteFin->idFin = $fin;
+        $condicionanteFin->creado = new Expression('now()');
+        if (!$condicionanteFin->save()) {
+          throw new \Exception("Error al guardar el CondicionanteFin");
+        }
+      }
+
+      // Guardar CondicionanteTipos
+      \v1\models\CondicionanteTipo::deleteAll(['idCondicionante' => $modelo->id]);
+      foreach ($tipos as $tipo) {
+        $condicionanteTipo = new \v1\models\CondicionanteTipo();
+        $condicionanteTipo->idCondicionante = $modelo->id;
+        $condicionanteTipo->idTipo = $tipo;
+        $condicionanteTipo->creado = new Expression('now()');
+        if (!$condicionanteTipo->save()) {
+          throw new \Exception("Error al guardar el CondicionanteTipo");
+        }
+      }
+
+      // Guardar CondicionanteOrigens
+      \v1\models\CondicionanteOrigen::deleteAll(['idCondicionante' => $modelo->id]);
+      foreach ($origenes as $origen) {
+        $condicionanteOrigen = new \v1\models\CondicionanteOrigen();
+        $condicionanteOrigen->idCondicionante = $modelo->id;
+        $condicionanteOrigen->idOrigen = $origen;
+        $condicionanteOrigen->creado = new Expression('now()');
+        if (!$condicionanteOrigen->save()) {
+          throw new \Exception("Error al guardar el CondicionanteOrigen");
+        }
+      }
+
+      // Guardar CondicionanteDestinos
+      \v1\models\CondicionanteDestino::deleteAll(['idCondicionante' => $modelo->id]);
+      foreach ($destinos as $destino) {
+        $condicionanteDestino = new \v1\models\CondicionanteDestino();
+        $condicionanteDestino->idCondicionante = $modelo->id;
+        $condicionanteDestino->idDestino = $destino;
+        $condicionanteDestino->creado = new Expression('now()');
+        if (!$condicionanteDestino->save()) {
+          throw new \Exception("Error al guardar el CondicionanteDestino");
+        }
+      }
+
+      $tran->commit();
+      $modelo->refresh();
+
+      return (new Respuesta($modelo))
+        ->mensaje("Registro de Condicionante guardado con éxito.");
+
+    } catch (\Exception $e) {
+      $tran->rollBack();
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("Hubo un error en el servidor: " . $e->getMessage());
+    }
+  }
+
+  public function actionEliminar() {
+    $id = trim($this->req->getBodyParam("id", null));
+    $modelo = null;
+
+    if ($id !== "") {
+      $modelo = $this->modelClass::findOne(["id" => $id]);
+    }
+    if ($modelo === null) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("Registro de Condicionante no encontrado.");
+    }
+
+    $modelo->eliminado = new Expression('now()');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar el registro del Condicionante.");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Registro de Condicionante eliminado.");
+  }
+}

+ 72 - 0
modules/v1/models/Condicionante.php

@@ -0,0 +1,72 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Condicionante as ModelsCondicionante;
+
+class Condicionante extends ModelsCondicionante {
+  public function fields() {
+    return [
+      'id',
+      'titulo',
+      'descripcion',
+      'activa',
+      'amplitud',
+      'idProducto',
+      'subproductos',
+      'idCreador',
+      'idModificador',
+      'creado',
+      'modificado',
+      'eliminado',
+    ];
+  }
+
+  public function extraFields() {
+    return [
+      'producto',
+      'creador',
+      'modificador',
+      'condicionanteFin',
+      'condicionanteTipo',
+      'condicionanteOrigen',
+      'condicionanteDestino'
+    ];
+  }
+
+  public function getProducto() {
+    return $this->hasOne(Producto::class, ['id' => 'idProducto']);
+  }
+
+  public function getCreador() {
+    return $this->hasOne(Usuario::class, ['id' => 'idCreador']);
+  }
+
+  public function getModificador() {
+    return $this->hasOne(Usuario::class, ['id' => 'idModificador']);
+  }
+
+  public function getCondicionanteFin() {
+    return $this->hasMany(CondicionanteFin::class, ['idCondicionante' => 'id'])
+      ->andWhere('eliminado IS NULL')
+      ->orderBy(['creado' => SORT_ASC]);
+  }
+
+  public function getCondicionanteTipo() {
+    return $this->hasMany(CondicionanteTipo::class, ['idCondicionante' => 'id'])
+      ->andWhere('eliminado IS NULL')
+      ->orderBy(['creado' => SORT_ASC]);
+  }
+
+  public function getCondicionanteOrigen() {
+    return $this->hasMany(CondicionanteOrigen::class, ['idCondicionante' => 'id'])
+      ->andWhere('eliminado IS NULL')
+      ->orderBy(['creado' => SORT_ASC]);
+  }
+
+  public function getCondicionanteDestino() {
+    return $this->hasMany(CondicionanteDestino::class, ['idCondicionante' => 'id'])
+      ->andWhere('eliminado IS NULL')
+      ->orderBy(['creado' => SORT_ASC]);
+  }
+}

+ 19 - 0
modules/v1/models/CondicionanteCondicionante.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace v1\models;
+
+use app\models\CondicionanteCondicionante as ModelsCondicionanteCondicionante;
+
+class CondicionanteCondicionante extends ModelsCondicionanteCondicionante {
+
+  public function fields() {
+    return [
+      'id',
+      'idCondicionante',
+      'nombre',
+      'creado',
+      'modificado',
+      'eliminado',
+    ];
+  }
+}

+ 27 - 0
modules/v1/models/CondicionanteDestino.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace v1\models;
+
+use app\models\CondicionanteDestino as ModelsCondicionanteDestino;
+
+class CondicionanteDestino extends ModelsCondicionanteDestino {
+    public function fields() {
+        return [
+            'idDestino',
+            'idCondicionante',
+            'creado',
+            'modificado',
+            'eliminado',
+        ];
+    }
+
+    public function extraFields() {
+        return [
+            'destino'
+        ];
+    }
+
+    public function getDestino() {
+        return $this->hasOne(Estado::class, ['id' => 'idDestino']);
+    }
+}

+ 27 - 0
modules/v1/models/CondicionanteFin.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace v1\models;
+
+use app\models\CondicionanteFin as ModelsCondicionanteFin;
+
+class CondicionanteFin extends ModelsCondicionanteFin {
+    public function fields() {
+        return [
+            'idFin',
+            'idCondicionante',
+            'creado',
+            'modificado',
+            'eliminado',
+        ];
+    }
+
+    public function extraFields() {
+        return [
+            'fin'
+        ];
+    }
+
+    public function getFin() {
+        return $this->hasOne(FinMovilizacion::class, ['id' => 'idFin']);
+    }
+}

+ 27 - 0
modules/v1/models/CondicionanteOrigen.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace v1\models;
+
+use app\models\CondicionanteOrigen as ModelsCondicionanteOrigen;
+
+class CondicionanteOrigen extends ModelsCondicionanteOrigen {
+    public function fields() {
+        return [
+            'idOrigen',
+            'idCondicionante',
+            'creado',
+            'modificado',
+            'eliminado',
+        ];
+    }
+
+    public function extraFields() {
+        return [
+            'origen'
+        ];
+    }
+
+    public function getOrigen() {
+        return $this->hasOne(Estado::class, ['id' => 'idOrigen']);
+    }
+}

+ 27 - 0
modules/v1/models/CondicionanteTipo.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace v1\models;
+
+use app\models\CondicionanteTipo as ModelsCondicionanteTipo;
+
+class CondicionanteTipo extends ModelsCondicionanteTipo {
+    public function fields() {
+        return [
+            'idTipo',
+            'idCondicionante',
+            'creado',
+            'modificado',
+            'eliminado',
+        ];
+    }
+
+    public function extraFields() {
+        return [
+            'tipo'
+        ];
+    }
+
+    public function getTipo() {
+        return $this->hasOne(TipoMovilizacion::class, ['id' => 'idTipo']);
+    }
+}