From e29e77703d9a832ded54d06a2ccd21fca961ea48 Mon Sep 17 00:00:00 2001 From: amazuecos Date: Sat, 5 Apr 2025 09:40:18 +0200 Subject: [PATCH] orden trabajo files methods --- ci4/app/Services/ProductionService.php | 44 ++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/ci4/app/Services/ProductionService.php b/ci4/app/Services/ProductionService.php index 08b2abd5..fe6568ee 100644 --- a/ci4/app/Services/ProductionService.php +++ b/ci4/app/Services/ProductionService.php @@ -143,6 +143,7 @@ class ProductionService extends BaseService ]; $id = $this->otModel->insert($data); $this->init($id); + $this->updatePedidoEspera(); $this->storeOrdenTrabajoUsers(); $this->storeOrdenTrabajoDates(); $this->storeAllTareas(); @@ -933,36 +934,65 @@ class ProductionService extends BaseService return $this->otTarea->where('orden_trabajo_id', $ot_id)->where('is_corte', true)?->first()->tipo_corte ?? null; } - public function getOtFiles() : array + public function getOtFiles(): array { $otFiles = $this->ot->files(); return $otFiles; } public function storeOtFiles(array $uploadFiles): array - { + { $otFileEntities = []; foreach ($uploadFiles as $uploadFile) { $otFileEntities[] = $this->storeOtFile($uploadFile); } return $otFileEntities; } - protected function storeOtFile(UploadedFile $file) : ?OrdenTrabajoFileEntity + protected function storeOtFile(UploadedFile $file): ?OrdenTrabajoFileEntity { $result = null; - if($this->ot){ + if ($this->ot) { if ($file->isValid() && !$file->hasMoved()) { - $fullpath = $file->store('orden_trabajo/'.$this->ot->id); + $fullpath = $file->store('orden_trabajo/' . $this->ot->id); $ot_file_id = $this->otFileModel->insert([ "orden_trabajo_id" => $this->ot->id, "name" => $file->getClientName(), - "file_path" => WRITEPATH.'uploads/'.$fullpath, + "file_path" => WRITEPATH . 'uploads/' . $fullpath, "upload_by" => auth()->user()->id ]); $result = $this->otFileModel->find($ot_file_id); } return $result; - }else{ + } else { throw new Exception('No se ha especificado una orden de trabajo. Usa $this->producctionService->init($orden_trabajo_id)'); } } + public function deleteOtFiles(?array $existingFiles): bool + { + helper('filesystem'); + if ($this->ot) { + $otFiles = $this->ot->files(); + + foreach ($otFiles as $key => $file) { + $file_path = $file->file_path; + if ($existingFiles) { + if (!in_array($file->name, $existingFiles)) { + $this->otFileModel->delete($file->id); + unlink($file_path); + } + } + } + return true; + } else { + throw new Exception('No se ha especificado una orden de trabajo. Usa $this->producctionService->init($orden_trabajo_id)'); + } + } + protected function updatePedidoEspera(): bool + { + $status = false; + $presupuestoFiles = $this->presupuesto->files(); + if (count($presupuestoFiles) == 0) { + $status = $this->otModel->update($this->ot->id, ['pedido_espera' => true]); + } + return $status; + } }