From 6feadfd188ad9ea72beacdb34b0dfa2224678580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Tue, 22 Feb 2022 11:53:51 +0100 Subject: [PATCH] auto expiration for upload request --- src/App/Console/Kernel.php | 5 ++++ .../ExpireUnfilledUploadRequestAction.php | 25 +++++++++++++++++++ .../UploadRequest/UploadRequestTest.php | 20 ++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/Support/Scheduler/Actions/ExpireUnfilledUploadRequestAction.php diff --git a/src/App/Console/Kernel.php b/src/App/Console/Kernel.php index 97d3668f..93503b38 100644 --- a/src/App/Console/Kernel.php +++ b/src/App/Console/Kernel.php @@ -10,6 +10,7 @@ use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use Support\Scheduler\Actions\DeleteUnverifiedUsersAction; use Support\Scheduler\Actions\DeleteExpiredShareLinksAction; use App\Console\Commands\GenerateDemoSubscriptionContentCommand; +use Support\Scheduler\Actions\ExpireUnfilledUploadRequestAction; class Kernel extends ConsoleKernel { @@ -42,6 +43,10 @@ class Kernel extends ConsoleKernel fn () => resolve(DeleteExpiredShareLinksAction::class)() )->everyTenMinutes(); + $schedule->call( + fn () => resolve(ExpireUnfilledUploadRequestAction::class)() + )->hourly(); + $schedule->call( fn () => resolve(DeleteUnverifiedUsersAction::class)() )->daily()->at('00:05'); diff --git a/src/Support/Scheduler/Actions/ExpireUnfilledUploadRequestAction.php b/src/Support/Scheduler/Actions/ExpireUnfilledUploadRequestAction.php new file mode 100644 index 00000000..4501f8b8 --- /dev/null +++ b/src/Support/Scheduler/Actions/ExpireUnfilledUploadRequestAction.php @@ -0,0 +1,25 @@ +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', + ]); + } + }); + } +} diff --git a/tests/Domain/UploadRequest/UploadRequestTest.php b/tests/Domain/UploadRequest/UploadRequestTest.php index 3fd61487..a590d64f 100644 --- a/tests/Domain/UploadRequest/UploadRequestTest.php +++ b/tests/Domain/UploadRequest/UploadRequestTest.php @@ -1,5 +1,4 @@ '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', + ]); + } }