From 664e70e8d47c9e23e65b534acfddc5b5fdee3075 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 12 Jun 2023 21:12:33 +1000 Subject: [PATCH] Clean up for company controller --- app/Http/Controllers/CompanyController.php | 28 +++++++++++++++------- app/Repositories/CompanyRepository.php | 16 +++++++++++-- app/Utils/Ninja.php | 11 +++++++++ 3 files changed, 44 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index aff67f98cb0a..deb83c0f7e44 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -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 diff --git a/app/Repositories/CompanyRepository.php b/app/Repositories/CompanyRepository.php index f6a0b7aeac94..7a9f8a1af6cf 100644 --- a/app/Repositories/CompanyRepository.php +++ b/app/Repositories/CompanyRepository.php @@ -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); } @@ -45,7 +51,13 @@ class CompanyRepository extends BaseRepository return $company; } - + + /** + * parseCustomFields + * + * @param array $fields + * @return array + */ private function parseCustomFields($fields) :array { foreach ($fields as &$value) { diff --git a/app/Utils/Ninja.php b/app/Utils/Ninja.php index a858276eda0f..e51965839b88 100644 --- a/app/Utils/Ninja.php +++ b/app/Utils/Ninja.php @@ -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();