|
@@ -0,0 +1,124 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace v1\controllers;
|
|
|
+
|
|
|
+use app\models\Incidente;
|
|
|
+use app\models\IncidenteEmpleado;
|
|
|
+use common\data\Respuesta;
|
|
|
+use common\rest\AuthController;
|
|
|
+use Yii;
|
|
|
+use yii\db\Expression;
|
|
|
+
|
|
|
+class IncidenteController extends AuthController {
|
|
|
+
|
|
|
+ public $modelClass = "v1\models\Incidente";
|
|
|
+
|
|
|
+ public function actionIndex() {
|
|
|
+ $id = trim($this->req->get("id", ""));
|
|
|
+ $buscar = trim($this->req->get("q", ""));
|
|
|
+ $rangoInicio = trim($this->req->get("inicio", ""));
|
|
|
+ $rangoFin = trim($this->req->get("fin", ""));
|
|
|
+
|
|
|
+ $query = $this->queryInicial;
|
|
|
+
|
|
|
+ if ($id > 0) {
|
|
|
+ $query->andWhere(["id" => $id]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($rangoInicio !== "" && $rangoFin !== "") {
|
|
|
+ $query->andWhere(["between", "[[fechaInicio]]", $rangoInicio, $rangoFin]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($buscar) {
|
|
|
+
|
|
|
+ $query->andWhere([
|
|
|
+ "OR",
|
|
|
+ ["ilike", "nombre", $buscar]
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function actionGuardar() {
|
|
|
+ $id = trim($this->req->getBodyParam("id", ""));
|
|
|
+ $empleados = $this->req->getBodyParam("empleados", []);
|
|
|
+ $modelo = null;
|
|
|
+
|
|
|
+ $transaccion = \Yii::$app->db->beginTransaction();
|
|
|
+ try {
|
|
|
+
|
|
|
+ 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(), '');
|
|
|
+
|
|
|
+
|
|
|
+ $modelo->load($this->req->getBodyParams(), '');
|
|
|
+ if (!$modelo->save()) {
|
|
|
+ return (new Respuesta($modelo))
|
|
|
+ ->mensaje("Hubo un problema al guardar el incidente");
|
|
|
+ }
|
|
|
+
|
|
|
+ IncidenteEmpleado::deleteAll(['idIncidente' => $modelo->id]);
|
|
|
+
|
|
|
+ foreach ($empleados as $empleado) {
|
|
|
+ if (isset($empleado['id']) ) {
|
|
|
+ $incidenteEmpleado = new IncidenteEmpleado();
|
|
|
+ $incidenteEmpleado->uuid();
|
|
|
+ $incidenteEmpleado->idEmpleado = $empleado['id'];
|
|
|
+ $incidenteEmpleado->idIncidente = $modelo->id;
|
|
|
+
|
|
|
+ if (!$incidenteEmpleado->save()) {
|
|
|
+ $transaccion->rollBack();
|
|
|
+ return (new Respuesta($incidenteEmpleado))
|
|
|
+ ->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]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $transaccion->commit();
|
|
|
+ $modelo->refresh();
|
|
|
+ return (new Respuesta($modelo))
|
|
|
+ ->mensaje("Obra ha sido guardado de manera exitosa");
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ $transaccion->rollBack();
|
|
|
+ return (new Respuesta($modelo))
|
|
|
+ ->esError()
|
|
|
+ ->mensaje($e->getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function actionEliminar() {
|
|
|
+ $id = trim($this->req->getBodyParam("id", ""));
|
|
|
+ $modelo = null;
|
|
|
+
|
|
|
+ if ($id !== "") {
|
|
|
+ $modelo = $this->modelClass::findOne(["id" => $id]);
|
|
|
+ }
|
|
|
+ if ($modelo === null) {
|
|
|
+ return (new Respuesta())
|
|
|
+ ->esError()
|
|
|
+ ->mensaje("Incidente no encontrado");
|
|
|
+ }
|
|
|
+ $modelo->eliminado = new Expression('now()');
|
|
|
+ if (!$modelo->save()) {
|
|
|
+ return (new Respuesta($modelo))
|
|
|
+ ->mensaje("No se pudo eliminar el incidente");
|
|
|
+ }
|
|
|
+
|
|
|
+ return (new Respuesta())
|
|
|
+ ->mensaje("Incidente eliminado");
|
|
|
+ }
|
|
|
+}
|