update company profile
This commit is contained in:
parent
d72a554164
commit
76551f4638
|
|
@ -3,8 +3,9 @@
|
|||
namespace App\Http\Controllers\API;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\BankAccountRequest;
|
||||
use App\Http\Requests\ContactsRequest;
|
||||
use App\Http\Requests\API\BankAccountRequest;
|
||||
use App\Http\Requests\API\ContactsRequest;
|
||||
use App\Http\Requests\API\DocumentRequest;
|
||||
use App\Http\Resources\AccountResource;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
|
|
@ -31,13 +32,12 @@ public function account(Request $request)
|
|||
|
||||
public function storeContacts(ContactsRequest $request){
|
||||
|
||||
$account = Account::with('profile')->find($request->user()->account_id);
|
||||
$contacts = $request->only(array_keys($request->rules()));
|
||||
|
||||
$data['contacts'] = json_encode($request->all());
|
||||
$account->fill($data)->save();
|
||||
$this->account->fill(['contacts' => json_encode($contacts)]);
|
||||
|
||||
if(!empty($account)){
|
||||
return AccountResource::make($account);
|
||||
if($this->account->save()){
|
||||
return AccountResource::make($this->account);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
|
|
@ -48,13 +48,11 @@ public function storeContacts(ContactsRequest $request){
|
|||
|
||||
public function storeBankAccount(BankAccountRequest $request){
|
||||
|
||||
$account = Account::with('profile')->find($request->user()->account_id);
|
||||
$bank = $request->only(array_keys($request->rules()));
|
||||
$this->account->fill(['bank' => json_encode($bank)]);
|
||||
|
||||
$data['bank'] = json_encode($request->all());
|
||||
$account->fill($data)->save();
|
||||
|
||||
if(!empty($account)){
|
||||
return AccountResource::make($account);
|
||||
if($this->account->save()){
|
||||
return AccountResource::make($this->account);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
|
|
@ -63,60 +61,22 @@ public function storeBankAccount(BankAccountRequest $request){
|
|||
|
||||
}
|
||||
|
||||
public function storePersonal(DocumentRequest $request){
|
||||
$account = Account::with('profile')->find($request->user()->account_id);
|
||||
|
||||
$data['document'] = json_encode($request->all());
|
||||
|
||||
$account->profile()->fill($data);
|
||||
$account->profile()->save();
|
||||
|
||||
return AccountResource::make($account);
|
||||
}
|
||||
|
||||
public function storeProfileInfo()
|
||||
public function storeProfile()
|
||||
{
|
||||
//Profile type using Strategy pattern
|
||||
$type = config('account.'.$this->account->type.'.class');
|
||||
|
||||
$profileStrategy = new $type;
|
||||
|
||||
return $profileStrategy->updateProfileInfo($this->account->profile);
|
||||
$profileStrategy->validateRequest();
|
||||
|
||||
}
|
||||
|
||||
public function storeProfileDocInfo(Request $request){
|
||||
//Profile type using Strategy pattern
|
||||
$type = config('account.'.$this->account->type.'.class');
|
||||
|
||||
$profileStrategy = new $type;
|
||||
|
||||
return $profileStrategy->updateProfileDocInfo($this->account->profile);
|
||||
}
|
||||
|
||||
public function storeProfile(ProfileRequest $request){
|
||||
$account = Account::with('profile')->find($request->user()->account_id);
|
||||
|
||||
if(!empty($account)){
|
||||
if($account->type == 'business'){
|
||||
$data['personal'] = $request->all();
|
||||
$profile = new Business($data);
|
||||
$account->profile = $profile;
|
||||
$account->save;
|
||||
$profile->save();
|
||||
}
|
||||
else{
|
||||
$profile = new Company($request->all());
|
||||
$account->profile = $profile;
|
||||
$account->save;
|
||||
$profile->save();
|
||||
}
|
||||
return AccountResource::make($account);
|
||||
if($profile = $profileStrategy->updateProfile($this->account->profile)){
|
||||
return $profile;
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'message'=> trans('app.account.not_found')
|
||||
],404 );
|
||||
return response()->json(['message' => trans('app.account.profile.update-error')],400);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\API;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class BusinessProfileDocRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\API;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class BusinessProfileRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required',
|
||||
'surname' => 'required',
|
||||
'patronomic_name' => 'required',
|
||||
'date_of_birth' => 'required',
|
||||
'birth_place' => 'required',
|
||||
'citizenship_id' => 'required',
|
||||
'registration_address' => 'required'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -2,11 +2,25 @@
|
|||
|
||||
namespace App\ProfileTypes;
|
||||
|
||||
use App\Http\Requests\API\BusinessProfileDocRequest;
|
||||
use App\Http\Requests\API\BusinessProfileRequest;
|
||||
use App\Http\Resources\BusinessProfileResource;
|
||||
use App\Models\Business;
|
||||
|
||||
|
||||
class BusinessProfile implements ProfileTypeService
|
||||
{
|
||||
protected $fileds = [
|
||||
'profile' => [],
|
||||
'document' => []
|
||||
];// for fields that doesn need validation
|
||||
|
||||
protected $request;
|
||||
|
||||
public $form = [
|
||||
'profile' => BusinessProfileRequest::class,
|
||||
'document' => BusinessProfileDocRequest::class
|
||||
];
|
||||
|
||||
public function create(array $data) : ProfileTypeService
|
||||
{
|
||||
|
|
@ -15,15 +29,36 @@ public function create(array $data) : ProfileTypeService
|
|||
return $account->fill($data);
|
||||
}
|
||||
|
||||
public function updateProfileInfo(Business $profile) {
|
||||
//todo validate request
|
||||
//todo updae business profile onfo
|
||||
//todo return responce
|
||||
public function validateRequest()
|
||||
{
|
||||
$validateConfig = request('_config')['request_type'];
|
||||
|
||||
$this->request = $this->form[$validateConfig]::createFrom(request());
|
||||
|
||||
$this->request->validate( $this->request->rules());
|
||||
}
|
||||
|
||||
public function updateProfileDocInfo(Business $profile){
|
||||
//todo validate request
|
||||
//todo updae business profile doc info
|
||||
//todo return responce
|
||||
public function updateProfile(Business $profile)
|
||||
{
|
||||
$config = request('_config')['request_type'];
|
||||
|
||||
$profileDataKeys = array_merge($this->fileds[$config],array_keys($this->request->rules()));
|
||||
|
||||
$profileData = request()->only($profileDataKeys);
|
||||
|
||||
if($profile != null)
|
||||
{
|
||||
$profile->fill($profileData)->save();
|
||||
}
|
||||
else
|
||||
{
|
||||
$profile = Business::create($profileData);
|
||||
|
||||
$account = request()->user()->account;
|
||||
|
||||
$profile->account()->associate($account)->save();
|
||||
}
|
||||
|
||||
return BusinessProfileResource::make($profile);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,16 +6,7 @@
|
|||
|
||||
class CompanyProfile implements ProfileTypeService
|
||||
{
|
||||
protected $profile_fields = [
|
||||
'name',
|
||||
'short_name',
|
||||
'organizational_form',
|
||||
'registration_number',
|
||||
'registration_date',
|
||||
'state_registration_agency',
|
||||
'registration_place',
|
||||
'registration_address'
|
||||
];
|
||||
|
||||
public function create(array $data) : ProfileTypeService
|
||||
{
|
||||
$account = new CompanyProfile();
|
||||
|
|
@ -23,19 +14,16 @@ public function create(array $data) : ProfileTypeService
|
|||
return $account->fill($data);
|
||||
}
|
||||
|
||||
public function updateProfileInfo(Company $profile) {
|
||||
request()->validate([
|
||||
'name' => 'required',
|
||||
'short_name' => 'required',
|
||||
'organizational_form' => 'required',
|
||||
'registration_number' => 'required',
|
||||
'registration_date' => 'required',
|
||||
'state_registration_agency' => 'required',
|
||||
'registration_place' => 'required',
|
||||
'registration_address' => 'required',
|
||||
]);
|
||||
public function validateRequest($form)
|
||||
{
|
||||
$this->request = $form::createFrom(request());
|
||||
// dd($request);
|
||||
$this->request->validate( $this->request->rules());
|
||||
}
|
||||
|
||||
$profile->fill(request()->only($this->profile_fields));
|
||||
public function updateProfileInfo(Company $profile)
|
||||
{
|
||||
//todo update company profile info
|
||||
}
|
||||
|
||||
public function updateProfileDocInfo(Company $profile){
|
||||
|
|
|
|||
|
|
@ -3,4 +3,5 @@
|
|||
interface ProfileTypeService
|
||||
{
|
||||
public function create(array $data) : ProfileTypeService;
|
||||
public function validateRequest();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
Route::post('/forgot-password', [AuthController::class, 'sendPasswordResetLinkEmail']);
|
||||
Route::post('/verify-email', [AuthController::class, 'verifyEmail']);
|
||||
Route::get('/countries', [ResourceController::class, 'countries']);
|
||||
|
||||
// Route::post('/prof',[AccountController::class,'storeProfileInfo']);
|
||||
Route::middleware(['auth.client','auth:api'])->group(function () {
|
||||
/**
|
||||
* Client endpoints
|
||||
|
|
@ -35,7 +35,14 @@
|
|||
Route::get('/',[AccountController::class, 'account']);
|
||||
Route::put('contacts',[AccountController::class,'storeContacts']);
|
||||
Route::put('bank',[AccountController::class,'storeBankAccount']);
|
||||
Route::put('business-profile',[AccountController::class,'storeProfile']);
|
||||
|
||||
Route::put('business-profile',[AccountController::class,'storeProfile'])->defaults('_config',[
|
||||
'request_type' => 'profile'
|
||||
]);
|
||||
Route::put('business-profile-doc',[AccountController::class,'storeProfile'])->defaults('_config',[
|
||||
'request_type' => 'document'
|
||||
]);
|
||||
|
||||
Route::put('company-profile',[AccountController::class,'storeProfile']);
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue