From 45dcdcce16f8d87443dc6e98e53d1e283a368f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Thu, 24 Feb 2022 10:43:35 +0100 Subject: [PATCH] added email notification about fulfilling upload request --- resources/js/store/modules/uploadRequest.js | 2 +- .../js/views/FileView/UploadRequestFiles.vue | 9 ++- .../SetUploadRequestAsFilledController.php | 4 ++ .../UploadRequest/Models/UploadRequest.php | 5 ++ .../UploadRequestFulfilledNotification.php | 63 +++++++++++++++++++ .../UploadRequest/UploadRequestTest.php | 3 + 6 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 src/Domain/UploadRequest/Notifications/UploadRequestFulfilledNotification.php diff --git a/resources/js/store/modules/uploadRequest.js b/resources/js/store/modules/uploadRequest.js index e4dd941f..eeafcef7 100644 --- a/resources/js/store/modules/uploadRequest.js +++ b/resources/js/store/modules/uploadRequest.js @@ -42,7 +42,7 @@ const actions = { resolve(response) // Stop loading spinner - if (response.data.data.attributes.status === 'active') + if (['active', 'filled', 'expired'].includes(response.data.data.attributes.status) ) commit('LOADING_STATE', { loading: false, data: [] }) commit('SET_UPLOAD_REQUEST', response.data) diff --git a/resources/js/views/FileView/UploadRequestFiles.vue b/resources/js/views/FileView/UploadRequestFiles.vue index 9a147698..ef90e091 100644 --- a/resources/js/views/FileView/UploadRequestFiles.vue +++ b/resources/js/views/FileView/UploadRequestFiles.vue @@ -194,11 +194,14 @@ export default { isFolder() { return this.item && this.item.data.type === 'folder' }, + userName() { + return this.uploadRequest.data.relationships.user.data.attributes.name + }, emptyPageTitle() { // Todo: add name into translation return { - active: this.$t('{name} Request You for File Upload', {name: this.uploadRequest.data.relationships.user.data.attributes.name}), - filled: this.$t('Upload Request for {name} was Fulfilled Successfully', {name: this.uploadRequest.data.relationships.user.data.attributes.name}), + active: this.$t('{name} Request You for File Upload', {name: this.userName}), + filled: this.$t('Upload Request for {name} was Fulfilled Successfully', {name: this.userName}), expired: this.$t('Upload Request Expired'), }[this.uploadRequest.data.attributes.status] }, @@ -218,7 +221,7 @@ export default { methods: { uploadingDone() { events.$emit('confirm:open', { - title: this.$t('Are you sure you uploaded all files you want for {name}?', {name: this.uploadRequest.data.relationships.user.data.attributes.name}), + title: this.$t('Are you sure you uploaded all files you want for {name}?', {name: this.userName}), message: this.$t("You won't be able to upload any files here once again."), action: { id: this.$router.currentRoute.params.token, diff --git a/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php b/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php index c334e389..1de4feac 100644 --- a/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php +++ b/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php @@ -1,6 +1,7 @@ 'filled', ]); + // Send user notification + $uploadRequest->user->notify(new UploadRequestFulfilledNotification($uploadRequest)); + return response(new UploadRequestResource($uploadRequest), 201); } } diff --git a/src/Domain/UploadRequest/Models/UploadRequest.php b/src/Domain/UploadRequest/Models/UploadRequest.php index c26a4d35..2bd7c4d1 100644 --- a/src/Domain/UploadRequest/Models/UploadRequest.php +++ b/src/Domain/UploadRequest/Models/UploadRequest.php @@ -49,6 +49,11 @@ class UploadRequest extends Model return $this->hasOne(Folder::class, 'id', 'id'); } + public function parent(): HasOne + { + return $this->hasOne(Folder::class, 'id', 'folder_id'); + } + protected static function boot() { parent::boot(); diff --git a/src/Domain/UploadRequest/Notifications/UploadRequestFulfilledNotification.php b/src/Domain/UploadRequest/Notifications/UploadRequestFulfilledNotification.php new file mode 100644 index 00000000..cdf38084 --- /dev/null +++ b/src/Domain/UploadRequest/Notifications/UploadRequestFulfilledNotification.php @@ -0,0 +1,63 @@ +subject("Your file request was fulfilled in your '{$this->uploadRequest->parent->name}' folder") + ->greeting('Hello') + ->line("We are emailing you because your file request was fulfilled. Please click on the link below to show uploaded files.") + ->action('Show Files', url("/platform/files/{$this->uploadRequest->id}")) + ->line('Thank you for using our application!'); + } + + /** + * Get the array representation of the notification. + * + * @param mixed $notifiable + * @return array + */ + public function toArray($notifiable) + { + return [ + ]; + } +} diff --git a/tests/Domain/UploadRequest/UploadRequestTest.php b/tests/Domain/UploadRequest/UploadRequestTest.php index 07632a5d..ca8e3c27 100644 --- a/tests/Domain/UploadRequest/UploadRequestTest.php +++ b/tests/Domain/UploadRequest/UploadRequestTest.php @@ -1,6 +1,7 @@ $uploadRequest->id, 'status' => 'filled', ]); + + Notification::assertSentTo($user, UploadRequestFulfilledNotification::class); } /**