diff --git a/app/Http/Controllers/Oasis/InvoiceController.php b/app/Http/Controllers/Oasis/InvoiceController.php
index a975884f..a2ceb5e9 100644
--- a/app/Http/Controllers/Oasis/InvoiceController.php
+++ b/app/Http/Controllers/Oasis/InvoiceController.php
@@ -9,6 +9,7 @@ use App\Http\Resources\Oasis\OasisInvoiceResource;
use App\Models\Oasis\Client;
use App\Models\Oasis\Invoice;
use App\Notifications\Oasis\InvoiceDeliveryNotification;
+use App\Notifications\SharedSendViaEmail;
use Auth;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
@@ -96,12 +97,13 @@ class InvoiceController extends Controller
->setPaper('a4')
->setOrientation('portrait')
->save(
- storage_path("/app/files/{$request->user()->id}/invoice-{$invoice->id}.pdf")
+ storage_path("app/files/{$request->user()->id}/invoice-{$invoice->id}.pdf")
);
if ($request->send_invoice && $invoice->client['email']) {
- Notification::route('mail', $invoice->client['email'])
- ->notify(new InvoiceDeliveryNotification($request->user()));
+ Notification::route('mail', $invoice->client['email'])->notify(
+ new InvoiceDeliveryNotification($request->user(), $invoice)
+ );
}
return response(
diff --git a/app/Http/custom-helpers.php b/app/Http/custom-helpers.php
index 7f325a3c..39dafe83 100644
--- a/app/Http/custom-helpers.php
+++ b/app/Http/custom-helpers.php
@@ -15,19 +15,30 @@ function is_route($name)
* @param $filepath
* @return string
*/
-function get_storage_path($filepath)
+function base64_from_storage_image($filepath)
{
if (is_null($filepath)) {
return null;
}
- if (! Storage::exists($filepath)) {
+ if (!Storage::exists($filepath)) {
return null;
}
return 'data:' . Storage::mimeType($filepath) . ';base64,' . base64_encode(Storage::get($filepath));
}
+/**
+ * Return invoice path to storage
+ *
+ * @param $invoice
+ * @return string
+ */
+function invoice_path($invoice)
+{
+ return "files/{$invoice->user_id}/invoice-{$invoice->id}.pdf";
+}
+
/**
* Get only tax for single invoice item
*
diff --git a/app/Notifications/Oasis/InvoiceDeliveryNotification.php b/app/Notifications/Oasis/InvoiceDeliveryNotification.php
index 39ccb61c..35127d43 100644
--- a/app/Notifications/Oasis/InvoiceDeliveryNotification.php
+++ b/app/Notifications/Oasis/InvoiceDeliveryNotification.php
@@ -2,6 +2,7 @@
namespace App\Notifications\Oasis;
+use App\Models\Oasis\Invoice;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
@@ -11,14 +12,19 @@ class InvoiceDeliveryNotification extends Notification
{
use Queueable;
+ private $invoice;
+ private $user;
+
/**
* Create a new notification instance.
*
* @param $user
+ * @param $invoice
*/
- public function __construct($user)
+ public function __construct($user, $invoice)
{
$this->user = $user;
+ $this->invoice = $invoice;
}
/**
@@ -44,7 +50,11 @@ class InvoiceDeliveryNotification extends Notification
->subject('New invoice')
->greeting(__t('mail_greeting'))
->line($this->user->settings->name . ' sent you an invoice.')
- ->salutation(__t('mail_salutation'));
+ ->salutation(__t('mail_salutation'))
+ ->attach(storage_path("app/" . invoice_path($this->invoice)), [
+ 'as' => 'name.pdf',
+ 'mime' => 'application/pdf',
+ ]);
}
/**
diff --git a/resources/views/oasis/invoices/invoice.blade.php b/resources/views/oasis/invoices/invoice.blade.php
index 2fda723e..d8bd0349 100644
--- a/resources/views/oasis/invoices/invoice.blade.php
+++ b/resources/views/oasis/invoices/invoice.blade.php
@@ -28,7 +28,7 @@
{{--TODO: klientske logo--}}
-
 }})
+
{{ $user->email }}
{{ $user->settings->phone_number }}
diff --git a/tests/Feature/Oasis/OasisInvoiceTest.php b/tests/Feature/Oasis/OasisInvoiceTest.php
index 0260a4ff..b2eb41b5 100644
--- a/tests/Feature/Oasis/OasisInvoiceTest.php
+++ b/tests/Feature/Oasis/OasisInvoiceTest.php
@@ -4,6 +4,7 @@ namespace Tests\Feature\Oasis;
use App\Models\Oasis\Client;
use App\Notifications\Oasis\InvoiceDeliveryNotification;
+use PDF;
use Carbon\Carbon;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use App\Models\Oasis\Invoice;
@@ -123,7 +124,7 @@ class OasisInvoiceTest extends TestCase
[
'description' => 'Test 1',
'amount' => 1,
- 'tax_rate' => 20,
+ 'tax_rate' => 0,
'price' => 200,
],
]
@@ -204,8 +205,8 @@ class OasisInvoiceTest extends TestCase
public function user_create_new_invoice_with_storing_new_client()
{
Notification::fake();
- //Storage::fake('local');
- //PDF::fake();
+ Storage::fake('local');
+ PDF::fake();
$avatar = UploadedFile::fake()
->image('fake-image.jpg');
@@ -235,7 +236,6 @@ class OasisInvoiceTest extends TestCase
'delivery_at' => Carbon::now()->addWeek(),
'store_client' => true,
'send_invoice' => true,
-
'client' => 'others',
'client_avatar' => $avatar,
'client_name' => 'VueFileManager Inc.',
@@ -268,10 +268,7 @@ class OasisInvoiceTest extends TestCase
Client::first()->getRawOriginal('avatar')
);
- Storage::disk('local')
- ->assertExists(
- 'files/' . $user->id . '/invoice-' . Invoice::first()->id . '.pdf'
- );
+ PDF::assertFileNameIs(storage_path("app/" . invoice_path(Invoice::first())));
Notification::assertTimesSent(1, InvoiceDeliveryNotification::class);
}
@@ -282,6 +279,7 @@ class OasisInvoiceTest extends TestCase
public function user_create_new_invoice_with_storing_new_client_without_avatar_and_mail()
{
Notification::fake();
+ PDF::fake();
$user = User::factory(User::class)
->create(['role' => 'user']);
@@ -324,6 +322,8 @@ class OasisInvoiceTest extends TestCase
'name' => 'VueFileManager Inc.',
]);
+ PDF::assertFileNameIs(storage_path("app/" . invoice_path(Invoice::first())));
+
Notification::assertNothingSent();
}
@@ -333,6 +333,7 @@ class OasisInvoiceTest extends TestCase
public function user_create_new_invoice_without_storing_client_without_avatar_and_mail()
{
Notification::fake();
+ PDF::fake();
$user = User::factory(User::class)
->create(['role' => 'user']);
@@ -376,6 +377,8 @@ class OasisInvoiceTest extends TestCase
'name' => 'VueFileManager Inc.',
]);
+ PDF::assertFileNameIs(storage_path("app/" . invoice_path(Invoice::first())));
+
Notification::assertNothingSent();
}
@@ -385,6 +388,7 @@ class OasisInvoiceTest extends TestCase
public function user_create_new_invoice_without_storing_client()
{
Notification::fake();
+ PDF::fake();
$user = User::factory(User::class)
->create(['role' => 'user']);
@@ -427,6 +431,8 @@ class OasisInvoiceTest extends TestCase
'email' => 'howdy@hi5ve.digital',
]);
+ PDF::assertFileNameIs(storage_path("app/" . invoice_path(Invoice::first())));
+
Notification::assertTimesSent(1, InvoiceDeliveryNotification::class);
}
@@ -436,6 +442,7 @@ class OasisInvoiceTest extends TestCase
public function user_create_new_invoice_with_existing_client()
{
Notification::fake();
+ PDF::fake();
$user = User::factory(User::class)
->create(['role' => 'user']);
@@ -468,6 +475,8 @@ class OasisInvoiceTest extends TestCase
'items' => json_encode($this->items),
]);
+ PDF::assertFileNameIs(storage_path("app/" . invoice_path(Invoice::first())));
+
Notification::assertTimesSent(1, InvoiceDeliveryNotification::class);
}