ソースを参照

controladores de guardado en empleados y herramientas

Jogibeda 5 ヶ月 前
コミット
6b7f5f7991
共有3 個のファイルを変更した55 個の追加20 個の削除を含む
  1. 1 18
      modules/v1/controllers/ObraController.php
  2. 14 2
      modules/v1/controllers/ObraEmpleadoController.php
  3. 40 0
      modules/v1/controllers/ObraHerramientaController.php

+ 1 - 18
modules/v1/controllers/ObraController.php

@@ -77,24 +77,7 @@ class ObraController extends AuthController {
           ->mensaje("Hubo un problema al guardar la obra");
       }
 
-      ObraEmpleado::deleteAll(['idObra' => $modelo->id]);
-
-      foreach ($empleados as $empleado) {
-        if (isset($empleado['id']) ) {
-          $obraEmpleado = new ObraEmpleado();
-          $obraEmpleado->uuid();
-          $obraEmpleado->idEmpleado = $empleado['id'];
-          $obraEmpleado->idObra = $modelo->id;
-
-          if (!$obraEmpleado->save()) {
-            $transaccion->rollBack();
-            return (new Respuesta($obraEmpleado))
-              ->mensaje("Hubo un problema al guardar el Empleado con ID {$empleado['id']}");
-          }
-        } else {
-          Yii::error('Falta el id del empleado o está vacío en el array', ['item' => $empleado]);
-        }
-      }
+     
 
       ObraHerramienta::deleteAll(['idObra' => $modelo->id]);
 

+ 14 - 2
modules/v1/controllers/ObraEmpleadoController.php

@@ -35,6 +35,7 @@ class ObraEmpleadoController extends AuthController {
   {
     $id = trim($this->req->getBodyParam("id", ""));
     $modelo = null;
+    $nombre = $this->req->getBodyParam("idEmpleado", "");
 
     if ($id !== "") {
       $modelo = $this->modelClass::findOne($id);
@@ -49,10 +50,21 @@ class ObraEmpleadoController extends AuthController {
     $modelo->load($this->req->getBodyParams(), '');
 
    
-    $modelo->load($this->req->getBodyParams(), '');
+    $registroExistente = $this->modelClass::find()
+    ->where(['idEmpleado' => $nombre])
+    ->andWhere(['!=', 'id', $id]) 
+    ->andWhere(['eliminado'=>null])// Excluir el registro actual en caso de edición
+    ->one();    
+    
+    if ($registroExistente !== null) {
+      return (new Respuesta($modelo))
+         ->esError()
+          ->mensaje("El Empleado ya existe. Por favor, ingrese un Empleado diferente.");
+  }
+
     if (!$modelo->save()) {
       return (new Respuesta($modelo))
-        ->mensaje("Hubo un problema al guardar el Gasto");
+        ->mensaje("Hubo un problema al guardar el Empleado");
     }
 
     $modelo->refresh();

+ 40 - 0
modules/v1/controllers/ObraHerramientaController.php

@@ -31,6 +31,46 @@ class ObraHerramientaController extends AuthController {
 
     return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
   }
+  public function actionGuardar()
+  {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $modelo = null;
+    $nombre = $this->req->getBodyParam("idHerramienta", "");
+
+    if ($id !== "") {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    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(), '');
+    
+    $registroExistente = $this->modelClass::find()
+    ->where(['idHerramienta' => $nombre])
+    ->andWhere(['!=', 'id', $id]) 
+    ->andWhere(['eliminado'=>null])// Excluir el registro actual en caso de edición
+    ->one();    
+    
+    if ($registroExistente !== null) {
+      return (new Respuesta($modelo))
+         ->esError()
+          ->mensaje("La Herramienta ya existe. Por favor, ingrese una Herramienta diferente.");
+  }
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar el Gasto");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Gasto guardado");
+  }
 
   public function actionEliminar() {
     $id = trim($this->req->getBodyParam("id", ""));