diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index 25800eae7ecd..c40b349d5b21 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -15,6 +15,7 @@ use App\DataMapper\Analytics\AccountDeleted; use App\DataMapper\CompanySettings; use App\DataMapper\DefaultSettings; use App\Http\Requests\Company\CreateCompanyRequest; +use App\Http\Requests\Company\DefaultCompanyRequest; use App\Http\Requests\Company\DestroyCompanyRequest; use App\Http\Requests\Company\EditCompanyRequest; use App\Http\Requests\Company\ShowCompanyRequest; @@ -598,8 +599,66 @@ class CompanyController extends BaseController } - // public function default(DefaultCompanyRequest $request, Company $company) - // { - - // } +/** + * Update the specified resource in storage. + * + * @param UploadCompanyRequest $request + * @param Company $client + * @return Response + * + * + * + * @OA\Post( + * path="/api/v1/companies/{company}/default", + * operationId="setDefaultCompany", + * tags={"companies"}, + * summary="Sets the company as the default company.", + * description="Sets the company as the default company.", + * @OA\Parameter(ref="#/components/parameters/X-Api-Secret"), + * @OA\Parameter(ref="#/components/parameters/X-Api-Token"), + * @OA\Parameter(ref="#/components/parameters/X-Requested-With"), + * @OA\Parameter(ref="#/components/parameters/include"), + * @OA\Parameter( + * name="company", + * in="path", + * description="The Company Hashed ID", + * example="D2J234DFA", + * required=true, + * @OA\Schema( + * type="string", + * format="string", + * ), + * ), + * @OA\Response( + * response=200, + * description="Returns the company object", + * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"), + * @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"), + * @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"), + * @OA\JsonContent(ref="#/components/schemas/Company"), + * ), + * @OA\Response( + * response=422, + * description="Validation error", + * @OA\JsonContent(ref="#/components/schemas/ValidationError"), + * + * ), + * @OA\Response( + * response="default", + * description="Unexpected Error", + * @OA\JsonContent(ref="#/components/schemas/Error"), + * ), + * ) + */ + public function default(DefaultCompanyRequest $request, Company $company) + { + + $account = $company->account; + $account->default_company_id = $company->id; + $account->save(); + + return $this->itemResponse($company->fresh()); + + } + } diff --git a/app/Http/Requests/Company/DefaultCompanyRequest.php b/app/Http/Requests/Company/DefaultCompanyRequest.php new file mode 100644 index 000000000000..7e5a1f349f6b --- /dev/null +++ b/app/Http/Requests/Company/DefaultCompanyRequest.php @@ -0,0 +1,36 @@ +user()->isAdmin() + } + + public function rules() + { + + $rules = []; + + return $rules; + + } +} diff --git a/app/Listeners/Quote/QuoteApprovedWebhook.php b/app/Listeners/Quote/QuoteApprovedWebhook.php new file mode 100644 index 000000000000..a15ad3e7582e --- /dev/null +++ b/app/Listeners/Quote/QuoteApprovedWebhook.php @@ -0,0 +1,47 @@ +company->db); + + $quote = $event->quote; + + $subscriptions = Webhook::where('company_id', $quote->company_id) + ->where('event_id', Webhook::EVENT_APPROVE_QUOTE) + ->exists(); + + if ($subscriptions) { + WebhookHandler::dispatch(Webhook::EVENT_APPROVE_QUOTE, $quote, $quote->company); + } + + } +} diff --git a/routes/api.php b/routes/api.php index 0eceb6ef2aba..80a66092d997 100644 --- a/routes/api.php +++ b/routes/api.php @@ -51,6 +51,7 @@ Route::group(['middleware' => ['api_db', 'token_auth', 'locale'], 'prefix' => 'a Route::resource('companies', 'CompanyController'); // name = (companies. index / create / show / update / destroy / edit Route::put('companies/{company}/upload', 'CompanyController@upload'); + Route::post('companies/{company}/default', 'CompanyController@default'); Route::get('company_ledger', 'CompanyLedgerController@index')->name('company_ledger.index');