diff --git a/app/Http/Controllers/Bo/CreneauxController.php b/app/Http/Controllers/Bo/CreneauxController.php index 139bd23..a713959 100644 --- a/app/Http/Controllers/Bo/CreneauxController.php +++ b/app/Http/Controllers/Bo/CreneauxController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Bo; use App\Http\Controllers\Controller; +use App\Models\CollecteException; use App\Models\TimeslotSetting; use App\Models\Setting; use Illuminate\Http\Request; @@ -12,10 +13,11 @@ class CreneauxController extends Controller public function settings(Request $request) { - $timeslotSettings = TimeslotSetting::all(); - $plage_days = Setting::where('key','order_withdrawal_period')->firstOrFail()->value; + $timeslotSettings = TimeslotSetting::all(); + $plage_days = Setting::where('key', 'order_withdrawal_period')->firstOrFail()->value; + $exceptionsCollecte = CollecteException::orderBy('date')->get(); - return view('bo.creneaux.settings', compact('timeslotSettings', 'plage_days')); + return view('bo.creneaux.settings', compact('timeslotSettings', 'plage_days', 'exceptionsCollecte')); } public function updateSettings(Request $request) @@ -41,4 +43,40 @@ class CreneauxController extends Controller return redirect()->route('bo.creneaux.settings')->with('success', 'Modifications enregistrées !'); } + + public function saveExceptions(Request $request) + { + $collecteException = $request->collecte_exception; + + for ($i = 0; $i < count($collecteException); $i++) { + $collecteExceptionToInsert = !empty($collecteException[$i]["date"]); + if (isset($collecteException[$i]["id"]) && $collecteException[$i]["id"] !== null && $collecteExceptionToInsert) { + $ce = CollecteException::findOrFail($collecteException[$i]["id"]); + $ce->date = $collecteException[$i]["date"]; + $ce->comment = $collecteException[$i]["comment"]; + $ce->save(); + } else { + if ($collecteExceptionToInsert) { + $ce = CollecteException::updateOrCreate(['date' => $collecteException[$i]["date"], 'comment' => $collecteException[$i]["comment"]]); + $collecteException[$i]["id"] = $ce->id; + } else { + unset($collecteException[$i]); + $i--; + } + } + } + + //remet dans l'ordre avant de renvoyer + $collecteException = CollecteException::orderBy('date')->get(); + return $collecteException; + + } + + public function destroyExceptions(Request $request) + { + $collecteException = CollecteException::findOrFail($request->id); + $collecteException->delete(); + + return "Suppression terminée !"; + } } diff --git a/app/Http/Controllers/Bo/OrdersController.php b/app/Http/Controllers/Bo/OrdersController.php index db207c2..80a2ebf 100644 --- a/app/Http/Controllers/Bo/OrdersController.php +++ b/app/Http/Controllers/Bo/OrdersController.php @@ -12,6 +12,7 @@ use App\Models\Timeslot; use Illuminate\Support\Facades\Mail; use App\Mail\OrderStatusMail; use App\Mail\OrderConfirmMail; +use App\Models\CollecteException; use App\Models\Customers; use App\Models\TimeslotSetting; use Carbon\Carbon; @@ -185,11 +186,14 @@ class OrdersController extends Controller ); } - //génération des plages //start today $today = CarbonImmutable::now()->startOfDay(); + //final boundary (permet de limiter la liste des jours d'exception) + $finalday = $today->add($plage_days, 'day'); $now = CarbonImmutable::now(); + //jours exceptions + $noCollectDays = CollecteException::whereDate('date','>',$now)->whereDate('date','<=',$finalday)->orderBy('date')->get(); $availCreneaux = array(); @@ -199,6 +203,16 @@ class OrdersController extends Controller $weekDay = $current->weekday(); $interval = CarbonInterval::createFromFormat('h:i', $plage[$weekDay]['interval'] ?? '00:15'); $delaiPrepa = CarbonInterval::createFromFormat('h:i', $plage[$weekDay]['min_order_preparation'] ?? '01:00'); + //si c'est un jour exception skip + $skip = false; + foreach ($noCollectDays as $not_today) { + if($current->isSameDay($not_today->date)) { + $skip = true; + } + } + if($skip) { + continue; + } //matinée if (!empty($plage[$weekDay]['morning_start'])) { $currentTime = Carbon::createFromTimeString($plage[$weekDay]['morning_start']); diff --git a/app/Models/CollecteException.php b/app/Models/CollecteException.php new file mode 100644 index 0000000..b97a806 --- /dev/null +++ b/app/Models/CollecteException.php @@ -0,0 +1,28 @@ + 'date', + ]; + + protected function serializeDate(DateTimeInterface $date) + { + return $date->format('Y-m-d'); + } +} diff --git a/database/migrations/2021_04_21_154354_create_collecte_exceptions_table.php b/database/migrations/2021_04_21_154354_create_collecte_exceptions_table.php new file mode 100644 index 0000000..b59ddeb --- /dev/null +++ b/database/migrations/2021_04_21_154354_create_collecte_exceptions_table.php @@ -0,0 +1,33 @@ +id(); + $table->date('date'); + $table->string('comment')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('collecte_exceptions'); + } +} diff --git a/public/b-o/js/app.js b/public/b-o/js/app.js index fcfc411..4087838 100644 --- a/public/b-o/js/app.js +++ b/public/b-o/js/app.js @@ -12220,6 +12220,114 @@ __webpack_require__.r(__webpack_exports__); /***/ }), +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js&": +/*!*****************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js& ***! + \*****************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + mounted: function mounted() { + console.log('CreneauxExceptions Component mounted.'); + this.datas = JSON.parse(this.dbdatas); + }, + props: ['name', 'dbdatas'], + data: function data() { + return { + datas: [], + response: null, + processing: false + }; + }, + watch: {}, + methods: { + newItem: function newItem() { + this.datas.push({ + date: '', + comment: '' + }); + }, + removeItem: function removeItem(index) { + var _this = this; + + if (this.datas[index]['id'] !== undefined) { + this.processing = true; + axios.post('/bo/ajax/delete-creneaux-exception', { + id: this.datas[index]['id'] + }).then(function (response) { + _this.response = response.data; + _this.processing = false; + })["catch"](function (error) { + console.log(error); + alert('Erreur lors de la suppression.'); + this.processing = false; + }); + this.datas.splice(index, 1); + } else { + this.datas.splice(index, 1); + } + }, + saveData: function saveData() { + var _this2 = this; + + this.processing = true; + this.response = "En cours de sauvegarde..."; + axios.post('/bo/ajax/save-creneaux-exception', { + collecte_exception: this.datas + }).then(function (response) { + _this2.datas = response.data; + _this2.response = "Sauvegarde terminée !"; + _this2.processing = false; + })["catch"](function (error) { + console.log(error); + this.response = "Erreur lors de la sauvegarde."; + this.processing = false; + }); + } + } +}); + +/***/ }), + /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Faq.vue?vue&type=script&lang=js&": /*!**************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Faq.vue?vue&type=script&lang=js& ***! @@ -16953,6 +17061,25 @@ exports.push([module.i, "\n", ""]); // exports +/***/ }), + +/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&": +/*!************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader??ref--7-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-2!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& ***! + \************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ "./node_modules/css-loader/lib/css-base.js")(false); +// imports + + +// module +exports.push([module.i, "\n.fade-enter-active[data-v-0a13eb26], .fade-leave-active[data-v-0a13eb26] {\n transition: opacity .5s;\n}\n.fade-enter[data-v-0a13eb26], .fade-leave-to[data-v-0a13eb26] {\n opacity: 0;\n}\n", ""]); + +// exports + + /***/ }), /***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Faq.vue?vue&type=style&index=0&id=5546b00a&scoped=true&lang=css&": @@ -48238,6 +48365,36 @@ var insertInto; +var options = {"hmr":true} + +options.transform = transform +options.insertInto = undefined; + +var update = __webpack_require__(/*! ../../../node_modules/style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); + +if(content.locals) module.exports = content.locals; + +if(false) {} + +/***/ }), + +/***/ "./node_modules/style-loader/index.js!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&": +/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/style-loader!./node_modules/css-loader??ref--7-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-2!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& ***! + \****************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--7-2!../../../node_modules/vue-loader/lib??vue-loader-options!./CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& */ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&"); + +if(typeof content === 'string') content = [[module.i, content, '']]; + +var transform; +var insertInto; + + + var options = {"hmr":true} options.transform = transform @@ -50146,6 +50303,204 @@ render._withStripped = true +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true&": +/*!*********************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true& ***! + \*********************************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("div", [ + _c( + "div", + { + staticClass: + "d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom" + }, + [ + _vm._m(0), + _vm._v(" "), + _c("transition", { attrs: { name: "fade" } }, [ + _c( + "span", + { + directives: [ + { + name: "show", + rawName: "v-show", + value: _vm.processing, + expression: "processing" + } + ], + staticClass: "float-right text-success" + }, + [_vm._v(_vm._s(_vm.response))] + ) + ]), + _vm._v(" "), + _c( + "button", + { + staticClass: "btn btn-primary btn-sm text-white float-right", + attrs: { disabled: _vm.processing }, + on: { + click: function($event) { + return _vm.saveData() + } + } + }, + [ + _vm._v("\n Sauvegarder les exceptions\n "), + _c( + "div", + { + directives: [ + { + name: "show", + rawName: "v-show", + value: _vm.processing, + expression: "processing" + } + ], + staticClass: "spinner-border spinner-border-sm text-light", + attrs: { role: "status" } + }, + [_c("span", { staticClass: "sr-only" }, [_vm._v("Loading...")])] + ) + ] + ) + ], + 1 + ), + _vm._v(" "), + _c("table", { staticClass: "table table-bordered text-center" }, [ + _vm._m(1), + _vm._v(" "), + _c( + "tbody", + _vm._l(_vm.datas, function(item, index) { + return _c("tr", { key: item.id }, [ + _c("td", [ + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: item.date, + expression: "item.date" + } + ], + staticClass: "form-control form-control-sm", + attrs: { type: "date", required: "" }, + domProps: { value: item.date }, + on: { + input: function($event) { + if ($event.target.composing) { + return + } + _vm.$set(item, "date", $event.target.value) + } + } + }) + ]), + _vm._v(" "), + _c("td", [ + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: item.comment, + expression: "item.comment" + } + ], + staticClass: "form-control form-control-sm", + attrs: { type: "text" }, + domProps: { value: item.comment }, + on: { + input: function($event) { + if ($event.target.composing) { + return + } + _vm.$set(item, "comment", $event.target.value) + } + } + }) + ]), + _vm._v(" "), + _c("td", [ + _c( + "button", + { + staticClass: "btn btn-danger btn-sm", + on: { + click: function($event) { + return _vm.removeItem(index) + } + } + }, + [_vm._v("Supprimer")] + ) + ]) + ]) + }), + 0 + ) + ]), + _vm._v(" "), + _c("div", { staticClass: "form-group text-right" }, [ + _c( + "button", + { + staticClass: "btn btn-primary btn-sm text-white", + on: { click: _vm.newItem } + }, + [_vm._v("Ajouter une date")] + ) + ]) + ]) +} +var staticRenderFns = [ + function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("h1", { staticClass: "h2" }, [ + _vm._v("Jours Exception - "), + _c("small", { staticClass: "text-muted" }, [ + _vm._v("Fermetures exceptionnelles") + ]) + ]) + }, + function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("thead", [ + _c("tr", [ + _c("th", { attrs: { scope: "col" } }, [_vm._v("Jour")]), + _vm._v(" "), + _c("th", { attrs: { scope: "col" } }, [_vm._v("Commentaire")]), + _vm._v(" "), + _c("th", { attrs: { scope: "col" } }) + ]) + ]) + } +] +render._withStripped = true + + + /***/ }), /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Faq.vue?vue&type=template&id=5546b00a&scoped=true&": @@ -62890,6 +63245,7 @@ Vue.component('product-card', __webpack_require__(/*! ./components/ProductCard.v Vue.component('products-cards-dnd', __webpack_require__(/*! ./components/ProductsCardsDnd.vue */ "./resources/js/components/ProductsCardsDnd.vue")["default"]); Vue.component('tags-input', _voerro_vue_tagsinput__WEBPACK_IMPORTED_MODULE_0__["default"]); Vue.component('auto-complete-tags', __webpack_require__(/*! ./components/AutoCompleteTags.vue */ "./resources/js/components/AutoCompleteTags.vue")["default"]); +Vue.component('creneaux-exceptions', __webpack_require__(/*! ./components/CreneauxExceptions.vue */ "./resources/js/components/CreneauxExceptions.vue")["default"]); var app = new Vue({ el: '#app' }); @@ -63025,6 +63381,93 @@ __webpack_require__.r(__webpack_exports__); +/***/ }), + +/***/ "./resources/js/components/CreneauxExceptions.vue": +/*!********************************************************!*\ + !*** ./resources/js/components/CreneauxExceptions.vue ***! + \********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true& */ "./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true&"); +/* harmony import */ var _CreneauxExceptions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CreneauxExceptions.vue?vue&type=script&lang=js& */ "./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& */ "./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&"); +/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( + _CreneauxExceptions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"], + _CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + false, + null, + "0a13eb26", + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/components/CreneauxExceptions.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js&": +/*!*********************************************************************************!*\ + !*** ./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js& ***! + \*********************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--4-0!../../../node_modules/vue-loader/lib??vue-loader-options!./CreneauxExceptions.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&": +/*!*****************************************************************************************************************!*\ + !*** ./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& ***! + \*****************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader!../../../node_modules/css-loader??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--7-2!../../../node_modules/vue-loader/lib??vue-loader-options!./CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& */ "./node_modules/style-loader/index.js!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&"); +/* harmony import */ var _node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__); +/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__)); + + +/***/ }), + +/***/ "./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true&": +/*!***************************************************************************************************!*\ + !*** ./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true& ***! + \***************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + + + /***/ }), /***/ "./resources/js/components/Faq.vue": diff --git a/resources/js/app.js b/resources/js/app.js index de75fee..b056efb 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -13,6 +13,7 @@ Vue.component('product-card', require('./components/ProductCard.vue').default); Vue.component('products-cards-dnd', require('./components/ProductsCardsDnd.vue').default); Vue.component('tags-input', VoerroTagsInput); Vue.component('auto-complete-tags', require('./components/AutoCompleteTags.vue').default); +Vue.component('creneaux-exceptions', require('./components/CreneauxExceptions.vue').default); const app = new Vue({ el: '#app', diff --git a/resources/js/components/CreneauxExceptions.vue b/resources/js/components/CreneauxExceptions.vue new file mode 100644 index 0000000..7e2b854 --- /dev/null +++ b/resources/js/components/CreneauxExceptions.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/resources/views/bo/creneaux/settings.blade.php b/resources/views/bo/creneaux/settings.blade.php index 01f1ece..3ef6724 100644 --- a/resources/views/bo/creneaux/settings.blade.php +++ b/resources/views/bo/creneaux/settings.blade.php @@ -9,7 +9,7 @@ {{ session('success') }} @endif
-
@if ($errors->any()) @@ -124,15 +124,21 @@
+
+
+ +
+
+
- -
-
- +
+
+ + @endsection @section('scripts') diff --git a/routes/web.php b/routes/web.php index 1559147..0641a7a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -78,6 +78,9 @@ Route::namespace('App\Http\Controllers\Bo') //Creneaux Route::get('/settings/creneaux', [CreneauxController::class, 'settings'])->name('creneaux.settings'); Route::post('/settings/creneaux', [CreneauxController::class, 'updateSettings'])->name('creneaux.settings.update'); + //exceptions de collecte + Route::post('/ajax/save-creneaux-exception', [CreneauxController::class, 'saveExceptions']); + Route::post('/ajax/delete-creneaux-exception', [CreneauxController::class, 'destroyExceptions']); // Produits