From 748838923352190f709f6962ed6c27e67463263b Mon Sep 17 00:00:00 2001 From: glovetleong Date: Fri, 6 Aug 2021 12:00:16 +0800 Subject: [PATCH] contract obligation contract dependency --- ...ObligationContractDependencyController.php | 48 +++++ ...ractObligationContractDependencyModule.php | 195 ++++++++++++++++++ config/constants.php | 2 +- routes/user/api.php | 39 ++++ 4 files changed, 283 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/User/Api/ContractObligationContractDependencyController.php create mode 100644 app/Http/Modules/User/ContractObligationContractDependencyModule.php diff --git a/app/Http/Controllers/User/Api/ContractObligationContractDependencyController.php b/app/Http/Controllers/User/Api/ContractObligationContractDependencyController.php new file mode 100644 index 0000000..21c06d0 --- /dev/null +++ b/app/Http/Controllers/User/Api/ContractObligationContractDependencyController.php @@ -0,0 +1,48 @@ +query(), 'contract_obligation_contract_dependency_query'); + + $contract_obligation_hash_id = $contract_obligation_id = $request->get('contract_obligation_id', []); + + $name = $request->get('name', null); + $status = $request->get('status', []); + $page = $request->get('page', null); + $limit = $request->get('limit', 10); + + $query = ContractObligationContractDependency::query(); + + if (!empty($contract_obligation_id)) { + $contract_obligation_id = Hasher::decodeArray('contract_obligations', $contract_obligation_id); + $query->whereIn('contract_obligation_id', $contract_obligation_id); + } + + if (strlen($name) > 0) { + $query->where('name', 'like', '%' . $name . '%'); + } + + if (!empty($status) > 0) { + $query->whereIn('status', $status); + } + + $query->where('user_id', Auth::guard('user-api')->user()->id); + + $query->orderBy('id', 'desc'); + + $params = [ + 'contract_obligation_id' => $contract_obligation_hash_id, + 'name' => $name, + 'status' => $status, + 'page' => $page + ]; + + $contract_obligation_contract_dependency_list = $query->paginate($limit); + + $extract = []; + foreach ($contract_obligation_contract_dependency_list as $key => $row) { + $extract[] = $row; + + } + $pagination = General::paginationGenerator($contract_obligation_contract_dependency_list, $params, $extract); + + return $pagination; + } + + public static function show(Request $request, $hash_id) + { + $id = Hasher::decode('contract_obligation_contract_dependencies', $hash_id); + $contract_obligation_contract_dependency = ContractObligationContractDependency::find($id); + if ($contract_obligation_contract_dependency) { + $data = General::returnData($contract_obligation_contract_dependency, ''); + return response()->json($data); + } + $data = General::returnNotFoundData(); + return response()->json($data); + } + + public static function store(Request $request) + { + $validation = ContractObligationContractDependencyModule::validation($request); + if (!$validation->status) { + return response()->json($validation, 422); + } + + DB::beginTransaction(); + + $contract_obligation_id = $request->input('contract_obligation_id'); + $contract_obligation_id = Hasher::decode('contract_obligations', $contract_obligation_id[0]); + $contarct_template_obligation = ContractObligation::find($contract_obligation_id); + + $depend_contract_id = $request->input('depend_contract_id'); + $depend_contract_id = Hasher::decode('contracts', $depend_contract_id[0]); + $depend_contract_template = Contract::find($depend_contract_id); + + $contract_obligation_contract_dependency = new ContractObligationContractDependency(); + $contract_obligation_contract_dependency->user_id = Auth::guard('user-api')->user()->id; + $contract_obligation_contract_dependency->contract_obligation_id = $contarct_template_obligation->id; + $contract_obligation_contract_dependency->depend_contract_id = $depend_contract_template->id; + $contract_obligation_contract_dependency->status = config('constants.contract_obligation_contract_dependency.status.active'); + $contract_obligation_contract_dependency->save(); + + // log + ContractObligationModule::makeLog($contract_obligation_contract_dependency->contract_obligation_id, 'user (' . Auth::guard('user-api')->user()->id . ') created contract dependency'); + + DB::commit(); + + $query_string = General::getCachePerviousQuery('contract_obligation_contract_dependency_query'); + $data = General::returnData($contract_obligation_contract_dependency, $query_string); + + return response()->json($data); + } + + public static function delete(Request $request, $hash_id) + { + $id = Hasher::decode('contract_obligation_contract_dependencies', $hash_id); + $validation = ContractObligationContractDependencyModule::validation($request, $hash_id, 'DEL'); + if (!$validation->status) { + return response()->json($validation, 422); + } + + DB::beginTransaction(); + + $contract_obligation_contract_dependency = ContractObligationContractDependency::find($id); + $contract_obligation_contract_dependency->status = config('constants.contract_obligation_contract_dependency.status.delete'); + $contract_obligation_contract_dependency->update(); + + // log + ContractObligationModule::makeLog($contract_obligation_contract_dependency->contract_obligation_id, 'user (' . Auth::guard('user-api')->user()->id . ') dependency deleted'); + + DB::commit(); + + $query_string = General::getCachePerviousQuery('contract_obligation_contract_dependency_query'); + $data = General::returnData($contract_obligation_contract_dependency, $query_string); + + return response()->json($data); + } + + + private static function validation(Request $request, $id = '', $method = 'POST') + { + $data = $request->all(); + $rule= []; + + if ($method == 'POST') { + $rule = [ + 'contract_obligation_id' => [ + 'required', + new UnderCheck('contract_obligation'), + new ExistCheck('contract_obligation'), + ], + 'depend_contract_id' => [ + 'required', + new UnderCheck('contract'), + new ExistCheck('contract'), + // new ContractObligationContractDependencyCheck($data['contract_obligation_id'] ?? []) + ], + ]; + } + + if ($method == 'DEL') { + $data['id'] = $id; + $rule = [ + 'id' => [new UnderCheck('contract_obligation_contract_dependency'), new ExistCheck('contract_obligation_contract_dependency')], + ]; + } + + $validator = Validator::make($data, $rule, config('error_code')); + + $errors = $validator->errors(); + + if ($validator->fails()) { + $data = General::returnErrorData($errors); + return $data; + } + else { + return (object)['status' => true]; + } + } +} \ No newline at end of file diff --git a/config/constants.php b/config/constants.php index 9eb75fa..d5b731f 100644 --- a/config/constants.php +++ b/config/constants.php @@ -94,7 +94,7 @@ 'accept_service' => 5, ] ], - 'contract_dependency' => [ + 'contract_obligation_contract_dependency' => [ 'status' => [ 'active' => 1, 'delete' => 2, diff --git a/routes/user/api.php b/routes/user/api.php index 5346fa9..6d39083 100644 --- a/routes/user/api.php +++ b/routes/user/api.php @@ -394,5 +394,44 @@ Route::group(['namespace' => 'User', 'prefix' => 'user-backsys/api'], function ( ] ); }); + + // Contract Obligation Contract Dependency + Route::prefix('contract-obligation-contract-dependency')->group(function () { + Route::get('list', + [ + 'as' => 'api.contract-obligation-contract-dependency.list', + 'uses' => 'ContractObligationContractDependencyController@list', + 'middleware' => ['permission:view contract_obligation'] + ] + ); + Route::get('show/{hash_id}', + [ + 'as' => 'api.contract-obligation-contract-dependency.show', + 'uses' => 'ContractObligationContractDependencyController@show', + 'middleware' => ['permission:view contract_obligation'] + ] + ); + Route::post('store', + [ + 'as' => 'api.contract-obligation-contract-dependency.store', + 'uses' => 'ContractObligationContractDependencyController@store', + 'middleware' => ['permission:add contract_obligation'] + ] + ); + Route::put('update/{hash_id}', + [ + 'as' => 'api.contract-obligation-contract-dependency.update', + 'uses' => 'ContractObligationContractDependencyController@update', + 'middleware' => ['permission:edit contract_obligation'] + ] + ); + Route::delete('delete/{hash_id}', + [ + 'as' => 'api.contract-obligation-contract-dependency.delete', + 'uses' => 'ContractObligationContractDependencyController@delete', + 'middleware' => ['permission:delete contract_obligation'] + ] + ); + }); }); }); \ No newline at end of file