From 8b04eb262f58c4f4ad3edb835877d9b6da7d7e0c Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Wed, 12 Mar 2025 18:31:21 -0300 Subject: [PATCH] FIX: Editar datos Broker --- .../views/proyectos/brokers.blade.php | 15 ++++++++++++++- .../proyectos/brokers/edit_modal.blade.php | 4 +++- app/src/Controller/API/Proyectos/Brokers.php | 3 ++- app/src/Service/Proyecto/Broker.php | 19 ++++++++++++++++++- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/app/resources/views/proyectos/brokers.blade.php b/app/resources/views/proyectos/brokers.blade.php index 1472bc9..5fea107 100644 --- a/app/resources/views/proyectos/brokers.blade.php +++ b/app/resources/views/proyectos/brokers.blade.php @@ -168,7 +168,20 @@ window.location.reload() }) }, - edit: (broker_rut, data) => {}, + edit: data => { + const url = '{{$urls->api}}/proyectos/brokers/edit' + const method = 'post' + const body = new FormData() + body.append('brokers[]', JSON.stringify(data)) + return APIClient.fetch(url, {method, body}).then(response => response.json()).then(json => { + if (!json.success) { + console.error(json.errors) + alert('No se pudo editar operador.') + return + } + window.location.reload() + }) + }, delete: broker_rut => { const url = '{{$urls->api}}/proyectos/broker/' + broker_rut const method = 'delete' diff --git a/app/resources/views/proyectos/brokers/edit_modal.blade.php b/app/resources/views/proyectos/brokers/edit_modal.blade.php index c5aa4ea..a1ff35b 100644 --- a/app/resources/views/proyectos/brokers/edit_modal.blade.php +++ b/app/resources/views/proyectos/brokers/edit_modal.blade.php @@ -76,12 +76,14 @@ const form = document.getElementById(this.ids.form) const broker_rut = form.querySelector('[name="broker_rut"]').value const data = { + rut: form.querySelector('[name="rut"]').value.replace(/\D/g, ''), name: form.querySelector('[name="name"]').value, + contact: form.querySelector('[name="contact"]').value || '', legal_name: form.querySelector('[name="legal_name"]').value, email: form.querySelector('[name="email"]').value || '', phone: form.querySelector('[name="phone"]').value || '' } - this.handler.execute().edit(broker_rut, data) + this.handler.execute().edit(data) } }) this.modal.modal('hide') diff --git a/app/src/Controller/API/Proyectos/Brokers.php b/app/src/Controller/API/Proyectos/Brokers.php index 667c77b..ce68f50 100644 --- a/app/src/Controller/API/Proyectos/Brokers.php +++ b/app/src/Controller/API/Proyectos/Brokers.php @@ -70,9 +70,10 @@ class Brokers ]; foreach ($body['brokers'] as $data) { try { + $data = json_decode($data, true); $output['brokers'] []= [ 'rut' => $data['rut'], - 'broker' => $brokerService->edit(json_decode($data, true)), + 'broker' => $brokerService->edit($data), 'success' => true ]; $output['partial'] = true; diff --git a/app/src/Service/Proyecto/Broker.php b/app/src/Service/Proyecto/Broker.php index c8829f8..bc44482 100644 --- a/app/src/Service/Proyecto/Broker.php +++ b/app/src/Service/Proyecto/Broker.php @@ -76,7 +76,7 @@ class Broker extends Ideal\Service public function edit(array $data): Model\Proyecto\Broker { try { - $broker = $this->brokerRepository->fetchById($data['id']); + $broker = $this->brokerRepository->fetchById($data['rut']); } catch (EmptyResult $exception) { throw new ServiceAction\Update(__CLASS__, $exception); } @@ -180,6 +180,23 @@ class Broker extends Ideal\Service } catch (EmptyResult $exception) { throw new ServiceAction\Update(__CLASS__, $exception); } + if (isset($data['contact'])) { + try { + $representative = $this->contactRepository->fetchByName($data['contact']); + $data['representative_id'] = $representative->id; + } catch (EmptyResult) { + $representativeData = $this->contactRepository->filterData($data); + $representativeData['name'] = $data['contact']; + try { + $representative = $this->contactRepository->create($representativeData); + $representative = $this->contactRepository->save($representative); + $data['representative_id'] = $representative->id; + } catch (PDOException) { + unset($representative); + unset($data['contact']); + } + } + } try { $data['broker_rut'] = $broker->rut; $filteredData = $this->dataRepository->filterData($data);