浏览代码

controladores

Luis Hernandez 3 年之前
父节点
当前提交
13f1bf8603

+ 4 - 1
config/web.php

@@ -53,7 +53,10 @@ $config = [
           'class' => 'common\rest\UrlRule',
           'controller' => [
             'v1/default',
-            'v1/producto',
+            'v1/dependencia',
+            'v1/evento',
+            'v1/grupo',
+            'v1/resultado',
           ],
         ]
       ],

+ 51 - 34
migrations/m230127_213733_tablas_eventos.php

@@ -5,38 +5,55 @@ use yii\db\Migration;
 /**
  * Class m230127_213733_tablas_eventos
  */
-class m230127_213733_tablas_eventos extends Migration
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function safeUp()
-    {
-
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function safeDown()
-    {
-        echo "m230127_213733_tablas_eventos cannot be reverted.\n";
-
-        return false;
-    }
-
-    /*
-    // Use up()/down() to run migration code without a transaction.
-    public function up()
-    {
-
-    }
-
-    public function down()
-    {
-        echo "m230127_213733_tablas_eventos cannot be reverted.\n";
-
-        return false;
-    }
-    */
+class m230127_213733_tablas_eventos extends Migration {
+	/**
+	 * {@inheritdoc}
+	 */
+	public function safeUp() {
+
+		$this->createTable('Evento', [
+      "id" => $this->primaryKey(),
+      "idGrupo" => $this->integer(),
+      "nombre" => $this->string(100)->notNull(),
+      "descripcion" => $this->string(255),
+      "fotoEvento" => $this->text(255),
+      "tag" => $this->string(50)->unique(),
+      "url" => $this->string(155)->notNull(),
+      "fechaInicio" => $this->timestamp() . " with time zone",
+      "fechaFinal" => $this->timestamp() . " with time zone",
+      "creado" => $this->timestamp() . " with time zone",
+      "modificado" => $this->timestamp() . " with time zone",
+      "eliminado" => $this->timestamp() . " with time zone",
+    ]);
+
+		$this->createTable('Resultado', [
+      "id" => $this->primaryKey(),
+      "idUsuario" => $this->integer(),
+      "idEvento" => $this->integer(),
+      "accion" => $this->string(20)->comment("ver,likes,compartir"),
+			"creado" => $this->timestamp() . " with time zone",
+      "modificado" => $this->timestamp() . " with time zone",
+      "eliminado" => $this->timestamp() . " with time zone",
+    ]);
+
+		$this->addForeignKey('EventoIdGrupoFK', 'Evento', 'idGrupo', 'Grupo', 'id');
+		$this->addForeignKey('ResultadoIdUsuarioFK', 'Resultado', 'idUsuario', 'Usuario', 'id');
+		$this->addForeignKey('ResultadoIdEventoFK', 'Resultado', 'idEvento', 'Evento', 'id');
+
+
+	}
+
+	/**
+	 * {@inheritdoc}
+	 */
+	public function safeDown() {
+
+		$this->dropForeignKey("ResultadoIdEventoFK", "Resultado");
+		$this->dropForeignKey("ResultadoIdUsuarioFK", "Resultado");
+		$this->dropForeignKey("EventoIdGrupoFK", "Evento");
+
+    $this->dropTable('Resultado');
+    $this->dropTable('Evento');
+
+	}
 }

+ 90 - 0
models/Evento.php

@@ -0,0 +1,90 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "Evento".
+ *
+ * @property int $id
+ * @property int|null $idGrupo
+ * @property string $nombre
+ * @property string|null $descripcion
+ * @property string|null $fotoEvento
+ * @property string|null $tag
+ * @property string $url
+ * @property string|null $fechaInicio
+ * @property string|null $fechaFinal
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Grupo $grupo
+ * @property Resultado[] $resultados
+ */
+class Evento extends \yii\db\ActiveRecord {
+	/**
+	 * {@inheritdoc}
+	 */
+	public static function tableName() {
+		return 'Evento';
+	}
+
+	/**
+	 * {@inheritdoc}
+	 */
+	public function rules() {
+		return [
+			[['idGrupo'], 'default', 'value' => null],
+			[['idGrupo'], 'integer'],
+			[['nombre', 'url'], 'required'],
+			[['fotoEvento'], 'string'],
+			[['fechaInicio', 'fechaFinal', 'creado', 'modificado', 'eliminado'], 'safe'],
+			[['nombre'], 'string', 'max' => 100],
+			[['descripcion'], 'string', 'max' => 255],
+			[['tag'], 'string', 'max' => 50],
+			[['url'], 'string', 'max' => 155],
+			[['tag'], 'unique'],
+			[['idGrupo'], 'exist', 'skipOnError' => true, 'targetClass' => Grupo::className(), 'targetAttribute' => ['idGrupo' => 'id']],
+		];
+	}
+
+	/**
+	 * {@inheritdoc}
+	 */
+	public function attributeLabels() {
+		return [
+			'id' => 'ID',
+			'idGrupo' => 'Id Grupo',
+			'nombre' => 'Nombre',
+			'descripcion' => 'Descripcion',
+			'fotoEvento' => 'Foto Evento',
+			'tag' => 'Tag',
+			'url' => 'Url',
+			'fechaInicio' => 'Fecha Inicio',
+			'fechaFinal' => 'Fecha Final',
+			'creado' => 'Creado',
+			'modificado' => 'Modificado',
+			'eliminado' => 'Eliminado',
+		];
+	}
+
+	/**
+	 * Gets query for [[grupo]].
+	 *
+	 * @return \yii\db\ActiveQuery
+	 */
+	public function getGrupo() {
+		return $this->hasOne(Grupo::className(), ['id' => 'idGrupo']);
+	}
+
+	/**
+	 * Gets query for [[resultados]].
+	 *
+	 * @return \yii\db\ActiveQuery
+	 */
+	public function getResultados() {
+		return $this->hasMany(Resultado::className(), ['idEvento' => 'id']);
+	}
+}

+ 10 - 0
models/Grupo.php

@@ -14,6 +14,7 @@ use Yii;
  * @property string|null $modificado
  * @property string|null $eliminado
  *
+ * @property Evento[] $eventos
  * @property Usuario[] $usuarios
  * @property UsuarioGrupo[] $usuariosGrupos
  */
@@ -52,6 +53,15 @@ class Grupo extends \yii\db\ActiveRecord {
 	}
 
 	/**
+	 * Gets query for [[eventos]].
+	 *
+	 * @return \yii\db\ActiveQuery
+	 */
+	public function getEventos() {
+		return $this->hasMany(Evento::className(), ['idGrupo' => 'id']);
+	}
+
+	/**
 	 * Gets query for [[usuarios]].
 	 *
 	 * @return \yii\db\ActiveQuery

+ 75 - 0
models/Resultado.php

@@ -0,0 +1,75 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "Resultado".
+ *
+ * @property int $id
+ * @property int|null $idUsuario
+ * @property int|null $idEvento
+ * @property string|null $accion ver,likes,compartir
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Evento $idEvento0
+ * @property Usuario $idUsuario0
+ */
+class Resultado extends \yii\db\ActiveRecord {
+	/**
+	 * {@inheritdoc}
+	 */
+	public static function tableName() {
+		return 'Resultado';
+	}
+
+	/**
+	 * {@inheritdoc}
+	 */
+	public function rules() {
+		return [
+			[['idUsuario', 'idEvento'], 'default', 'value' => null],
+			[['idUsuario', 'idEvento'], 'integer'],
+			[['creado', 'modificado', 'eliminado'], 'safe'],
+			[['accion'], 'string', 'max' => 20],
+			[['idEvento'], 'exist', 'skipOnError' => true, 'targetClass' => Evento::className(), 'targetAttribute' => ['idEvento' => 'id']],
+			[['idUsuario'], 'exist', 'skipOnError' => true, 'targetClass' => Usuario::className(), 'targetAttribute' => ['idUsuario' => 'id']],
+		];
+	}
+
+	/**
+	 * {@inheritdoc}
+	 */
+	public function attributeLabels() {
+		return [
+			'id' => 'ID',
+			'idUsuario' => 'Id Usuario',
+			'idEvento' => 'Id Evento',
+			'accion' => 'Accion',
+			'creado' => 'Creado',
+			'modificado' => 'Modificado',
+			'eliminado' => 'Eliminado',
+		];
+	}
+
+	/**
+	 * Gets query for [[evento]].
+	 *
+	 * @return \yii\db\ActiveQuery
+	 */
+	public function getEvento() {
+		return $this->hasOne(Evento::className(), ['id' => 'idEvento']);
+	}
+
+	/**
+	 * Gets query for [[usuario]].
+	 *
+	 * @return \yii\db\ActiveQuery
+	 */
+	public function getUsuario() {
+		return $this->hasOne(Usuario::className(), ['id' => 'idUsuario']);
+	}
+}

+ 85 - 0
modules/v1/controllers/DependenciaController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class DependenciaController extends AuthController {
+
+  public $modelClass = "v1\models\Dependencia";
+  public $modelName = "Dependencia";
+
+  public function actionIndex() {
+    $id = intval($this->req->get("id", ""));
+    $q = trim($this->req->get("q", ""));
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    if($q !== "") {
+      /*# Ejemplo de buscador
+      $query->andWhere([
+        "OR",
+        ["ilike", "nombre", $q],
+        ["ilike", "direccion", $q],
+      ]);
+      // */
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->creado = new Expression('now()');
+      $modelo->idUsuarioCreador = $this->usuario->id;
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar la {$this->modelName}");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("{$this->modelName} guardada correctamente");
+  }
+
+  public function actionEliminar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne(["id" => $id]);
+    }
+    if($modelo === null) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("{$this->modelName} no encontrada");
+    }
+    $modelo->eliminado = null;
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar la {$this->modelName}");
+    }
+
+    return (new Respuesta())
+      ->mensaje("{$this->modelName} eliminada");
+  }
+
+}

+ 85 - 0
modules/v1/controllers/EventoController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class EventoController extends AuthController {
+
+  public $modelClass = "v1\models\Evento";
+  public $modelName = "Evento";
+
+  public function actionIndex() {
+    $id = intval($this->req->get("id", ""));
+    $q = trim($this->req->get("q", ""));
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    if($q !== "") {
+      /*# Ejemplo de buscador
+      $query->andWhere([
+        "OR",
+        ["ilike", "nombre", $q],
+        ["ilike", "direccion", $q],
+      ]);
+      // */
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->creado = new Expression('now()');
+      $modelo->idUsuarioCreador = $this->usuario->id;
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar el {$this->modelName}");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("{$this->modelName} guardado correctamente");
+  }
+
+  public function actionEliminar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne(["id" => $id]);
+    }
+    if($modelo === null) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("{$this->modelName} no encontrado");
+    }
+    $modelo->eliminado = null;
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar el {$this->modelName}");
+    }
+
+    return (new Respuesta())
+      ->mensaje("{$this->modelName} eliminado");
+  }
+
+}

+ 85 - 0
modules/v1/controllers/GrupoController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class GrupoController extends AuthController {
+
+  public $modelClass = "v1\models\Grupo";
+  public $modelName = "Grupo";
+
+  public function actionIndex() {
+    $id = intval($this->req->get("id", ""));
+    $q = trim($this->req->get("q", ""));
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    if($q !== "") {
+      /*# Ejemplo de buscador
+      $query->andWhere([
+        "OR",
+        ["ilike", "nombre", $q],
+        ["ilike", "direccion", $q],
+      ]);
+      // */
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->creado = new Expression('now()');
+      $modelo->idUsuarioCreador = $this->usuario->id;
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar el {$this->modelName}");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("{$this->modelName} guardado correctamente");
+  }
+
+  public function actionEliminar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne(["id" => $id]);
+    }
+    if($modelo === null) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("{$this->modelName} no encontrado");
+    }
+    $modelo->eliminado = null;
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar el {$this->modelName}");
+    }
+
+    return (new Respuesta())
+      ->mensaje("{$this->modelName} eliminado");
+  }
+
+}

+ 85 - 0
modules/v1/controllers/ResultadoController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class ResultadoController extends AuthController {
+
+  public $modelClass = "v1\models\Resultado";
+  public $modelName = "Resultado";
+
+  public function actionIndex() {
+    $id = intval($this->req->get("id", ""));
+    $q = trim($this->req->get("q", ""));
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    if($q !== "") {
+      /*# Ejemplo de buscador
+      $query->andWhere([
+        "OR",
+        ["ilike", "nombre", $q],
+        ["ilike", "direccion", $q],
+      ]);
+      // */
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->creado = new Expression('now()');
+      $modelo->idUsuarioCreador = $this->usuario->id;
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar el {$this->modelName}");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("{$this->modelName} guardado correctamente");
+  }
+
+  public function actionEliminar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne(["id" => $id]);
+    }
+    if($modelo === null) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("{$this->modelName} no encontrado");
+    }
+    $modelo->eliminado = null;
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar el {$this->modelName}");
+    }
+
+    return (new Respuesta())
+      ->mensaje("{$this->modelName} eliminado");
+  }
+
+}

+ 42 - 0
modules/v1/models/Evento.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Evento as ModeloEvento;
+
+class Evento extends ModeloEvento {
+
+  public function fields() {
+    return [
+      'id',
+			'idGrupo',
+			'nombre',
+			'descripcion',
+			'fotoEvento',
+			'tag',
+			'url',
+			'fechaInicio',
+			'fechaFinal',
+			'creado',
+			'modificado',
+			'eliminado',
+    ];
+  }
+
+  public function extraFields() {
+    return [
+      'grupo',
+      'resultados',
+    ];
+  }
+
+	public function getGrupo() {
+		return $this->hasOne(Grupo::className(), ['id' => 'idGrupo']);
+	}
+
+
+	public function getResultados() {
+		return $this->hasMany(Resultado::className(), ['idEvento' => 'id']);
+	}
+
+}

+ 5 - 0
modules/v1/models/Grupo.php

@@ -19,11 +19,16 @@ class Grupo extends ModeloGrupo {
 
   public function extraFields() {
     return [
+      'eventos',
       'usuarios',
       'usuariosGrupos',
     ];
   }
 
+  public function getEventos() {
+		return $this->hasMany(Evento::className(), ['idGrupo' => 'id']);
+	}
+
   public function getUsuarios() {
 		return $this->hasMany(Usuario::className(), ['id' => 'idUsuario'])->viaTable('UsuarioGrupo', ['idGrupo' => 'id']);
 	}

+ 36 - 0
modules/v1/models/Resultado.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Resultado as ModeloResultado;
+
+class Resultado extends ModeloResultado {
+
+  public function fields() {
+    return [
+			'id',
+			'idUsuario',
+			'idEvento',
+			'accion',
+			'creado',
+			'modificado',
+			'eliminado',
+    ];
+  }
+
+  public function extraFields() {
+    return [
+      'evento',
+      'usuario',
+    ];
+  }
+
+	public function getEvento() {
+		return $this->hasOne(Evento::className(), ['id' => 'idEvento']);
+	}
+
+	public function getUsuario() {
+		return $this->hasOne(Usuario::className(), ['id' => 'idUsuario']);
+	}
+
+}