diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 9415cfd8aa1a..6e2008bbadff 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -87,8 +87,12 @@ class ActivityController extends BaseController public function downloadHistoricalInvoice(DownloadHistoricalInvoiceRequest $request, Activity $activity) { + $backup = $activity->backup; - $pdf = $this->makePdf(null, null, $activity->backup->html_backup); + if(!$backup || !$backup->html_backup) + return response()->json(['message'=> 'No backup exists for this activity', 'errors' => new \stdClass], 404); + + $pdf = $this->makePdf(null, null, $backup->html_backup); if(isset($activity->invoice_id)) $filename = $activity->invoice->number . ".pdf"; diff --git a/tests/Integration/DownloadHistoricalInvoiceTest.php b/tests/Integration/DownloadHistoricalInvoiceTest.php index 795c05be3581..577cf26fca6f 100644 --- a/tests/Integration/DownloadHistoricalInvoiceTest.php +++ b/tests/Integration/DownloadHistoricalInvoiceTest.php @@ -56,7 +56,6 @@ class DownloadHistoricalInvoiceTest extends TestCase $this->assertNotNull($this->invoice->activities->first()->backup->html_backup); } - public function testBackupDownload() { $this->mockActivity(); @@ -68,4 +67,19 @@ class DownloadHistoricalInvoiceTest extends TestCase $response->assertStatus(200); } + + public function testBackupCheckPriorToDownloadWorks() + { + $this->mockActivity(); + + $backup = $this->invoice->activities->first()->backup; + $backup->forceDelete(); + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token + ])->get('/api/v1/activities/download_invoice/'.$this->encodePrimaryKey($this->invoice->activities->first()->id)); + + $response->assertStatus(404); + } }