parent
e14410f9a5
commit
0f0ae367e3
5 changed files with 208 additions and 8 deletions
@ -0,0 +1,18 @@ |
||||
<?php |
||||
|
||||
namespace Modules\Agents\Entities; |
||||
|
||||
use Illuminate\Database\Eloquent\Model; |
||||
use Illuminate\Database\Eloquent\Factories\HasFactory; |
||||
|
||||
class Customer extends Model |
||||
{ |
||||
use HasFactory; |
||||
protected $table = 'se_customers'; |
||||
protected $fillable = ['id', 'name', 'phone', 'email', 'grade', 'msg', 'agent_id', 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at']; |
||||
|
||||
// protected static function newFactory() |
||||
// { |
||||
// return \Modules\Agents\Database\factories\CustomerFactory::new(); |
||||
// } |
||||
} |
@ -0,0 +1,62 @@ |
||||
<?php |
||||
|
||||
namespace Modules\Agents\Http\Requests; |
||||
|
||||
use Illuminate\Foundation\Http\FormRequest; |
||||
use Illuminate\Contracts\Validation\Validator; |
||||
use Illuminate\Http\Exceptions\HttpResponseException; |
||||
class CreateCustomerRequest extends FormRequest |
||||
{ |
||||
/** |
||||
* Get the validation rules that apply to the request. |
||||
* |
||||
* @return array |
||||
*/ |
||||
public function rules() |
||||
{ |
||||
return [ |
||||
'agents_code' => '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; |
||||
} |
||||
} |
@ -0,0 +1,111 @@ |
||||
<?php |
||||
namespace Modules\Agents\Services; |
||||
|
||||
use Illuminate\Support\Arr; |
||||
use Modules\Agents\Entities\Customer; |
||||
use App\Models\Agent; |
||||
use App\Models\AgentUser; |
||||
|
||||
class AgentService |
||||
{ |
||||
protected $modelCustomer; |
||||
protected $modelAgent; |
||||
protected $modelAgentUser; |
||||
|
||||
/** |
||||
* Summary of __construct |
||||
* @param \Modules\Agents\Entities\Customer $modelCustomer |
||||
* @param \App\Models\Agent $modelAgent |
||||
* @param \App\Models\AgentUser $modelAgentUser |
||||
*/ |
||||
public function __construct( |
||||
Customer $modelCustomer, |
||||
Agent $modelAgent, |
||||
AgentUser $modelAgentUser |
||||
) { |
||||
$this->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."; |
||||
} |
||||
} |
Loading…
Reference in new issue