+
+
+ v-if="uploadRequest.data.attributes.status !== 'expired'"
+ :member="uploadRequest.data.relationships.user"
+ class="absolute -bottom-2.5 -right-2"
+ :is-border="true"
+ :size="32"
+ />
- {{ $t('Jane Request You for File Upload') }}
+ {{ emptyPageTitle }}
- {{
- $t(
- 'Your files will be uploaded automatically and after that, you can organize your files in folders.'
- )
- }}
+ {{ emptyPageDescription }}
-
+
+
{{ $t('empty_page.call_to_action') }}
@@ -146,51 +144,65 @@ import FileBrowser from '../../components/FilesView/FileBrowser'
import ContextMenu from '../../components/FilesView/ContextMenu'
import OptionGroup from '../../components/FilesView/OptionGroup'
import Option from '../../components/FilesView/Option'
-import { events } from '../../bus'
-import { mapGetters } from 'vuex'
+import {events} from '../../bus'
+import {mapGetters} from 'vuex'
export default {
- name: 'Files',
- components: {
- MobileMultiSelectToolbar,
- MobileActionButton,
- FileActionsMobile,
- MobileContextMenu,
- MobileCreateMenu,
- EmptyFilePage,
- VueFolderIcon,
- ToolbarButton,
- MemberAvatar,
- ButtonUpload,
- OptionUpload,
- OptionGroup,
- FileBrowser,
- ContextMenu,
- Option,
- },
- computed: {
- ...mapGetters(['fastPreview', 'clipboard', 'config', 'user', 'entries', 'uploadRequest']),
- isFolder() {
- return this.item && this.item.data.type === 'folder'
- },
- },
- data() {
- return {
- item: undefined,
- }
- },
- methods: {
- createFolder() {
- events.$emit('popup:open', { name: 'create-folder' })
- },
- },
- created() {
+ name: 'Files',
+ components: {
+ MobileMultiSelectToolbar,
+ MobileActionButton,
+ FileActionsMobile,
+ MobileContextMenu,
+ MobileCreateMenu,
+ EmptyFilePage,
+ VueFolderIcon,
+ ToolbarButton,
+ MemberAvatar,
+ ButtonUpload,
+ OptionUpload,
+ OptionGroup,
+ FileBrowser,
+ ContextMenu,
+ Option,
+ },
+ computed: {
+ ...mapGetters(['fastPreview', 'clipboard', 'config', 'user', 'entries', 'uploadRequest']),
+ isFolder() {
+ return this.item && this.item.data.type === 'folder'
+ },
+ emptyPageTitle() {
+ // Todo: add name into translation
+ return {
+ active: this.$t('Jane Request You for File Upload'),
+ filled: this.$t('Upload Request was Fulfilled Successfully'),
+ expired: this.$t('Upload Request Expired'),
+ }[this.uploadRequest.data.attributes.status]
+ },
+ emptyPageDescription() {
+ return {
+ active: this.$t('Your files will be uploaded automatically and after that, you can organize your files in folders.'),
+ filled: this.$t('This upload request is no longer available for uploading files.'),
+ expired: this.$t('This upload request is no longer available for uploading files.'),
+ }[this.uploadRequest.data.attributes.status]
+ }
+ },
+ data() {
+ return {
+ item: undefined,
+ }
+ },
+ methods: {
+ createFolder() {
+ events.$emit('popup:open', {name: 'create-folder'})
+ },
+ },
+ created() {
events.$on('context-menu:show', (event, item) => (this.item = item))
events.$on('context-menu:current-folder', (folder) => (this.item = folder))
events.$on('mobile-context-menu:show', (item) => (this.item = item))
- this.$store.dispatch('getUploadRequestDetail')
-
- },
+ this.$store.dispatch('getUploadRequestDetail')
+ },
}
diff --git a/resources/js/views/UploadRequest.vue b/resources/js/views/UploadRequest.vue
index 73326d23..d21243fd 100644
--- a/resources/js/views/UploadRequest.vue
+++ b/resources/js/views/UploadRequest.vue
@@ -4,6 +4,8 @@
+
+
@@ -42,6 +44,7 @@ import FileSortingMobile from '../components/FilesView/FileSortingMobile'
import FileFilterMobile from '../components/FilesView/FileFilterMobile'
import CreateFolderPopup from '../components/Others/CreateFolderPopup'
import DesktopToolbar from '../components/FilesView/DesktopToolbar'
+import ConfirmPopup from "../components/Others/Popup/ConfirmPopup"
import RenameItemPopup from '../components/Others/RenameItemPopup'
import MobileToolbar from '../components/FilesView/MobileToolbar'
import FilePreview from '../components/FilePreview/FilePreview'
@@ -55,6 +58,7 @@ import { events } from '../bus'
export default {
name: 'UploadRequest',
components: {
+ ConfirmPopup,
DesktopUploadRequestToolbar,
CreateFolderPopup,
FileSortingMobile,
@@ -85,6 +89,11 @@ export default {
// TODO: new scaledown effect
events.$on('mobile-menu:show', () => (this.isScaledDown = true))
events.$on('mobile-menu:hide', () => (this.isScaledDown = false))
+
+ events.$on('action:confirmed', (data) => {
+ if (data.operation === 'close-upload-request')
+ this.$store.dispatch('closeUploadRequest')
+ })
},
}
diff --git a/routes/upload-request.php b/routes/upload-request.php
index 2d47a2e1..91cec0b5 100644
--- a/routes/upload-request.php
+++ b/routes/upload-request.php
@@ -2,10 +2,12 @@
use Domain\UploadRequest\Controllers\GetUploadRequestController;
use Domain\UploadRequest\Controllers\CreateUploadRequestController;
+use Domain\UploadRequest\Controllers\SetUploadRequestAsFilledController;
use Domain\UploadRequest\Controllers\UploadFilesForUploadRequestController;
Route::get('/{uploadRequest}', GetUploadRequestController::class);
-Route::post('/{uploadRequest}', UploadFilesForUploadRequestController::class);
+Route::delete('/{uploadRequest}', SetUploadRequestAsFilledController::class);
+Route::post('/{uploadRequest}/upload', UploadFilesForUploadRequestController::class);
Route::group(['middleware' => ['auth:sanctum']], function () {
Route::post('/', CreateUploadRequestController::class);
diff --git a/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php b/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php
new file mode 100644
index 00000000..7036da9e
--- /dev/null
+++ b/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php
@@ -0,0 +1,21 @@
+update([
+ 'status' => 'filled',
+ ]);
+
+ return response(new UploadRequestResource($uploadRequest), 201);
+ }
+}
\ No newline at end of file
diff --git a/src/Domain/UploadRequest/Resources/UploadRequestResource.php b/src/Domain/UploadRequest/Resources/UploadRequestResource.php
index 56d97612..d2134177 100644
--- a/src/Domain/UploadRequest/Resources/UploadRequestResource.php
+++ b/src/Domain/UploadRequest/Resources/UploadRequestResource.php
@@ -28,7 +28,7 @@ class UploadRequestResource extends JsonResource
'id' => $this->user->id,
'type' => 'user',
'attributes' => [
- 'name' => $this->user->settings->name,
+ 'name' => $this->user->settings->first_name,
'avatar' => $this->user->settings->avatar,
],
],
diff --git a/tests/Domain/UploadRequest/UploadRequestTest.php b/tests/Domain/UploadRequest/UploadRequestTest.php
index 06f63cba..3fd61487 100644
--- a/tests/Domain/UploadRequest/UploadRequestTest.php
+++ b/tests/Domain/UploadRequest/UploadRequestTest.php
@@ -1,4 +1,5 @@
create('fake-file.pdf', 12000000, 'application/pdf');
$this
- ->postJson("/api/upload-request/$uploadRequest->id", [
+ ->postJson("/api/upload-request/$uploadRequest->id/upload", [
'filename' => $file->name,
'file' => $file,
'parent_id' => null,
@@ -159,7 +160,7 @@ class UploadRequestTest extends TestCase
->create('fake-file.pdf', 12000000, 'application/pdf');
$this
- ->postJson("/api/upload-request/$uploadRequest->id", [
+ ->postJson("/api/upload-request/$uploadRequest->id/upload", [
'filename' => $file->name,
'file' => $file,
'parent_id' => null,
@@ -167,4 +168,28 @@ class UploadRequestTest extends TestCase
'is_last' => 'true',
])->assertStatus(410);
}
+
+ /**
+ * @test
+ */
+ public function it_mark_upload_request_as_filled()
+ {
+ $user = User::factory()
+ ->hasSettings()
+ ->create();
+
+ $uploadRequest = UploadRequest::factory()
+ ->create([
+ 'status' => 'active',
+ 'user_id' => $user->id,
+ ]);
+
+ $this
+ ->deleteJson("/api/upload-request/$uploadRequest->id")
+ ->assertStatus(201)
+ ->assertJsonFragment([
+ 'id' => $uploadRequest->id,
+ 'status' => 'filled',
+ ]);
+ }
}