mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-05-04 05:05:58 +00:00
auto expiration for upload request
This commit is contained in:
@@ -10,6 +10,7 @@ use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
|||||||
use Support\Scheduler\Actions\DeleteUnverifiedUsersAction;
|
use Support\Scheduler\Actions\DeleteUnverifiedUsersAction;
|
||||||
use Support\Scheduler\Actions\DeleteExpiredShareLinksAction;
|
use Support\Scheduler\Actions\DeleteExpiredShareLinksAction;
|
||||||
use App\Console\Commands\GenerateDemoSubscriptionContentCommand;
|
use App\Console\Commands\GenerateDemoSubscriptionContentCommand;
|
||||||
|
use Support\Scheduler\Actions\ExpireUnfilledUploadRequestAction;
|
||||||
|
|
||||||
class Kernel extends ConsoleKernel
|
class Kernel extends ConsoleKernel
|
||||||
{
|
{
|
||||||
@@ -42,6 +43,10 @@ class Kernel extends ConsoleKernel
|
|||||||
fn () => resolve(DeleteExpiredShareLinksAction::class)()
|
fn () => resolve(DeleteExpiredShareLinksAction::class)()
|
||||||
)->everyTenMinutes();
|
)->everyTenMinutes();
|
||||||
|
|
||||||
|
$schedule->call(
|
||||||
|
fn () => resolve(ExpireUnfilledUploadRequestAction::class)()
|
||||||
|
)->hourly();
|
||||||
|
|
||||||
$schedule->call(
|
$schedule->call(
|
||||||
fn () => resolve(DeleteUnverifiedUsersAction::class)()
|
fn () => resolve(DeleteUnverifiedUsersAction::class)()
|
||||||
)->daily()->at('00:05');
|
)->daily()->at('00:05');
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
namespace Support\Scheduler\Actions;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Domain\UploadRequest\Models\UploadRequest;
|
||||||
|
|
||||||
|
class ExpireUnfilledUploadRequestAction
|
||||||
|
{
|
||||||
|
public function __invoke()
|
||||||
|
{
|
||||||
|
UploadRequest::where('status', 'active')
|
||||||
|
->cursor()
|
||||||
|
->each(function ($uploadRequest) {
|
||||||
|
// Get dates
|
||||||
|
$created_at = Carbon::parse($uploadRequest->created_at);
|
||||||
|
|
||||||
|
// If time was over, then expire record
|
||||||
|
if ($created_at->diffInHours(now()) >= 72) {
|
||||||
|
$uploadRequest->update([
|
||||||
|
'status' => 'expired',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Tests\Domain\UploadRequest;
|
namespace Tests\Domain\UploadRequest;
|
||||||
|
|
||||||
use Storage;
|
use Storage;
|
||||||
@@ -9,6 +8,7 @@ use App\Users\Models\User;
|
|||||||
use Domain\Files\Models\File;
|
use Domain\Files\Models\File;
|
||||||
use Illuminate\Http\UploadedFile;
|
use Illuminate\Http\UploadedFile;
|
||||||
use Domain\UploadRequest\Models\UploadRequest;
|
use Domain\UploadRequest\Models\UploadRequest;
|
||||||
|
use Support\Scheduler\Actions\ExpireUnfilledUploadRequestAction;
|
||||||
use Domain\UploadRequest\Notifications\UploadRequestNotification;
|
use Domain\UploadRequest\Notifications\UploadRequestNotification;
|
||||||
|
|
||||||
class UploadRequestTest extends TestCase
|
class UploadRequestTest extends TestCase
|
||||||
@@ -192,4 +192,22 @@ class UploadRequestTest extends TestCase
|
|||||||
'status' => 'filled',
|
'status' => 'filled',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_mark_upload_request_as_expired_after_72_hours()
|
||||||
|
{
|
||||||
|
UploadRequest::factory()
|
||||||
|
->create([
|
||||||
|
'status' => 'active',
|
||||||
|
'created_at' => now()->subHours(72),
|
||||||
|
]);
|
||||||
|
|
||||||
|
resolve(ExpireUnfilledUploadRequestAction::class)();
|
||||||
|
|
||||||
|
$this->assertDatabaseHas('upload_requests', [
|
||||||
|
'status' => 'expired',
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user