From 8ff3c91930d13af1073ec14b43137ae3dc36d6e1 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 11 Sep 2023 11:22:10 +1000 Subject: [PATCH] Add inline logo option --- app/Http/Controllers/CompanyController.php | 15 +++++++++++++++ routes/api.php | 1 + tests/Feature/CompanyTest.php | 19 +++++++++++++++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index 016485535bc0..ede5c1b92d21 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -697,4 +697,19 @@ class CompanyController extends BaseController return $this->itemResponse($company->fresh()); } + + public function logo() + { + + /** @var \App\Models\User $user */ + $user = auth()->user(); + $company = $user->company(); + $logo = strlen($company->settings->company_logo) > 5 ? $company->settings->company_logo : 'https://pdf.invoicing.co/favicon-v2.png'; + $headers = ['Content-Disposition' => 'inline']; + + return response()->streamDownload(function () use ($logo){ + echo @file_get_contents($logo); + }, 'logo.png', $headers); + + } } diff --git a/routes/api.php b/routes/api.php index 3ce1fdc1737e..ae2521300da8 100644 --- a/routes/api.php +++ b/routes/api.php @@ -177,6 +177,7 @@ Route::group(['middleware' => ['throttle:api', 'api_db', 'token_auth', 'locale'] Route::post('companies/purge_save_settings/{company}', [MigrationController::class, 'purgeCompanySaveSettings'])->middleware('password_protected'); Route::resource('companies', CompanyController::class); // name = (companies. index / create / show / update / destroy / edit + Route::post('companies/{company}/logo', [CompanyController::class, 'logo']); Route::put('companies/{company}/upload', [CompanyController::class, 'upload']); Route::post('companies/{company}/default', [CompanyController::class, 'default']); Route::post('companies/updateOriginTaxData/{company}', [CompanyController::class, 'updateOriginTaxData'])->middleware('throttle:3,1'); diff --git a/tests/Feature/CompanyTest.php b/tests/Feature/CompanyTest.php index 6d0fefbc2bf1..c3be4dfc2694 100644 --- a/tests/Feature/CompanyTest.php +++ b/tests/Feature/CompanyTest.php @@ -34,6 +34,8 @@ class CompanyTest extends TestCase use MockAccountData; use DatabaseTransactions; + public $faker; + protected function setUp() :void { parent::setUp(); @@ -47,6 +49,19 @@ class CompanyTest extends TestCase $this->makeTestData(); } + + public function testCompanyLogoInline() + { + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->postJson("/api/v1/companies/{$this->company->hashed_id}/logo"); + + $response->assertStatus(200); + $response->streamedContent(); + + } + public function testUpdateCompanyPropertyInvoiceTaskHours() { $company_update = [ @@ -56,9 +71,9 @@ class CompanyTest extends TestCase $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'), 'X-API-TOKEN' => $this->token, - ])->putJson('/api/v1/companies/'.$this->encodePrimaryKey($this->company->id), $company_update) - ->assertStatus(200); + ])->putJson('/api/v1/companies/'.$this->encodePrimaryKey($this->company->id), $company_update); + $response->assertStatus(200); $arr = $response->json();