From aa30b519fae134bcd4b91c8e407847eaa645ace0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Wed, 18 May 2022 09:50:21 +0200 Subject: [PATCH] - send notification to native user when file request was sent via email - updated mysql dump --- .env.example | 2 +- config/language-translations.php | 1 + config/vuefilemanager.php | 3 +- .../Notifications/Components/Notification.vue | 14 +++++++++ resources/js/store/modules/uploadRequest.js | 5 +++- .../CreateUploadRequestController.php | 16 +++++++--- .../UploadRequestNotification.php | 18 +++++++---- .../UpgradingVersionsController.php | 7 +++++ .../UploadRequest/UploadRequestTest.php | 30 +++++++++++++++++++ 9 files changed, 84 insertions(+), 12 deletions(-) diff --git a/.env.example b/.env.example index 98a73e3b..fc96ce87 100644 --- a/.env.example +++ b/.env.example @@ -19,7 +19,7 @@ DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD= -DB_MYSQLDUMP_PATH= +DB_MYSQLDUMP_PATH=/usr/bin BROADCAST_DRIVER=null CACHE_DRIVER=file diff --git a/config/language-translations.php b/config/language-translations.php index 3b0ed300..3fe344e4 100644 --- a/config/language-translations.php +++ b/config/language-translations.php @@ -954,5 +954,6 @@ return [ 'remote_download_finished' => 'Remote upload was successfully finished', 'remote_upload_progress' => 'Uploading Remotely - {processed} / {total}', 'remote_upload_failed_count' => 'Failed: {count}', + 'file_request_notify_center_description' => 'Please click on the link below and upload your files for :name.', ], ]; diff --git a/config/vuefilemanager.php b/config/vuefilemanager.php index 58ae7832..580ae9ee 100644 --- a/config/vuefilemanager.php +++ b/config/vuefilemanager.php @@ -1,7 +1,7 @@ '2.1.3', + 'version' => '2.2', 'is_demo' => env('APP_DEMO', false), @@ -69,5 +69,6 @@ return [ '2_0_16', '2_1_1', '2_1_2', + '2_2_0', ], ]; diff --git a/resources/js/components/Notifications/Components/Notification.vue b/resources/js/components/Notifications/Components/Notification.vue index 9bae315a..b895d03d 100644 --- a/resources/js/components/Notifications/Components/Notification.vue +++ b/resources/js/components/Notifications/Components/Notification.vue @@ -82,6 +82,20 @@ + + + + + {{ action.params.button }} + + + diff --git a/resources/js/store/modules/uploadRequest.js b/resources/js/store/modules/uploadRequest.js index ace431e0..4bca2915 100644 --- a/resources/js/store/modules/uploadRequest.js +++ b/resources/js/store/modules/uploadRequest.js @@ -59,7 +59,7 @@ const actions = { .delete(`/api/file-request/${router.currentRoute.params.token}`) .then((response) => { commit('LOADING_STATE', { loading: false, data: [] }) - commit('SET_UPLOAD_REQUEST', response.data) + commit('SET_UPLOAD_REQUEST_AS_FILLED') }) .catch(() => this.$isSomethingWrong()) }, @@ -69,6 +69,9 @@ const mutations = { SET_UPLOAD_REQUEST(state, payload) { state.uploadRequest = payload }, + SET_UPLOAD_REQUEST_AS_FILLED(state) { + state.uploadRequest.data.attributes.status = 'filled' + }, } const getters = { diff --git a/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php b/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php index bc1dc4f7..07f1ed9a 100644 --- a/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php +++ b/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php @@ -1,7 +1,7 @@ uploadRequest()->create([ + $uploadRequest = auth()->user()->uploadRequest()->create([ 'folder_id' => $request->input('folder_id'), 'email' => $request->input('email'), 'notes' => $request->input('notes'), @@ -37,8 +37,16 @@ class CreateUploadRequestController extends Controller // If user type email, notify by email if ($request->has('email')) { - Notification::route('mail', $uploadRequest->email) - ->notify(new UploadRequestNotification($uploadRequest)); + // Check if user exists + $user = User::where('email', $uploadRequest->email) + ->first(); + + if ($user) { + $user->notify(new UploadRequestNotification($uploadRequest)); + } else { + Notification::route('mail', $uploadRequest->email) + ->notify(new UploadRequestNotification($uploadRequest)); + } } return response()->json(new UploadRequestResource($uploadRequest), 201); diff --git a/src/Domain/UploadRequest/Notifications/UploadRequestNotification.php b/src/Domain/UploadRequest/Notifications/UploadRequestNotification.php index 614e2665..422fd2f8 100644 --- a/src/Domain/UploadRequest/Notifications/UploadRequestNotification.php +++ b/src/Domain/UploadRequest/Notifications/UploadRequestNotification.php @@ -29,7 +29,7 @@ class UploadRequestNotification extends Notification implements ShouldQueue */ public function via($notifiable) { - return ['mail']; + return ['mail', 'database', 'broadcast']; } /** @@ -56,13 +56,21 @@ class UploadRequestNotification extends Notification implements ShouldQueue /** * Get the array representation of the notification. - * - * @param mixed $notifiable - * @return array */ - public function toArray($notifiable) + public function toArray(mixed $notifiable): array { return [ + 'category' => 'file-request', + 'title' => __t('file_request_notify_title', ['name' => $this->uploadRequest->user->settings->first_name]), + 'description' => __t('file_request_notify_center_description', ['name' => $this->uploadRequest->user->settings->first_name]), + 'action' => [ + 'type' => 'url', + 'params' => [ + 'target' => 'blank', + 'url' => url("/request/{$this->uploadRequest->id}/upload"), + 'button' => __t('upload_files'), + ], + ], ]; } } diff --git a/src/Support/Upgrading/Controllers/UpgradingVersionsController.php b/src/Support/Upgrading/Controllers/UpgradingVersionsController.php index d5097aea..3af920d9 100644 --- a/src/Support/Upgrading/Controllers/UpgradingVersionsController.php +++ b/src/Support/Upgrading/Controllers/UpgradingVersionsController.php @@ -22,6 +22,13 @@ class UpgradingVersionsController ) { } + public function upgrade_to_2_2_0(): void + { + setEnvironmentValue([ + 'DB_MYSQLDUMP_PATH' => '/usr/bin', + ]); + } + public function upgrade_to_2_1_2(): void { ($this->updateLanguageStrings)([ diff --git a/tests/Domain/UploadRequest/UploadRequestTest.php b/tests/Domain/UploadRequest/UploadRequestTest.php index c7a229d9..02dd62a9 100644 --- a/tests/Domain/UploadRequest/UploadRequestTest.php +++ b/tests/Domain/UploadRequest/UploadRequestTest.php @@ -58,6 +58,36 @@ class UploadRequestTest extends TestCase Notification::assertTimesSent(1, UploadRequestNotification::class); } + /** + * @test + */ + public function user_create_upload_request_with_native_user_email() + { + $user = User::factory() + ->hasSettings() + ->create(); + + $recipient = User::factory() + ->hasSettings() + ->create(); + + $folder = Folder::factory() + ->create([ + 'user_id' => $user->id, + ]); + + $this + ->actingAs($user) + ->postJson('/api/file-request', [ + 'folder_id' => $folder->id, + 'email' => $recipient->email, + 'notes' => 'Please send me your files...', + ]) + ->assertCreated(); + + Notification::assertSentTo($recipient, UploadRequestNotification::class); + } + /** * @test */