Pārlūkot izejas kodu

Actualizar 'README.md'

raguilar 1 gadu atpakaļ
vecāks
revīzija
60b64780fa
1 mainītis faili ar 96 papildinājumiem un 0 dzēšanām
  1. 96 0
      README.md

+ 96 - 0
README.md

@@ -312,6 +312,102 @@ Para crear el controlador, copiar el archivo de un catálogo y renombrar el arch
 Utilizar una plantilla previa del controlador y remplazar el catalogo con el cual se necesita interactuar.
 ![Texto Alternativo](Images/creacion_controlador.png")
 
+
+**Ejemplo Código Controlador Producto.**
+
+<br> **archivo:ProductoController.php**
+
+```php
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\models\Usuario;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class ProductoController extends AuthController {
+
+  public $modelClass = "v1\models\Producto";
+
+  public function actionIndex() {
+    $id = intval($this->req->get("id", ""));
+    $q = trim($this->req->get("q", ""));
+
+    $query = $this->queryInicial;
+
+    if($this->usuario->TIPO == Usuario::TIPO_USUARIO){
+      $query->andWhere(["{{Producto}}.id" => $this->usuario->idProducto]);
+    }
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    if($q) {
+      # Ejemplo de buscador
+      $query->andWhere([
+        "OR",
+        ["ilike", "nombre", $q],
+        ["ilike", "clave", $q],
+      ]);
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar() {
+    $id = intval($this->req->getBodyParam("id", null));
+    $user = \Yii::$app->getUser()->getId();
+    $modelo = null;
+
+    if($id > 0) {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->creado = new Expression('now()');
+      $modelo->idUsuarioCreador = $user;
+    } 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 Producto");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Producto guardada");
+  }
+
+  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("Producto no encontrada");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar la Producto");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Producto eliminada");
+  }
+}
+```
+
 ### TODO
 
 Lista de tareas pendientes o mejoras planificadas para el proyecto.