Przeglądaj źródła

Agregado el campo de clave en obra, como su funcionamiento

Jogibeda 8 miesięcy temu
rodzic
commit
22746469e4

+ 50 - 0
migrations/m240816_231235_obras_clave_unique.php

@@ -0,0 +1,50 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m240816_231235_obras_clave_unique
+ */
+class m240816_231235_obras_clave_unique extends Migration
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $this->addColumn('Obra', 'clave', $this->string());
+        $this->createIndex(
+            'id-claveObra-unique',
+            'Obra',
+            'clave',
+            true 
+        );
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        $this->dropIndex(
+            'id-claveObra-unique',
+            'Obra'
+        );
+        $this->dropColumn('Obra', 'clave');
+    }
+
+    /*
+    // Use up()/down() to run migration code without a transaction.
+    public function up()
+    {
+
+    }
+
+    public function down()
+    {
+        echo "m240816_231235_obras_clave_unique cannot be reverted.\n";
+
+        return false;
+    }
+    */
+}

+ 3 - 1
models/Obra.php

@@ -8,6 +8,7 @@ use Yii;
  * This is the model class for table "Obra".
  *
  * @property string $id
+ * @property string $clave
  * @property string $nombre
  * @property string $fechaInicio
  * @property string $fechaFinal
@@ -35,7 +36,7 @@ class Obra extends ModeloBase
             [['id', 'nombre', 'fechaInicio','fechaFinal'], 'required'],
             [['fechaInicio','fechaFinal','creado', 'modificado', 'eliminado'], 'safe'],
             [['id'], 'string', 'max' => 36],
-            [['nombre', 'descripcion'], 'string', 'max' => 100],
+            [['nombre', 'descripcion','clave'], 'string', 'max' => 100],
             [['id'], 'unique'],
         ];
     }
@@ -47,6 +48,7 @@ class Obra extends ModeloBase
     {
         return [
             'id' => 'ID',
+            'clave'=>'Clave',
             'nombre' => 'Nombre',
             'fechaInicio' => 'Fecha Inicio',
             'fechaFinal' => 'Fecha Final',

+ 9 - 0
modules/v1/controllers/ObraController.php

@@ -55,7 +55,16 @@ class ObraController extends AuthController {
     } else {
       $modelo->modificado = new Expression('now()');
     }
+    $modelo->load($this->req->getBodyParams(), '');
+
+    $clave = $modelo->clave;  
+    $existeClave = $this->modelClass::find()->where(['clave' => $clave])->andWhere(['<>', 'id', $id])->exists();
 
+    if ($existeClave) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("La clave '$clave' ya existe. Por favor, ingresa una clave diferente.");
+    }
     $modelo->load($this->req->getBodyParams(), '');
     if (!$modelo->save()) {
       return (new Respuesta($modelo))

+ 1 - 0
modules/v1/models/Obra.php

@@ -9,6 +9,7 @@ class Obra extends ModeloObra {
   public function fields() {
     return [
       'id',
+      'clave',
       'nombre',
       'fechaInicio',
       'fechaFinal',