+
@@ -23,6 +24,7 @@
diff --git a/resources/js/views/Platform.vue b/resources/js/views/Platform.vue
index 299a6216..644590a6 100644
--- a/resources/js/views/Platform.vue
+++ b/resources/js/views/Platform.vue
@@ -14,6 +14,7 @@
+
@@ -76,10 +77,12 @@ import DragUI from '../components/FilesView/DragUI'
import InfoSidebar from '../components/FilesView/InfoSidebar'
import { events } from '../bus'
import { mapGetters } from 'vuex'
+import CreateUploadRequestPopup from "../components/Others/CreateUploadRequestPopup";
export default {
name: 'Platform',
components: {
+ CreateUploadRequestPopup,
CreateTeamFolderPopup,
PanelNavigationFiles,
EditTeamFolderPopup,
diff --git a/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php b/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php
index d2489fa2..b35d5671 100644
--- a/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php
+++ b/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php
@@ -5,13 +5,13 @@ namespace Domain\UploadRequest\Controllers;
use App\Http\Controllers\Controller;
use Auth;
use Domain\UploadRequest\Notifications\UploadRequestNotification;
+use Domain\UploadRequest\Requests\StoreUploadRequest;
use Domain\UploadRequest\Resources\UploadRequestResource;
-use Illuminate\Http\Request;
use Notification;
class CreateUploadRequestController extends Controller
{
- public function __invoke(Request $request)
+ public function __invoke(StoreUploadRequest $request)
{
$uploadRequest = Auth::user()->uploadRequest()->create([
'folder_id' => $request->input('folder_id'),
@@ -19,8 +19,11 @@ class CreateUploadRequestController extends Controller
'notes' => $request->input('notes'),
]);
- Notification::route('mail', $uploadRequest->email)
- ->notify(new UploadRequestNotification($uploadRequest));
+ // If user type email, notify by email
+ if ($uploadRequest->email) {
+ Notification::route('mail', $uploadRequest->email)
+ ->notify(new UploadRequestNotification($uploadRequest));
+ }
return response(new UploadRequestResource($uploadRequest), 201);
}
diff --git a/src/Domain/UploadRequest/Notifications/UploadRequestNotification.php b/src/Domain/UploadRequest/Notifications/UploadRequestNotification.php
index 805bad4a..5bf8fe5a 100644
--- a/src/Domain/UploadRequest/Notifications/UploadRequestNotification.php
+++ b/src/Domain/UploadRequest/Notifications/UploadRequestNotification.php
@@ -45,7 +45,7 @@ class UploadRequestNotification extends Notification implements ShouldQueue
->subject("{$this->uploadRequest->user->settings->first_name} Request You for File Upload")
->greeting('Hello')
->line("We are emailing you because {$this->uploadRequest->user->settings->first_name} needs files from you. Please click on the link below and upload your files for {$this->uploadRequest->user->settings->first_name}.")
- ->action('Upload Files', url('/'))
+ ->action('Upload Files', url("/request/{$this->uploadRequest->id}/upload"))
->line('Thank you for using our application!');
}
diff --git a/src/Domain/UploadRequest/Requests/StoreUploadRequest.php b/src/Domain/UploadRequest/Requests/StoreUploadRequest.php
new file mode 100644
index 00000000..7487bcf1
--- /dev/null
+++ b/src/Domain/UploadRequest/Requests/StoreUploadRequest.php
@@ -0,0 +1,32 @@
+ 'sometimes|string',
+ 'notes' => 'sometimes|string',
+ 'folder_id' => 'required|string',
+ ];
+ }
+}
diff --git a/src/Domain/UploadRequest/Resources/UploadRequestResource.php b/src/Domain/UploadRequest/Resources/UploadRequestResource.php
index 70e69dbf..f644f827 100644
--- a/src/Domain/UploadRequest/Resources/UploadRequestResource.php
+++ b/src/Domain/UploadRequest/Resources/UploadRequestResource.php
@@ -1,4 +1,5 @@
$this->id,
'type' => 'upload-request',
'attributes' => [
- 'folder_id' => $this->folder_id,
- 'status' => $this->status,
- 'email' => $this->email,
- 'notes' => $this->notes,
+ 'folder_id' => $this->folder_id,
+ 'status' => $this->status,
+ 'email' => $this->email,
+ 'notes' => $this->notes,
+ 'url' => url("/request/$this->id/upload"),
],
'relationships' => [
'user' => [
'data' => [
- 'id' => $this->user->id,
- 'type' => 'user',
+ 'id' => $this->user->id,
+ 'type' => 'user',
'attributes' => [
'name' => $this->user->settings->name,
'avatar' => $this->user->settings->avatar,
diff --git a/tests/Domain/Admin/DashboardTest.php b/tests/Domain/Admin/DashboardTest.php
index 75df9da0..6c40e08a 100644
--- a/tests/Domain/Admin/DashboardTest.php
+++ b/tests/Domain/Admin/DashboardTest.php
@@ -25,9 +25,10 @@ class DashboardTest extends TestCase
->assertStatus(200)
->assertExactJson([
'app' => [
- 'earnings' => '$0.00',
- 'license' => 'extended',
- 'version' => config('vuefilemanager.version'),
+ 'earnings' => '$0.00',
+ 'isRunningCron' => false,
+ 'license' => 'extended',
+ 'version' => config('vuefilemanager.version'),
],
'disk' => [
'download' => [
diff --git a/tests/Domain/UploadRequest/UploadRequestTest.php b/tests/Domain/UploadRequest/UploadRequestTest.php
index 0cdb41de..ba285999 100644
--- a/tests/Domain/UploadRequest/UploadRequestTest.php
+++ b/tests/Domain/UploadRequest/UploadRequestTest.php
@@ -24,7 +24,7 @@ class UploadRequestTest extends TestCase
/**
* @test
*/
- public function user_create_upload_request()
+ public function user_create_upload_request_with_email()
{
$user = User::factory()
->hasSettings()
@@ -48,6 +48,32 @@ class UploadRequestTest extends TestCase
Notification::assertTimesSent(1, UploadRequestNotification::class);
}
+ /**
+ * @test
+ */
+ public function user_create_upload_request_without_email()
+ {
+ $user = User::factory()
+ ->hasSettings()
+ ->create();
+
+ $this
+ ->actingAs($user)
+ ->postJson("/api/upload-request", [
+ 'folder_id' => '00cacdb9-1d09-4a32-8ad7-c0d45d66b758',
+ 'notes' => 'Please send me your files...',
+ ])
+ ->assertCreated();
+
+ $this->assertDatabasehas('upload_requests', [
+ 'folder_id' => '00cacdb9-1d09-4a32-8ad7-c0d45d66b758',
+ 'notes' => 'Please send me your files...',
+ 'email' => null,
+ ]);
+
+ Notification::assertNothingSent();
+ }
+
/**
* @test
*/