diff --git a/app/Http/Controllers/User/Api/ContractTemplateObligationController.php b/app/Http/Controllers/User/Api/ContractTemplateObligationController.php index 70e093f..e20ee37 100644 --- a/app/Http/Controllers/User/Api/ContractTemplateObligationController.php +++ b/app/Http/Controllers/User/Api/ContractTemplateObligationController.php @@ -40,6 +40,12 @@ class ContractTemplateObligationController extends BaseController return $contract_template_obligation; } + public function updateBatchSequence(Request $request) + { + $contract_template_obligation = ContractTemplateObligationModule::updateBatchSequence($request); + return $contract_template_obligation; + } + public function delete(Request $request, $hash_id) { $contract_template_obligation = ContractTemplateObligationModule::delete($request, $hash_id); diff --git a/app/Http/Modules/User/ContractTemplateObligationModule.php b/app/Http/Modules/User/ContractTemplateObligationModule.php index b10c816..cafbbba 100644 --- a/app/Http/Modules/User/ContractTemplateObligationModule.php +++ b/app/Http/Modules/User/ContractTemplateObligationModule.php @@ -55,7 +55,7 @@ class ContractTemplateObligationModule extends BaseController $query->where('user_id', Auth::guard('user-api')->user()->id); - $query->orderBy('sequence', 'desc'); + $query->orderBy('sequence', 'asc'); $params = [ 'contract_template_id' => $contract_template_hash_id, @@ -176,6 +176,32 @@ class ContractTemplateObligationModule extends BaseController return response()->json($data); } + public static function updateBatchSequence(Request $request) + { + $validation = ContractTemplateObligationModule::validation($request, '', 'PUT_BATCH_SEQUENCE'); + if (!$validation->status) { + return response()->json($validation, 422); + } + + DB::beginTransaction(); + + $contract_template_obligation_id = $request->input('contract_template_obligation_id'); + $contract_template_obligation_id = Hasher::decodeArray('contract_template_obligations', $contract_template_obligation_id); + + foreach ($contract_template_obligation_id as $key => $row) { + $contract_template_obligation = ContractTemplateObligation::find($row); + $contract_template_obligation->sequence = $key + 1; + $contract_template_obligation->update(); + ContractTemplateObligationModule::makeLog($contract_template_obligation->id, 'user (' . Auth::guard('user-api')->user()->id . ') sequence updated'); + } + + DB::commit(); + + $data = General::returnData($contract_template_obligation); + + return response()->json($data); + } + public static function delete(Request $request, $hash_id) { $id = Hasher::decode('contract_template_obligations', $hash_id); @@ -236,6 +262,12 @@ class ContractTemplateObligationModule extends BaseController ]; } + if ($method == 'PUT_BATCH_SEQUENCE') { + $rule = [ + 'contract_template_obligation_id' => ['required', new UnderCheck('contract_template_obligation'), new ExistCheck('contract_template_obligation')], + ]; + } + if ($method == 'DEL') { $data['id'] = $id; $rule = [ diff --git a/resources/js/user/pages/contract-template-obligations/TableModal.vue b/resources/js/user/pages/contract-template-obligations/TableModal.vue index e6169b4..b47fe6a 100644 --- a/resources/js/user/pages/contract-template-obligations/TableModal.vue +++ b/resources/js/user/pages/contract-template-obligations/TableModal.vue @@ -37,8 +37,8 @@ Actions - - + + {{ $index + 1 }}
Name: {{ contract.name }}
@@ -73,7 +73,7 @@ Empty - +
import PaginateNav from '../../components/paginations/NextPerviousPagination'; import ContractTemplateObligationFormModal from './FormModal'; + import Draggable from 'vuedraggable'; export default { props: { @@ -123,7 +124,8 @@ }, components: { PaginateNav, - ContractTemplateObligationFormModal + ContractTemplateObligationFormModal, + Draggable }, data() { let vm = this; @@ -135,6 +137,7 @@ colspan: 7, loading: true, contract_template_obligation_list: [], + drag_drop_contract_template_obligation_list: [], selected_contract_template_obligation : {}, mode: '' } @@ -177,7 +180,11 @@ General.tableCall(url, vm.form).then(response => { vm.loading = false; vm.contract_template_obligation_list = response; + vm.drag_drop_contract_template_obligation_list = []; vm.convertStatus(); + vm.contract_template_obligation_list.data.forEach(function(element, index) { + vm.drag_drop_contract_template_obligation_list.push(element); + }); }); }, convertStatus() { @@ -191,23 +198,29 @@ vm.form.page = General.getStringParam('page', url); vm.tableCall('contract-template/list'); }, - onSubmit() { + onUpdateSequence() { let vm = this; - const l = vm.loader - vm[l] = !vm[l]; + let form = new Form({ + contract_template_obligation_id: [] + }); + vm.drag_drop_contract_template_obligation_list.forEach(function(element, index) { + form.contract_template_obligation_id.push(element.hash_id); + }); + let method = 'put'; - let url = 'seller-shop-product/featured'; - General.onComplete(url, vm.form, method, true) + let url = 'contract-template-obligation/update-batch-sequence'; + General.onComplete(url, form, method) .then(data => { - vm[l] = false - vm.loader = null; - vm.$bvModal.hide('create-seller-shop-product-featured-form-modal'); - vm.$emit('refresh'); - General.toastedMessage('edit', 'Seller Shop Product Featured', data.data.name); + General.toastedMessage('edit', 'Contract Template Obligation Sequence', data.data.hash_id); + vm.getContractTemplateObligationList(); }) .catch(function (error) { - vm[l] = false - vm.loader = null; + let error_mesage = General.errorData(error); + Vue.toasted.error(error_mesage, { + icon : { + name : 'close', + } + }).goAway(3500); }); }, } diff --git a/resources/js/user/utilities/general.js b/resources/js/user/utilities/general.js index a618a97..332dd45 100644 --- a/resources/js/user/utilities/general.js +++ b/resources/js/user/utilities/general.js @@ -103,7 +103,7 @@ module.exports.onComplete = function(url, form, method) { resolve(data); }) .catch(error => { - reject(false); + reject(error); }); }); }; diff --git a/resources/sass/user/editor.css b/resources/sass/user/editor.css index 2f47e39..98216d8 100644 --- a/resources/sass/user/editor.css +++ b/resources/sass/user/editor.css @@ -42,6 +42,7 @@ } .pointer-cursor {cursor: pointer;} +.move-cursor {cursor: move;} .none-cursor {cursor: none;} .context-menu-cursor {cursor: context-menu;} diff --git a/routes/user/api.php b/routes/user/api.php index 50f3efc..e7b47d5 100644 --- a/routes/user/api.php +++ b/routes/user/api.php @@ -184,6 +184,13 @@ Route::group(['namespace' => 'User', 'prefix' => 'user-backsys/api'], function ( 'middleware' => ['permission:edit contract_template_obligation'] ] ); + Route::put('update-batch-sequence', + [ + 'as' => 'api.contract-template-obligation.update-batch-sequence', + 'uses' => 'ContractTemplateObligationController@updateBatchSequence', + 'middleware' => ['permission:edit contract_template_obligation'] + ] + ); Route::delete('delete/{hash_id}', [ 'as' => 'api.contract-template-obligation.delete',