From 18e4e8c669aacbde50addc84476d73cbda693bad Mon Sep 17 00:00:00 2001 From: glovetleong Date: Sat, 10 Jul 2021 16:27:24 +0800 Subject: [PATCH] contract template obligation modal UI --- .../Controllers/User/Api/EntityController.php | 7 + app/Http/Controllers/User/Web/cookies.txt | 6 + .../Modules/User/ContractTemplateModule.php | 2 +- .../User/ContractTemplateObligationModule.php | 25 +- app/Http/Modules/User/EntityModule.php | 8 + resources/js/user/langs/en.js | 1 + .../CreateModal.vue | 149 ++++++++++++ .../FormModal.vue | 169 ++++++++++++++ .../TableModal.vue | 215 ++++++++++++++++++ .../js/user/pages/contract-templates/Edit.vue | 18 +- .../pages/contract-templates/FormTable.vue | 62 +++++ .../user/pages/contract-templates/Table.vue | 38 +++- resources/js/user/pages/entities/Create.vue | 58 +++++ resources/js/user/pages/entities/Edit.vue | 59 +++++ resources/js/user/pages/entities/Filter.vue | 75 ++++++ resources/js/user/pages/entities/Form.vue | 97 ++++++++ resources/js/user/pages/entities/List.vue | 51 +++++ resources/js/user/pages/entities/Table.vue | 184 +++++++++++++++ resources/js/user/router.js | 30 +++ resources/js/user/utilities/constants.js | 29 +++ .../js/user/utilities/navigationAccess.js | 17 +- routes/user/api.php | 6 + routes/user/web.php | 6 +- 23 files changed, 1283 insertions(+), 29 deletions(-) create mode 100644 app/Http/Controllers/User/Web/cookies.txt create mode 100644 resources/js/user/pages/contract-template-obligations/CreateModal.vue create mode 100644 resources/js/user/pages/contract-template-obligations/FormModal.vue create mode 100644 resources/js/user/pages/contract-template-obligations/TableModal.vue create mode 100644 resources/js/user/pages/contract-templates/FormTable.vue create mode 100644 resources/js/user/pages/entities/Create.vue create mode 100644 resources/js/user/pages/entities/Edit.vue create mode 100644 resources/js/user/pages/entities/Filter.vue create mode 100644 resources/js/user/pages/entities/Form.vue create mode 100644 resources/js/user/pages/entities/List.vue create mode 100644 resources/js/user/pages/entities/Table.vue diff --git a/app/Http/Controllers/User/Api/EntityController.php b/app/Http/Controllers/User/Api/EntityController.php index d595626..df17024 100644 --- a/app/Http/Controllers/User/Api/EntityController.php +++ b/app/Http/Controllers/User/Api/EntityController.php @@ -45,4 +45,11 @@ class EntityController extends BaseController $entity = EntityModule::delete($request, $hash_id); return $entity; } + + public function validCheck(Request $request, $hash_id = '') + { + $method = empty($hash_id) ? 'POST' :'PUT'; + $valid = EntityModule::validCheck($request, $hash_id, $method); + return $valid; + } } diff --git a/app/Http/Controllers/User/Web/cookies.txt b/app/Http/Controllers/User/Web/cookies.txt new file mode 100644 index 0000000..d2a6281 --- /dev/null +++ b/app/Http/Controllers/User/Web/cookies.txt @@ -0,0 +1,6 @@ +# Netscape HTTP Cookie File +# https://curl.haxx.se/docs/http-cookies.html +# This file was generated by libcurl! Edit at your own risk. + +#HttpOnly_www.starbuyers-global-auction.com FALSE / TRUE 1625823333 star_buyers_auction_session PC7Uf6I2TFtUqH2kIPkLFJnpJxvyfRuEmmbit4Wv +www.starbuyers-global-auction.com FALSE / TRUE 1625823333 XSRF-TOKEN eyJpdiI6Ik00SnJCTEJxTVZ5U2ExVUFzNGhIb2c9PSIsInZhbHVlIjoiY2JHVjEwYno1ZjI4TTFDcnIzZ1BaOERGWnQybDFPcm10eGtkalZVbU9hVUwzb1Nkd09LbHFHS3hSYkhZXC9GTFkiLCJtYWMiOiJiNzAzM2ZhMTE4NDFjMmZiZmJkMjQ2MzNkMGIyMjkzOGUzYmYxYjM1NWQwMTQyNDk5NmY4NTE1ODI1MzFlMmRmIn0%3D diff --git a/app/Http/Modules/User/ContractTemplateModule.php b/app/Http/Modules/User/ContractTemplateModule.php index f782693..25f04e5 100644 --- a/app/Http/Modules/User/ContractTemplateModule.php +++ b/app/Http/Modules/User/ContractTemplateModule.php @@ -100,7 +100,7 @@ class ContractTemplateModule extends BaseController $contract_template->user_id = Auth::guard('user-api')->user()->id; $contract_template->name = $name; $contract_template->complete_day_range = $complete_day_range; - $contract_template->status = config('constants.contact_template.status.pending'); + $contract_template->status = config('constants.contact_template.status.active'); $contract_template->save(); // log diff --git a/app/Http/Modules/User/ContractTemplateObligationModule.php b/app/Http/Modules/User/ContractTemplateObligationModule.php index 40ac5e8..b10c816 100644 --- a/app/Http/Modules/User/ContractTemplateObligationModule.php +++ b/app/Http/Modules/User/ContractTemplateObligationModule.php @@ -30,7 +30,9 @@ class ContractTemplateObligationModule extends BaseController public static function list(Request $request) { General::storeCachePerviousQuery($request->query(), 'contract_template_obligation_query'); - + + $contract_template_hash_id = $contract_template_id = $request->get('contract_template_id', []); + $name = $request->get('name', null); $status = $request->get('status', []); $page = $request->get('page', null); @@ -38,7 +40,12 @@ class ContractTemplateObligationModule extends BaseController $query = ContractTemplateObligation::query(); - if (strlen($name) > 0) { + if (!empty($contract_template_id)) { + $contract_template_id = Hasher::decodeArray('contract_templates', $contract_template_id); + $query->whereIn('contract_template_id', $contract_template_id); + } + + if (strlen($name) > 0) { $query->where('name', 'like', '%' . $name . '%'); } @@ -48,9 +55,10 @@ class ContractTemplateObligationModule extends BaseController $query->where('user_id', Auth::guard('user-api')->user()->id); - $query->orderBy('id', 'desc'); + $query->orderBy('sequence', 'desc'); $params = [ + 'contract_template_id' => $contract_template_hash_id, 'name' => $name, 'status' => $status, 'page' => $page @@ -105,6 +113,7 @@ class ContractTemplateObligationModule extends BaseController $contract_template_obligation = new ContractTemplateObligation(); $contract_template_obligation->contract_template_id = $contarct_template->id; $contract_template_obligation->user_id = Auth::guard('user-api')->user()->id; + $contract_template_obligation->name = $name; $contract_template_obligation->sequence = $sequence; $contract_template_obligation->reference = $reference; $contract_template_obligation->content = json_encode($content); @@ -112,7 +121,7 @@ class ContractTemplateObligationModule extends BaseController $contract_template_obligation->must_accept = $must_accept; $contract_template_obligation->complete_day_range = $complete_day_range; $contract_template_obligation->type = $type; - $contract_template_obligation->status = config('constants.contract_template_obligation.status.pending'); + $contract_template_obligation->status = config('constants.contract_template_obligation.status.active'); $contract_template_obligation->save(); // log @@ -208,7 +217,7 @@ class ContractTemplateObligationModule extends BaseController 'must_complete' => '', 'must_accept' => '', 'complete_day_range' => 'required|numeric|gt:-1', - 'type' => 'required', + // 'type' => 'required', ]; } @@ -216,13 +225,13 @@ class ContractTemplateObligationModule extends BaseController $data['id'] = $id; $rule = [ 'id' => [new UnderCheck('contract_template_obligation'), new ExistCheck('contract_template_obligation')], - 'name' => '', - 'sequence' => 'nullable|numeric|gt:-1', + 'name' => 'required', + 'sequence' => 'required|numeric|gt:-1', 'reference' => '', 'content' => '', 'must_complete' => '', 'must_accept' => '', - 'complete_day_range' => 'nullable|numeric|gt:-1', + 'complete_day_range' => 'required|numeric|gt:-1', 'type' => '', ]; } diff --git a/app/Http/Modules/User/EntityModule.php b/app/Http/Modules/User/EntityModule.php index 03f377e..05e9a31 100644 --- a/app/Http/Modules/User/EntityModule.php +++ b/app/Http/Modules/User/EntityModule.php @@ -159,6 +159,14 @@ class EntityModule extends BaseController return response()->json($data); } + public static function validCheck(Request $request, $hash_id = '', $method = 'POST') + { + $id = $hash_id ? Hasher::decode('entities', $hash_id) : ''; + $validation = EntityModule::validation($request, $id, $method); + if (!$validation->status) { + return response()->json($validation, 422); + } + } private static function validation(Request $request, $id = '', $method = 'POST') { diff --git a/resources/js/user/langs/en.js b/resources/js/user/langs/en.js index d92642d..a9d0f9c 100644 --- a/resources/js/user/langs/en.js +++ b/resources/js/user/langs/en.js @@ -5,6 +5,7 @@ const En = { 'email': 'email', 'password': 'password', 'complete_day_range': 'complete day range', + 'sequence': 'sequence', // Error diff --git a/resources/js/user/pages/contract-template-obligations/CreateModal.vue b/resources/js/user/pages/contract-template-obligations/CreateModal.vue new file mode 100644 index 0000000..dcf990b --- /dev/null +++ b/resources/js/user/pages/contract-template-obligations/CreateModal.vue @@ -0,0 +1,149 @@ + + \ No newline at end of file diff --git a/resources/js/user/pages/contract-template-obligations/FormModal.vue b/resources/js/user/pages/contract-template-obligations/FormModal.vue new file mode 100644 index 0000000..ca75991 --- /dev/null +++ b/resources/js/user/pages/contract-template-obligations/FormModal.vue @@ -0,0 +1,169 @@ + + \ No newline at end of file diff --git a/resources/js/user/pages/contract-template-obligations/TableModal.vue b/resources/js/user/pages/contract-template-obligations/TableModal.vue new file mode 100644 index 0000000..e6169b4 --- /dev/null +++ b/resources/js/user/pages/contract-template-obligations/TableModal.vue @@ -0,0 +1,215 @@ + + \ No newline at end of file diff --git a/resources/js/user/pages/contract-templates/Edit.vue b/resources/js/user/pages/contract-templates/Edit.vue index 1d2fc82..89b9d2b 100644 --- a/resources/js/user/pages/contract-templates/Edit.vue +++ b/resources/js/user/pages/contract-templates/Edit.vue @@ -8,15 +8,15 @@ - + > \ No newline at end of file diff --git a/resources/js/user/pages/contract-templates/Table.vue b/resources/js/user/pages/contract-templates/Table.vue index 4e72124..043f085 100644 --- a/resources/js/user/pages/contract-templates/Table.vue +++ b/resources/js/user/pages/contract-templates/Table.vue @@ -34,12 +34,12 @@ @clicked="dataHandler" > - # - Details - Obligation - Status - Created - Actions + # + Details + Obligation Template + Status + Created + Actions @@ -51,7 +51,7 @@
-
-{{ obligation.name }}
+
-{{ obligation.name }} ({{ obligation.sequence }})
- @@ -64,6 +64,13 @@ {{ contract.created_at }} + +
diff --git a/resources/js/user/pages/entities/Edit.vue b/resources/js/user/pages/entities/Edit.vue new file mode 100644 index 0000000..1809dc1 --- /dev/null +++ b/resources/js/user/pages/entities/Edit.vue @@ -0,0 +1,59 @@ + + diff --git a/resources/js/user/pages/entities/Filter.vue b/resources/js/user/pages/entities/Filter.vue new file mode 100644 index 0000000..fb3ffc5 --- /dev/null +++ b/resources/js/user/pages/entities/Filter.vue @@ -0,0 +1,75 @@ + + + \ No newline at end of file diff --git a/resources/js/user/pages/entities/Form.vue b/resources/js/user/pages/entities/Form.vue new file mode 100644 index 0000000..7d8c2ab --- /dev/null +++ b/resources/js/user/pages/entities/Form.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/resources/js/user/pages/entities/List.vue b/resources/js/user/pages/entities/List.vue new file mode 100644 index 0000000..ad61a01 --- /dev/null +++ b/resources/js/user/pages/entities/List.vue @@ -0,0 +1,51 @@ + + diff --git a/resources/js/user/pages/entities/Table.vue b/resources/js/user/pages/entities/Table.vue new file mode 100644 index 0000000..a7679b2 --- /dev/null +++ b/resources/js/user/pages/entities/Table.vue @@ -0,0 +1,184 @@ + + + diff --git a/resources/js/user/router.js b/resources/js/user/router.js index 4ceedab..c4d9a75 100644 --- a/resources/js/user/router.js +++ b/resources/js/user/router.js @@ -6,6 +6,10 @@ import Logins from './pages/logins/Index'; import Dashboards from './pages/dashboards/Index'; import UserProfile from './pages/users/Profile'; +import EntityList from './pages/entities/List'; +import EntityCreate from './pages/entities/Create'; +import EntityEdit from './pages/entities/Edit'; + import ContractTemplateList from './pages/contract-templates/List'; import ContractTemplateCreate from './pages/contract-templates/Create'; import ContractTemplateEdit from './pages/contract-templates/Edit'; @@ -45,6 +49,32 @@ let router = new Router({ component: Dashboards }, ///////////////////////////////////////////////////// + // Entity + { + path: '/entity/list', + name: 'Entity List', + meta: { + auth: true + }, + component: EntityList + }, + { + path: '/entity/create', + name: 'Entity Create', + meta: { + auth: true + }, + component: EntityCreate + }, + { + path: '/entity/edit/:hash_id', + name: 'Entity Edit', + meta: { + auth: true + }, + component: EntityEdit + }, + ///////////////////////////////////////////////////// // Contract Template { path: '/contract-template/list', diff --git a/resources/js/user/utilities/constants.js b/resources/js/user/utilities/constants.js index f304a68..4776306 100644 --- a/resources/js/user/utilities/constants.js +++ b/resources/js/user/utilities/constants.js @@ -28,6 +28,18 @@ const Constant = { 'color': 'danger' }, ], + 'entity_status': [ + { + 'id': 1, + 'name': 'Active', + 'color': 'primary' + }, + { + 'id': 2, + 'name': 'De-active', + 'color': 'danger' + } + ], 'contract_template_status': [ { 'id': 1, @@ -45,6 +57,23 @@ const Constant = { 'color': 'warning' }, ], + 'contract_template_obligation_status': [ + { + 'id': 1, + 'name': 'Active', + 'color': 'primary' + }, + { + 'id': 2, + 'name': 'De-active', + 'color': 'danger' + }, + { + 'id': 9, + 'name': 'Pending', + 'color': 'warning' + }, + ], 'contract_status': [ { 'id': 1, diff --git a/resources/js/user/utilities/navigationAccess.js b/resources/js/user/utilities/navigationAccess.js index 6bf948c..467d2ad 100644 --- a/resources/js/user/utilities/navigationAccess.js +++ b/resources/js/user/utilities/navigationAccess.js @@ -16,7 +16,22 @@ module.exports.menuDefine = function(permission = []) { }, ] }); - + + ///////////////////////////////////////////////////// + if (permission.includes('view entity')) { + let admin_access_menu = {}; + admin_access_menu = { + title: 'Entity', + icon: 'fa fa-cubes', + child: [ + { + href: '/entity/list', + title: 'List', + }, + ] + }; + menu.push(admin_access_menu); + } ///////////////////////////////////////////////////// if (permission.includes('view contract_template')) { let admin_access_menu = {}; diff --git a/routes/user/api.php b/routes/user/api.php index 2cc454c..50f3efc 100644 --- a/routes/user/api.php +++ b/routes/user/api.php @@ -62,6 +62,12 @@ Route::group(['namespace' => 'User', 'prefix' => 'user-backsys/api'], function ( 'middleware' => ['permission:delete entity'] ] ); + Route::post('valid-check/{hash_id?}', + [ + 'as' => 'api.entity.valid-check', + 'uses' => 'EntityController@validCheck', + ] + ); }); // Entity Signature diff --git a/routes/user/web.php b/routes/user/web.php index c40e46a..86bceff 100644 --- a/routes/user/web.php +++ b/routes/user/web.php @@ -4,11 +4,15 @@ Route::group(['namespace' => 'User'], function () { Route::group(['namespace' => 'Web'], function () { Route::get('/login', ['as' => 'user.app.login', 'uses' => 'AppController@index'])->where('any', '.*'); Route::get('/user/profile/update', ['as' => 'user.app.profile.update', 'uses' => 'AppController@index'])->where('any', '.*'); + + Route::get('/entity/list', ['as' => 'user.app.entity.list', 'uses' => 'AppController@index'])->where('any', '.*'); + Route::get('/entity/create', ['as' => 'user.app.entity.create', 'uses' => 'AppController@index'])->where('any', '.*'); + Route::get('/entity/edit/{hash_id}', ['as' => 'user.app.entity.create', 'uses' => 'AppController@index'])->where('any', '.*'); + Route::get('/contract-template/list', ['as' => 'user.app.contract-template.list', 'uses' => 'AppController@index'])->where('any', '.*'); Route::get('/contract-template/create', ['as' => 'user.app.contract-template.create', 'uses' => 'AppController@index'])->where('any', '.*'); Route::get('/contract-template/edit/{hash_id}', ['as' => 'user.app.contract-template.create', 'uses' => 'AppController@index'])->where('any', '.*'); - Route::get('/contract/list', ['as' => 'user.app.contract.list', 'uses' => 'AppController@index'])->where('any', '.*'); Route::get('/contract/create', ['as' => 'user.app.contract.create', 'uses' => 'AppController@index'])->where('any', '.*'); Route::get('/', ['as' => 'user.app', 'uses' => 'AppController@index'])->where('any', '.*');