Clean up for company controller

This commit is contained in:
David Bomba 2023-06-12 21:12:33 +10:00
parent 2571f5eb79
commit 664e70e8d4
3 changed files with 44 additions and 11 deletions

View File

@ -87,7 +87,7 @@ class CompanyController extends BaseController
* summary="Gets a list of companies",
* description="Lists companies, search and filters allow fine grained lists to be generated.
Query parameters can be added to performed more fine grained filtering of the companies, these are handled by the CompanyFilters class which defines the methods available",
* Query parameters can be added to performed more fine grained filtering of the companies, these are handled by the CompanyFilters class which defines the methods available",
* @OA\Parameter(ref="#/components/parameters/X-API-TOKEN"),
* @OA\Parameter(ref="#/components/parameters/X-Requested-With"),
* @OA\Parameter(ref="#/components/parameters/include"),
@ -114,7 +114,10 @@ class CompanyController extends BaseController
*/
public function index()
{
$companies = Company::whereAccountId(auth()->user()->company()->account->id);
/** @var \App\Models\User $user */
$user = auth()->user();
$companies = Company::whereAccountId($user->company()->account->id);
return $this->listResponse($companies);
}
@ -159,8 +162,12 @@ class CompanyController extends BaseController
*/
public function create(CreateCompanyRequest $request)
{
$cf = new \App\Factory\CompanyFactory;
$company = $cf->create(auth()->user()->company()->account->id);
/** @var \App\Models\User $user */
$user = auth()->user();
$company_factory = new \App\Factory\CompanyFactory;
$company = $company_factory->create($user->company()->account->id);
return $this->itemResponse($company);
}
@ -206,15 +213,18 @@ class CompanyController extends BaseController
{
$this->forced_includes = ['company_user'];
$company = (new CreateCompany($request->all(), auth()->user()->company()->account))->handle();
(new CreateCompanyPaymentTerms($company, auth()->user()))->handle();
(new CreateCompanyTaskStatuses($company, auth()->user()))->handle();
/** @var \App\Models\User $user */
$user = auth()->user();
$company = (new CreateCompany($request->all(), $user->company()->account))->handle();
(new CreateCompanyPaymentTerms($company, $user))->handle();
(new CreateCompanyTaskStatuses($company, $user))->handle();
$company = $this->company_repo->save($request->all(), $company);
$this->uploadLogo($request->file('company_logo'), $company, $company);
auth()->user()->companies()->attach($company->id, [
$user->companies()->attach($company->id, [
'account_id' => $company->account->id,
'is_owner' => 1,
'is_admin' => 1,
@ -231,7 +241,7 @@ class CompanyController extends BaseController
/*
* Required dependencies
*/
auth()->user()->setCompany($company);
$user->setCompany($company);
/*
* Create token

View File

@ -12,6 +12,7 @@
namespace App\Repositories;
use App\Models\Company;
use App\Utils\Ninja;
/**
* CompanyRepository.
@ -31,12 +32,17 @@ class CompanyRepository extends BaseRepository
*/
public function save(array $data, Company $company) : ?Company
{
if (isset($data['custom_fields']) && is_array($data['custom_fields'])) {
$data['custom_fields'] = $this->parseCustomFields($data['custom_fields']);
}
$company->fill($data);
if(Ninja::isHosted() && $company->isDirty('is_disabled') && !$company->is_disabled) {
Ninja::triggerForwarding($company->company_key, $company->owner()->email);
}
if (array_key_exists('settings', $data)) {
$company->saveSettings($data['settings'], $company);
}
@ -46,6 +52,12 @@ class CompanyRepository extends BaseRepository
return $company;
}
/**
* parseCustomFields
*
* @param array $fields
* @return array
*/
private function parseCustomFields($fields) :array
{
foreach ($fields as &$value) {

View File

@ -12,6 +12,7 @@
namespace App\Utils;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
/**
* Class Ninja.
@ -152,6 +153,16 @@ class Ninja
return $translations;
}
public static function triggerForwarding(string $company_key, string $email)
{
Http::withHeaders([
'X-API-HOSTED-SECRET' => config('ninja.ninja_hosted_secret'),
])->post(config('ninja.license_url').'/api/v1/enable_forwarding', [
'company_key' => $company_key,
'email' => $email,
]);
}
public function createLicense($request)
{
// $affiliate = Affiliate::where('affiliate_key', '=', SELF_HOST_AFFILIATE_KEY)->first();