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

View File

@ -12,6 +12,7 @@
namespace App\Repositories; namespace App\Repositories;
use App\Models\Company; use App\Models\Company;
use App\Utils\Ninja;
/** /**
* CompanyRepository. * CompanyRepository.
@ -31,12 +32,17 @@ class CompanyRepository extends BaseRepository
*/ */
public function save(array $data, Company $company) : ?Company public function save(array $data, Company $company) : ?Company
{ {
if (isset($data['custom_fields']) && is_array($data['custom_fields'])) { if (isset($data['custom_fields']) && is_array($data['custom_fields'])) {
$data['custom_fields'] = $this->parseCustomFields($data['custom_fields']); $data['custom_fields'] = $this->parseCustomFields($data['custom_fields']);
} }
$company->fill($data); $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)) { if (array_key_exists('settings', $data)) {
$company->saveSettings($data['settings'], $company); $company->saveSettings($data['settings'], $company);
} }
@ -45,7 +51,13 @@ class CompanyRepository extends BaseRepository
return $company; return $company;
} }
/**
* parseCustomFields
*
* @param array $fields
* @return array
*/
private function parseCustomFields($fields) :array private function parseCustomFields($fields) :array
{ {
foreach ($fields as &$value) { foreach ($fields as &$value) {

View File

@ -12,6 +12,7 @@
namespace App\Utils; namespace App\Utils;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
/** /**
* Class Ninja. * Class Ninja.
@ -152,6 +153,16 @@ class Ninja
return $translations; 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) public function createLicense($request)
{ {
// $affiliate = Affiliate::where('affiliate_key', '=', SELF_HOST_AFFILIATE_KEY)->first(); // $affiliate = Affiliate::where('affiliate_key', '=', SELF_HOST_AFFILIATE_KEY)->first();