Explorar el Código

end-points creados

Student_Raso hace 3 años
padre
commit
fd987af14f

+ 3 - 3
config/db.php

@@ -2,9 +2,9 @@
 
 return [
     'class' => 'yii\db\Connection',
-    'dsn' => 'pgsql:host=172.17.0.2;dbname=cafe',
-    'username' => 'cafe',
-    'password' => 'cafe',
+    'dsn' => 'pgsql:host=localhost;dbname=yager',
+    'username' => 'yager',
+    'password' => 'yager',
     'charset' => 'utf8',
     // Schema cache options (for production environment)
     //'enableSchemaCache' => true,

+ 4 - 1
config/web.php

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

+ 47 - 0
migrations/m220310_234138_inicio.php

@@ -17,15 +17,62 @@ class m220310_234138_inicio extends Migration {
       "uid" => $this->string(50)->unique(),
       "correo" => $this->string(100)->notNull(),
       "nombre" => $this->string(100)->notNull(),
+      "idRol" => $this->integer(),
+      "genero" => $this->string(100),
+      "facebook" => $this->string(100),
+      "facebookVerificado" => $this->boolean(),
+      "twitter" => $this->string(100),
+      "twitterVerificado" => $this->boolean(),
+      "instagram" => $this->string(100),
+      "instagramVerificado" => $this->boolean(),
+      "creado" => $this->timestamp(),
+      "modificado" => $this->timestamp(),
+      "eliminado" => $this->timestamp(),
     ]);
 
+    $this->createTable('Grupo', [
+      "id" => $this->primaryKey(),
+      "nombre" => $this->string(),
+      "estatus" => $this->boolean(),
+      "descripcion" => $this->string(500),
+      "ciudad" => $this->string(500),
+      "creado" => $this->timestamp(),
+      "modificado" => $this->timestamp(),
+      "eliminado" => $this->timestamp(),
+    ]);
+
+    $this->createTable('GruposUsuario', [
+      "id" => $this->primaryKey(),
+      "idUsuario" => $this->integer(),
+      "idGrupo" => $this->integer(),
+      "creado" => $this->timestamp(),
+      "modificado" => $this->timestamp(),
+      "eliminado" => $this->timestamp(),
+    ]);
+
+    $this->createTable('Rol', [
+      "id" => $this->primaryKey(),
+      "nombre" => $this->string(),
+      "creado" => $this->timestamp(),
+      "modificado" => $this->timestamp(),
+      "eliminado" => $this->timestamp(),
+    ]);
+
+    $this->addForeignKey("UsuarioRolFK", "Usuario", "idRol", "Rol", "id");
+
   }
 
   /**
    * {@inheritdoc}
    */
   public function safeDown() {
+
+    $this->dropForeignKey("UsuarioRolFK", "Usuario");
+
     $this->dropTable('Usuario');
+    $this->dropTable('Grupo');
+    $this->dropTable('GruposUsuario');
+    $this->dropTable('Rol');
   }
 
 }

+ 54 - 0
models/Grupo.php

@@ -0,0 +1,54 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "Grupo".
+ *
+ * @property int $id
+ * @property string|null $nombre
+ * @property bool|null $estatus
+ * @property string|null $descripcion
+ * @property string|null $ciudad
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ */
+class Grupo extends \yii\db\ActiveRecord {
+  /**
+   * {@inheritdoc}
+   */
+  public static function tableName() {
+    return 'Grupo';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rules() {
+    return [
+      [['estatus'], 'boolean'],
+      [['creado', 'modificado', 'eliminado'], 'safe'],
+      [['nombre'], 'string', 'max' => 255],
+      [['descripcion', 'ciudad'], 'string', 'max' => 500],
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function attributeLabels() {
+    return [
+      'id' => 'ID',
+      'nombre' => 'Nombre',
+      'estatus' => 'Estatus',
+      'descripcion' => 'Descripción',
+      'ciudad' => 'Ciudad',
+      'creado' => 'Creado',
+      'modificado' => 'Modificado',
+      'eliminado' => 'Eliminado',
+    ];
+  }
+}

+ 49 - 0
models/GruposUsuario.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "GruposUsuario".
+ *
+ * @property int $id
+ * @property int|null $idUsuario
+ * @property int|null $idGrupo
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ */
+class GruposUsuario extends \yii\db\ActiveRecord {
+  /**
+   * {@inheritdoc}
+   */
+  public static function tableName() {
+    return 'GruposUsuario';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rules() {
+    return [
+      [['idUsuario', 'idGrupo'], 'default', 'value' => null],
+      [['idUsuario', 'idGrupo'], 'integer'],
+      [['creado', 'modificado', 'eliminado'], 'safe'],
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function attributeLabels() {
+    return [
+      'id' => 'ID',
+      'idUsuario' => 'Id Usuario',
+      'idGrupo' => 'Id Grupo',
+      'creado' => 'Creado',
+      'modificado' => 'Modificado',
+      'eliminado' => 'Eliminado',
+    ];
+  }
+}

+ 57 - 0
models/Rol.php

@@ -0,0 +1,57 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "Rol".
+ *
+ * @property int $id
+ * @property string|null $nombre
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ *
+ * @property Usuario[] $usuarios
+ */
+class Rol extends \yii\db\ActiveRecord {
+  /**
+   * {@inheritdoc}
+   */
+  public static function tableName() {
+    return 'Rol';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function rules() {
+    return [
+      [['creado', 'modificado', 'eliminado'], 'safe'],
+      [['nombre'], 'string', 'max' => 255],
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function attributeLabels() {
+    return [
+      'id' => 'ID',
+      'nombre' => 'Nombre',
+      'creado' => 'Creado',
+      'modificado' => 'Modificado',
+      'eliminado' => 'Eliminado',
+    ];
+  }
+
+  /**
+   * Gets query for [[Usuarios]].
+   *
+   * @return \yii\db\ActiveQuery
+   */
+  public function getUsuarios() {
+    return $this->hasMany(Usuario::className(), ['idRol' => 'id']);
+  }
+}

+ 43 - 14
models/Usuario.php

@@ -8,12 +8,22 @@ use Yii;
  * This is the model class for table "Usuario".
  *
  * @property int $id
- * @property string $rfc
+ * @property string|null $uid
  * @property string $correo
- * @property string $clave
  * @property string $nombre
- * @property string $apellidoPaterno
- * @property int|null $estatus 0:inactivo, 1:activo
+ * @property int|null $idRol
+ * @property string|null $genero
+ * @property string|null $facebook
+ * @property bool|null $facebookVerificado
+ * @property string|null $twitter
+ * @property bool|null $twitterVerificado
+ * @property string|null $instagram
+ * @property bool|null $instagramVerificado
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ * 
+ * @property Rol $rol
  */
 class Usuario extends \yii\db\ActiveRecord {
 
@@ -32,11 +42,15 @@ class Usuario extends \yii\db\ActiveRecord {
    */
   public function rules() {
     return [
-      [['rfc', 'correo', 'clave', 'nombre', 'apellidoPaterno'], 'required'],
-      [['estatus'], 'default', 'value' => null],
-      [['estatus'], 'integer'],
-      [['rfc'], 'string', 'max' => 13],
-      [['correo', 'clave', 'nombre', 'apellidoPaterno'], 'string', 'max' => 100],
+      [['correo', 'nombre'], 'required'],
+      [['idRol'], 'default', 'value' => null],
+      [['idRol'], 'integer'],
+      [['facebookVerificado', 'twitterVerificado', 'instagramVerificado'], 'boolean'],
+      [['creado', 'modificado', 'eliminado'], 'safe'],
+      [['uid'], 'string', 'max' => 50],
+      [['correo', 'nombre', 'genero', 'facebook', 'twitter', 'instagram'], 'string', 'max' => 100],
+      [['uid'], 'unique'],
+      [['idRol'], 'exist', 'skipOnError' => true, 'targetClass' => Rol::className(), 'targetAttribute' => ['idRol' => 'id']],
     ];
   }
 
@@ -46,13 +60,20 @@ class Usuario extends \yii\db\ActiveRecord {
   public function attributeLabels() {
     return [
       'id' => 'ID',
-      'rfc' => 'Rfc',
+      'uid' => 'Uid',
       'correo' => 'Correo',
-      'clave' => 'Clave',
       'nombre' => 'Nombre',
-      'apellidoPaterno' => 'Apellido Paterno',
-      'apellidoMaterno' => 'Apellido Materno',
-      'estatus' => 'Estatus',
+      'idRol' => 'Id Rol',
+      'genero' => 'Genero',
+      'facebook' => 'Facebook',
+      'facebookVerificado' => 'Facebook Verificado',
+      'twitter' => 'Twitter',
+      'twitterVerificado' => 'Twitter Verificado',
+      'instagram' => 'Instagram',
+      'instagramVerificado' => 'Instagram Verificado',
+      'creado' => 'Creado',
+      'modificado' => 'Modificado',
+      'eliminado' => 'Eliminado',
     ];
   }
 
@@ -64,4 +85,12 @@ class Usuario extends \yii\db\ActiveRecord {
     return Yii::$app->getSecurity()->validatePassword($pwd, $this->clave);
   }
 
+  /**
+   * Gets query for [[rol]].
+   *
+   * @return \yii\db\ActiveQuery
+   */
+  public function geRol() {
+    return $this->hasOne(Rol::className(), ['id' => 'idRol']);
+  }
 }

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

@@ -0,0 +1,71 @@
+<?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 function actionIndex() {
+    $id = intval($this->req->get("id", ""));
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    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()');
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar Grupo");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Grupo guardado");
+  }
+
+  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("Grupo no encontrado");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar Grupo");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Grupo eliminado");
+  }
+}

+ 71 - 0
modules/v1/controllers/GruposUsuarioController.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class GruposUsuarioController extends AuthController {
+  
+  public $modelClass = "v1\models\GruposUsuario";
+
+  public function actionIndex() {
+    $id = intval($this->req->get("id", ""));
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    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()');
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar GruposUsuario");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("GruposUsuario guardado");
+  }
+
+  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("GruposUsuario no encontrado");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar GruposUsuario");
+    }
+
+    return (new Respuesta())
+      ->mensaje("GruposUsuario eliminado");
+  }
+}

+ 71 - 0
modules/v1/controllers/RolController.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class RolController extends AuthController {
+  
+  public $modelClass = "v1\models\Rol";
+
+  public function actionIndex() {
+    $id = intval($this->req->get("id", ""));
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    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()');
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar Rol");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Rol guardado");
+  }
+
+  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("Rol no encontrado");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar Rol");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Rol eliminado");
+  }
+}

+ 76 - 0
modules/v1/controllers/UsuarioController.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class UsuarioController extends AuthController {
+  
+  public $modelClass = "v1\models\Usuario";
+
+  public function actionIndex() {
+    $id = intval($this->req->get("id", ""));
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    //TODO: Cambiar nombre de valor a pwd en el front-end
+    $clave = trim($this->req->getBodyParam("pwd", ''));
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->creado = new Expression('now()');
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+    
+    $modelo->load($this->req->getBodyParams(), '');
+    if($clave!==''){
+      $modelo->agregarClave($clave);
+    }
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar usuario");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("usuario guardado");
+  }
+
+  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("Usuario no encontrado");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar Usuario");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Usuario eliminado");
+  }
+}

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

@@ -0,0 +1,19 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Grupo as ModeloGrupo;
+
+class Grupo extends ModeloGrupo {
+
+  public function fields() {
+    return [
+      'id',
+      'nombre',
+      'estatus',
+      'descripcion',
+      'ciudad',
+    ];
+  }
+
+}

+ 17 - 0
modules/v1/models/GruposUsuario.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace v1\models;
+
+use app\models\GruposUsuario as ModeloGruposUsuario;
+
+class GruposUsuario extends ModeloGruposUsuario {
+
+  public function fields() {
+    return [
+      'id',
+      'idUsuario',
+      'idGrupo'
+    ];
+  }
+
+}

+ 26 - 0
modules/v1/models/Rol.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Rol as ModeloRol;
+
+class Rol extends ModeloRol {
+
+  public function fields() {
+    return [
+      'id',
+      'nombre',
+    ];
+  }
+
+  public function extraFields() {
+    return [
+      'usuarios'
+    ];
+  }
+
+  public function getUsuarios() {
+    return $this->hasMany(Usuario::className(), ['idRol' => 'id']);
+  }
+
+}

+ 37 - 0
modules/v1/models/Usuario.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Usuario as ModeloUsuario;
+
+class Usuario extends ModeloUsuario {
+
+  public function fields() {
+
+    return [
+      'id',
+      'uid',
+      'correo',
+      'nombre',
+      'idRol',
+      'genero',
+      'facebook',
+      'facebookVerificado',
+      'twitter',
+      'twitterVerificado',
+      'instagram',
+      'instagramVerificado'
+    ];
+  }
+
+  public function extraFields() {
+    return [
+      'rol'
+    ];
+  }
+
+  public function geRol() {
+    return $this->hasOne(Rol::className(), ['id' => 'idRol']);
+  }
+
+}