Company profile update api
This commit is contained in:
parent
d6808a8a41
commit
149845e543
4
app/Http/Requests/API/AccountRequest.php → app/Http/Requests/API/CompanyProfileDocRequest.php
Executable file → Normal file
4
app/Http/Requests/API/AccountRequest.php → app/Http/Requests/API/CompanyProfileDocRequest.php
Executable file → Normal file
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class AccountRequest extends FormRequest
|
||||
class CompanyProfileDocRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
|
|
@ -13,7 +13,7 @@ class AccountRequest extends FormRequest
|
|||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
26
app/Http/Requests/API/ProfileRequest.php → app/Http/Requests/API/CompanyProfileRequest.php
Executable file → Normal file
26
app/Http/Requests/API/ProfileRequest.php → app/Http/Requests/API/CompanyProfileRequest.php
Executable file → Normal file
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ProfileRequest extends FormRequest
|
||||
class CompanyProfileRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
|
|
@ -23,29 +23,6 @@ public function authorize()
|
|||
*/
|
||||
public function rules()
|
||||
{
|
||||
$type = $this->get('account_type');
|
||||
if ($type == "business") {
|
||||
$rules = $this->businessRules();
|
||||
}
|
||||
else{
|
||||
$rules = $this->companyRules();
|
||||
}
|
||||
return $rules;
|
||||
}
|
||||
|
||||
private function businessRules(){
|
||||
return [
|
||||
'name' => 'required',
|
||||
'surname' => 'required',
|
||||
'patronomic_name' => 'required',
|
||||
'date_of_birth' => 'required',
|
||||
'birth_place' => 'required',
|
||||
'citizenship_id' => 'required',
|
||||
'registration_address' => 'required'
|
||||
];
|
||||
}
|
||||
|
||||
private function companyRules(){
|
||||
return [
|
||||
'name' => 'required',
|
||||
'short_name' => 'required',
|
||||
|
|
@ -62,4 +39,5 @@ private function companyRules(){
|
|||
'is_agent' => 'required'
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -8,57 +8,25 @@
|
|||
use App\Models\Business;
|
||||
|
||||
|
||||
class BusinessProfile implements ProfileTypeService
|
||||
class BusinessProfile extends Profile 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
|
||||
public function createProfile(array $data)
|
||||
{
|
||||
$account = new BusinessProfile();
|
||||
|
||||
return $account->fill($data);
|
||||
return Business::create($data);
|
||||
}
|
||||
|
||||
public function validateRequest()
|
||||
{
|
||||
$validateConfig = request('_config')['request_type'];
|
||||
|
||||
$this->request = $this->form[$validateConfig]::createFrom(request());
|
||||
|
||||
$this->request->validate( $this->request->rules());
|
||||
public function resource($profile) : BusinessProfileResource{
|
||||
return new BusinessProfileResource($profile);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,37 +2,29 @@
|
|||
|
||||
namespace App\ProfileTypes;
|
||||
|
||||
use App\Http\Requests\API\CompanyProfileDocRequest;
|
||||
use App\Http\Requests\API\CompanyProfileRequest;
|
||||
use App\Http\Resources\CompanyProfileResource;
|
||||
use App\Models\Company;
|
||||
|
||||
class CompanyProfile implements ProfileTypeService
|
||||
class CompanyProfile extends Profile implements ProfileTypeService
|
||||
{
|
||||
protected $fileds = [
|
||||
'profile' => [],
|
||||
'document' => []
|
||||
];// for fields that doesn need validation
|
||||
|
||||
public function create(array $data) : ProfileTypeService
|
||||
{
|
||||
$account = new CompanyProfile();
|
||||
public $form = [
|
||||
'profile' => CompanyProfileRequest::class,
|
||||
'document' => CompanyProfileDocRequest::class
|
||||
];
|
||||
|
||||
return $account->fill($data);
|
||||
public function createProfile(array $data){
|
||||
return Company::create($data);
|
||||
}
|
||||
|
||||
public function validateRequest($form)
|
||||
{
|
||||
$this->request = $form::createFrom(request());
|
||||
// dd($request);
|
||||
$this->request->validate( $this->request->rules());
|
||||
}
|
||||
|
||||
public function updateProfileInfo(Company $profile)
|
||||
{
|
||||
//todo update company profile info
|
||||
}
|
||||
|
||||
public function updateProfileDocInfo(Company $profile){
|
||||
request()->validate([
|
||||
|
||||
|
||||
]);
|
||||
//todo validate request
|
||||
//todo update company profile doc info
|
||||
public function resource($profile){
|
||||
return new CompanyProfileResource($profile);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
namespace App\ProfileTypes;
|
||||
|
||||
use App\Http\Resources\BusinessProfileResource;
|
||||
use App\Models\Business;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
abstract class Profile
|
||||
{
|
||||
protected $request;
|
||||
protected $fileds = [];
|
||||
public $form = [];
|
||||
|
||||
abstract function createProfile(array $data);
|
||||
abstract function resource($profile);
|
||||
|
||||
public function validateRequest()
|
||||
{
|
||||
$validateConfig = request('_config')['request_type'];
|
||||
|
||||
$this->request = $this->form[$validateConfig]::createFrom(request());
|
||||
|
||||
$this->request->validate( $this->request->rules());
|
||||
}
|
||||
|
||||
public function updateProfile($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 = $this->create($profileData);
|
||||
|
||||
$account = Auth::user()->account;
|
||||
|
||||
$profile->account()->associate($account)->save();
|
||||
}
|
||||
|
||||
return $this->resource($profile);
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,5 @@
|
|||
namespace App\ProfileTypes;
|
||||
interface ProfileTypeService
|
||||
{
|
||||
public function create(array $data) : ProfileTypeService;
|
||||
public function validateRequest();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue