From 0f0ae367e3e26aec4a0e5a7cf48f89af989b25e4 Mon Sep 17 00:00:00 2001 From: nocode Date: Mon, 15 Jul 2024 14:19:51 +0700 Subject: [PATCH] New API add Customer --- Modules/Agents/Entities/Customer.php | 18 +++ .../Http/Controllers/AgentActionApi.php | 16 ++- .../Http/Requests/CreateCustomerRequest.php | 62 ++++++++++ Modules/Agents/Routes/api.php | 9 +- Modules/Agents/Services/AgentService.php | 111 ++++++++++++++++++ 5 files changed, 208 insertions(+), 8 deletions(-) create mode 100755 Modules/Agents/Entities/Customer.php create mode 100755 Modules/Agents/Http/Requests/CreateCustomerRequest.php create mode 100644 Modules/Agents/Services/AgentService.php diff --git a/Modules/Agents/Entities/Customer.php b/Modules/Agents/Entities/Customer.php new file mode 100755 index 0000000..c972c14 --- /dev/null +++ b/Modules/Agents/Entities/Customer.php @@ -0,0 +1,18 @@ +agentService = $agentService; + } + public function createCustomer(CreateCustomerRequest $request) + { + $result = $this->agentService->createCustomer($request->all()); + if (!$result['status']) { + return response()->json(['status' => $result['status'], 'msg' => $result['msg']]); + } + return response()->json(['status' => $result['status'], 'msg' => $result['msg']]); } } diff --git a/Modules/Agents/Http/Requests/CreateCustomerRequest.php b/Modules/Agents/Http/Requests/CreateCustomerRequest.php new file mode 100755 index 0000000..321bd77 --- /dev/null +++ b/Modules/Agents/Http/Requests/CreateCustomerRequest.php @@ -0,0 +1,62 @@ + 'required', + 'guest_name' => 'required', + 'phone' => 'required', + 'email' => 'required', + ]; + } + /** + * Get the error messages for the defined validation rules. + * + * @return array + */ + public function messages() + { + return [ + 'agents_code.required' => 'Mã đại lý không được để trống.', + 'guest_name.required' => 'Tên khách hàng không được để trống.', + 'phone.required' => 'SĐT không được để trống.', + 'email.required' => 'Email không được để trống.' + ]; + } + /** + * Handle a failed validation attempt. + * + * @param \Illuminate\Contracts\Validation\Validator $validator + * @return void + * + * @throws \Illuminate\Http\Exceptions\HttpResponseException + */ + protected function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => false, + 'msg' => $validator->errors() + ], 200)); + } + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; + } +} diff --git a/Modules/Agents/Routes/api.php b/Modules/Agents/Routes/api.php index c4cc3ef..ecc1f05 100755 --- a/Modules/Agents/Routes/api.php +++ b/Modules/Agents/Routes/api.php @@ -13,10 +13,7 @@ use Modules\Agents\Http\Controllers\AgentActionApi; | is assigned the "api" middleware group. Enjoy building your API! */ -Route::group( ['middleware' => ['auth:api']], function() { - Route::post('/add_customer', [AgentActionApi::class, 'addCustomer'])->name('agent_add_customer'); +Route::group(['prefix' => 'agent','middleware' => ['auth:api']], function() { + // Route::post('/add_customer', [AgentActionApi::class, 'addCustomer'])->name('agent_add_customer'); }); - -// Route::get('/RP006', function(Request $request){ -// var_dump( $request->bearerToken()); -// })/*->middleware('auth:api')*/; //disable auth middleware to inspect header +Route::post('/agent/add_customer', [AgentActionApi::class, 'createCustomer'])->name('agent_add_customer'); diff --git a/Modules/Agents/Services/AgentService.php b/Modules/Agents/Services/AgentService.php new file mode 100644 index 0000000..6ac3360 --- /dev/null +++ b/Modules/Agents/Services/AgentService.php @@ -0,0 +1,111 @@ +modelCustomer = $modelCustomer; + $this->modelAgent = $modelAgent; + $this->modelAgentUser = $modelAgentUser; + } + + /** + * Summary of createCustomer + * @param array $input + * @return array + */ + public function createCustomer($input) + { + // format data input + $dataInput = $this->formatCreateCustomer($input); + // check agent user with code input + $checkAgentUser = $this->modelAgentUser->where('code', $dataInput['agents_code'])->first(); + + if (empty($checkAgentUser)) { + return array('status' => false, 'msg' => $this->getMessageReturn('no_data_agent')); + } + $agentId = $checkAgentUser->agent_id; + + \DB::beginTransaction(); + try { + $checkHasAgent = $this->modelCustomer->where('agent_id', $agentId)->latest()->first(); + + if (empty($checkHasAgent)) { + $dataInsert = Arr::except($dataInput, ['agents_code']); + $dataInsert['agent_id'] = $agentId; + + $result = $this->modelCustomer->insert($dataInsert); + \DB::commit(); + return ['status' => true, 'msg' => $this->getMessageReturn('success_insert_customer')]; + } + } catch (\Exception $e) { + \DB::rollBack(); + } + return ['status' => false, 'msg' => $this->getMessageReturn('failed_insert')]; + } + + /** + * Summary of formatCreateCustomer + * @param array $data + * @return array + */ + public function formatCreateCustomer($data) + { + $format = []; + if (!empty($data['agents_code'])) { + $format['agents_code'] = $data['agents_code']; + } + if (!empty($data['guest_name'])) { + $format['name'] = $data['guest_name']; + } + if (!empty($data['phone'])) { + $format['phone'] = $data['phone']; + } + if (!empty($data['email'])) { + $format['email'] = $data['email']; + } + if (!empty($data['grade'])) { + $format['grade'] = $data['grade']; + } + if (!empty($data['grade'])) { + $format['grade'] = $data['grade']; + } + if (!empty($data['message'])) { + $format['msg'] = $data['message']; + } + return $format; + } + /** + * Summary of getMessageReturn + * @param mixed $errorKey + * @return array + */ + public function getMessageReturn($errorKey) + { + $msgArr = [ + 'no_data_agent' => 'Đại lý không tồn tại.', + 'success_insert_customer' => 'Thêm khách hàng thành công.', + 'failed_insert' => 'Thêm khách hàng thành công.', + ]; + return $msgArr[$errorKey] ?? "Không có dữ liệu."; + } +} \ No newline at end of file