diff --git a/app/Http/Controllers/Api/SubpedidoController.php b/app/Http/Controllers/Api/SubpedidoController.php index 1402239..3fe6987 100644 --- a/app/Http/Controllers/Api/SubpedidoController.php +++ b/app/Http/Controllers/Api/SubpedidoController.php @@ -88,4 +88,12 @@ class SubpedidoController extends Controller return new SubpedidoResource($subpedido); } + public function toggleAprobacion(Subpedido $subpedido) { + $valid = request()->validate([ + 'aprobacion' => 'required | boolean' + ]); + $subpedido->toggleAprobacion($valid['aprobacion']); + return new SubpedidoResource($subpedido); + } + } diff --git a/app/Subpedido.php b/app/Subpedido.php index 55d22c3..4472630 100644 --- a/app/Subpedido.php +++ b/app/Subpedido.php @@ -85,4 +85,9 @@ class Subpedido extends Model } } + public function toggleAprobacion(bool $aprobacion) { + $this->aprobado = $aprobacion; + $this->save(); + } + } diff --git a/public/js/app.js b/public/js/app.js index 92a81b9..b4affff 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -2051,13 +2051,28 @@ __webpack_require__.r(__webpack_exports__); }, data: function data() { return { - mensaje: this.aprobado ? "Desaprobar pedido" : "Aprobar pedido" + pedido: this.subpedido }; }, + computed: { + mensaje: function mensaje() { + return this.pedido.aprobado ? "Desaprobar" : "Aprobar"; + } + }, methods: { toggleAprobacion: function toggleAprobacion() { - alert("Hay que implementarlo con axios o algo de eso"); + this.aprobado = !this.aprobado; + Event.$emit('aprobacion-subpedido', this.pedido.id, this.aprobado); } + }, + mounted: function mounted() { + var _this = this; + + Event.$on('sync-aprobacion', function (unSubpedido) { + if (_this.pedido.id === unSubpedido.id) { + _this.pedido = unSubpedido; + } + }); } }); @@ -2397,6 +2412,23 @@ __webpack_require__.r(__webpack_exports__); }); }); }); + Event.$on('aprobacion-subpedido', function (subpedidoId, aprb) { + axios.post("/api/admin/subpedidos/" + subpedidoId + "/aprobacion", { + aprobacion: aprb + }).then(function (response) { + Event.$emit('sync-aprobacion', response.data.data); + window.bulmaToast.toast({ + message: 'Pedido ' + (aprb ? 'aprobado' : 'desaprobado') + ' exitosamente', + duration: 1000, + type: 'is-danger', + position: 'bottom-center', + animate: { + "in": 'fadeIn', + out: 'fadeOut' + } + }); + }); + }); } }); @@ -2766,6 +2798,22 @@ __webpack_require__.r(__webpack_exports__); }, props: { subpedido: Object + }, + data: function data() { + return { + pedido: this.subpedido + }; + }, + mounted: function mounted() { + var _this = this; + + Event.$on('sync-aprobacion', function (unSubpedido) { + console.log(unSubpedido); + + if (_this.pedido.id === unSubpedido.id) { + _this.pedido = unSubpedido; + } + }); } }); @@ -2938,6 +2986,13 @@ __webpack_require__.r(__webpack_exports__); _this2.subpedidos = response.data.data; }); } + }, + mounted: function mounted() { + var _this3 = this; + + Event.$on('sync-aprobacion', function (_) { + _this3.fetchSubpedidos(); + }); } }); @@ -4509,14 +4564,14 @@ var render = function () { "button", { staticClass: "button", - class: _vm.subpedido.aprobado ? "is-danger" : "is-success", + class: _vm.pedido.aprobado ? "is-danger" : "is-success", on: { click: _vm.toggleAprobacion }, }, [ _c("span", { staticClass: "icon is-small" }, [ _c("i", { staticClass: "fas", - class: _vm.subpedido.aprobado ? "fa-times" : "fa-check", + class: _vm.pedido.aprobado ? "fa-times" : "fa-check", }), ]), _vm._v(" "), diff --git a/public/js/app.js.LICENSE.txt b/public/js/app.js.LICENSE.txt new file mode 100644 index 0000000..d02110e --- /dev/null +++ b/public/js/app.js.LICENSE.txt @@ -0,0 +1,11 @@ +/*! + * Vue.js v2.6.14 + * (c) 2014-2021 Evan You + * Released under the MIT License. + */ + +/*! + * bulma-toast 2.4.1 + * (c) 2018-present @rfoel + * Released under the MIT License. + */ diff --git a/resources/js/components/BotonAdminSubpedidoRow.vue b/resources/js/components/BotonAdminSubpedidoRow.vue index 2681ee4..0b4c310 100644 --- a/resources/js/components/BotonAdminSubpedidoRow.vue +++ b/resources/js/components/BotonAdminSubpedidoRow.vue @@ -1,7 +1,7 @@