From afb8323541b83244850cdab8c6a67b0f325e51a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Fri, 17 Dec 2021 10:44:50 +0100 Subject: [PATCH] set/update/delete billing alert --- public/mix-manifest.json | 91 ++++++++++- .../components/Others/Popup/ConfirmPopup.vue | 11 +- .../js/views/User/MeteredSubscription.vue | 150 +++++++++++++++++- .../Console/Commands/SetupDevEnvironment.php | 16 +- src/App/Console/Kernel.php | 2 +- .../Actions/FormatUsageEstimatesAction.php | 6 +- src/App/Users/Resources/UserResource.php | 17 +- src/Domain/Traffic/Models/Traffic.php | 2 +- .../Scheduler/Actions/ReportUsageAction.php | 5 +- tests/App/Users/UserSubscriptionTest.php | 77 +++++---- tests/Domain/Teams/TeamLimitsTest.php | 8 +- tests/Domain/Traffic/TrafficTest.php | 5 +- tests/Support/Scheduler/SchedulerTest.php | 13 +- 13 files changed, 307 insertions(+), 96 deletions(-) diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 62b6ef8d..3ba18844 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -12,7 +12,7 @@ "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js?id=e2d818009a4e2c1fffdf", "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js?id=510e6c1b1017a73a40a6", "/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=917aab9de16d3eb7039a", - "/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=5655107fc94a22804c92", + "/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=817867c331fb3943f0ff", "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=8e89d2271b17b2d78177", "/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=0d6c4be667e46ea1303e", "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=6035ca411b2c4239d964", @@ -74,7 +74,7 @@ "/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=093cc2fd918ee6a340d3", "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=75172fe522988795ec59", "/chunks/settings-storage~chunks/settings-subscription~chunks/user-storage~chunks/user-subscription.js": "/chunks/settings-storage~chunks/settings-subscription~chunks/user-storage~chunks/user-subscription.js?id=147afaac8c8bacfe6433", - "/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=241cee35aba1f607aa40", + "/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=fd11a9ee3772ed65553a", "/chunks/settings~chunks/settings-password.js": "/chunks/settings~chunks/settings-password.js?id=c33cd2341b9b04a732e5", "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=651d5accf401908724c5", "/chunks/shared.js": "/chunks/shared.js?id=6230d050545cd1bd9b87", @@ -1271,5 +1271,90 @@ "/chunks/settings-subscription.12fa902b3a9391e8d538.hot-update.js": "/chunks/settings-subscription.12fa902b3a9391e8d538.hot-update.js", "/chunks/settings-subscription.453191d7a9558d27b6be.hot-update.js": "/chunks/settings-subscription.453191d7a9558d27b6be.hot-update.js", "/chunks/settings-subscription.e6a599a3de8030a1289e.hot-update.js": "/chunks/settings-subscription.e6a599a3de8030a1289e.hot-update.js", - "/chunks/settings-subscription.68f33a64d80e06da6b44.hot-update.js": "/chunks/settings-subscription.68f33a64d80e06da6b44.hot-update.js" + "/chunks/settings-subscription.68f33a64d80e06da6b44.hot-update.js": "/chunks/settings-subscription.68f33a64d80e06da6b44.hot-update.js", + "/chunks/settings-subscription.75d1e47080c718f5c11f.hot-update.js": "/chunks/settings-subscription.75d1e47080c718f5c11f.hot-update.js", + "/chunks/settings-subscription.b8d308a387c5d684b379.hot-update.js": "/chunks/settings-subscription.b8d308a387c5d684b379.hot-update.js", + "/chunks/settings-subscription.5330149512bc437f25f1.hot-update.js": "/chunks/settings-subscription.5330149512bc437f25f1.hot-update.js", + "/chunks/settings-subscription.00b21e7f04a33eb1c503.hot-update.js": "/chunks/settings-subscription.00b21e7f04a33eb1c503.hot-update.js", + "/chunks/settings-subscription.0b264871513fb1d73206.hot-update.js": "/chunks/settings-subscription.0b264871513fb1d73206.hot-update.js", + "/chunks/settings-subscription.bcf4533771c62d9fd16a.hot-update.js": "/chunks/settings-subscription.bcf4533771c62d9fd16a.hot-update.js", + "/chunks/settings-subscription.36037d1a7d0c90cd341a.hot-update.js": "/chunks/settings-subscription.36037d1a7d0c90cd341a.hot-update.js", + "/chunks/settings-subscription.31689e82aa4699d1c0dc.hot-update.js": "/chunks/settings-subscription.31689e82aa4699d1c0dc.hot-update.js", + "/chunks/settings-subscription.1bcfed1e451c646fe1fb.hot-update.js": "/chunks/settings-subscription.1bcfed1e451c646fe1fb.hot-update.js", + "/chunks/settings-subscription.f04bb668d8b2c3ef9264.hot-update.js": "/chunks/settings-subscription.f04bb668d8b2c3ef9264.hot-update.js", + "/chunks/settings-subscription.9ca1ce700ca5e7a1dbe9.hot-update.js": "/chunks/settings-subscription.9ca1ce700ca5e7a1dbe9.hot-update.js", + "/chunks/settings-subscription.526de4a1ce27fb4a2cce.hot-update.js": "/chunks/settings-subscription.526de4a1ce27fb4a2cce.hot-update.js", + "/chunks/settings-subscription.bc25afc8968f81320095.hot-update.js": "/chunks/settings-subscription.bc25afc8968f81320095.hot-update.js", + "/chunks/settings-subscription.e23fa4c520ab101f24d5.hot-update.js": "/chunks/settings-subscription.e23fa4c520ab101f24d5.hot-update.js", + "/chunks/settings-subscription.8a0f4255c7fa63385c62.hot-update.js": "/chunks/settings-subscription.8a0f4255c7fa63385c62.hot-update.js", + "/chunks/settings-subscription.bc70448b8297a4b4116b.hot-update.js": "/chunks/settings-subscription.bc70448b8297a4b4116b.hot-update.js", + "/chunks/settings-subscription.a16bc54fb1805267f9b7.hot-update.js": "/chunks/settings-subscription.a16bc54fb1805267f9b7.hot-update.js", + "/chunks/settings-subscription.e0e102c34647846495e4.hot-update.js": "/chunks/settings-subscription.e0e102c34647846495e4.hot-update.js", + "/chunks/settings-subscription.937aec696f674f7f7922.hot-update.js": "/chunks/settings-subscription.937aec696f674f7f7922.hot-update.js", + "/chunks/settings-subscription.0588d28ca27ede122376.hot-update.js": "/chunks/settings-subscription.0588d28ca27ede122376.hot-update.js", + "/chunks/settings-subscription.e609fececfe97e329ce3.hot-update.js": "/chunks/settings-subscription.e609fececfe97e329ce3.hot-update.js", + "/chunks/settings-subscription.b3738f9237cfc23e50ca.hot-update.js": "/chunks/settings-subscription.b3738f9237cfc23e50ca.hot-update.js", + "/chunks/settings-subscription.bfdf95e39b2f70f5f2df.hot-update.js": "/chunks/settings-subscription.bfdf95e39b2f70f5f2df.hot-update.js", + "/chunks/settings-subscription.0eb72c8eac9037e2be9d.hot-update.js": "/chunks/settings-subscription.0eb72c8eac9037e2be9d.hot-update.js", + "/chunks/settings-subscription.f2c87a95f59825b525a7.hot-update.js": "/chunks/settings-subscription.f2c87a95f59825b525a7.hot-update.js", + "/chunks/settings-subscription.9308d274ec11a27280ad.hot-update.js": "/chunks/settings-subscription.9308d274ec11a27280ad.hot-update.js", + "/chunks/settings-subscription.08977856a4f422f6a4dd.hot-update.js": "/chunks/settings-subscription.08977856a4f422f6a4dd.hot-update.js", + "/chunks/settings-subscription.26f5bebc944065de1631.hot-update.js": "/chunks/settings-subscription.26f5bebc944065de1631.hot-update.js", + "/chunks/settings-subscription.57c84cbf855b9dd5ed8d.hot-update.js": "/chunks/settings-subscription.57c84cbf855b9dd5ed8d.hot-update.js", + "/chunks/settings-subscription.65a2a21e5afd1be11e14.hot-update.js": "/chunks/settings-subscription.65a2a21e5afd1be11e14.hot-update.js", + "/chunks/settings-subscription.b7ea0663f32eeaa1e1da.hot-update.js": "/chunks/settings-subscription.b7ea0663f32eeaa1e1da.hot-update.js", + "/chunks/settings-subscription.04fe701e2ab3ba497d13.hot-update.js": "/chunks/settings-subscription.04fe701e2ab3ba497d13.hot-update.js", + "/chunks/settings-subscription.be7fea7ce548b624cf6e.hot-update.js": "/chunks/settings-subscription.be7fea7ce548b624cf6e.hot-update.js", + "/chunks/settings-subscription.d86a7827277949b83fb3.hot-update.js": "/chunks/settings-subscription.d86a7827277949b83fb3.hot-update.js", + "/chunks/settings-subscription.bdd71e8a4ee52be9583e.hot-update.js": "/chunks/settings-subscription.bdd71e8a4ee52be9583e.hot-update.js", + "/chunks/settings-subscription.91ee9cb9581de7f5f6bc.hot-update.js": "/chunks/settings-subscription.91ee9cb9581de7f5f6bc.hot-update.js", + "/chunks/settings-subscription.ce2d6cc25fe318378926.hot-update.js": "/chunks/settings-subscription.ce2d6cc25fe318378926.hot-update.js", + "/chunks/settings-subscription.56b35b4f2d6e1904b552.hot-update.js": "/chunks/settings-subscription.56b35b4f2d6e1904b552.hot-update.js", + "/chunks/settings-subscription.e666778354e6b7f10221.hot-update.js": "/chunks/settings-subscription.e666778354e6b7f10221.hot-update.js", + "/chunks/settings-subscription.92de11067ad098c7c53c.hot-update.js": "/chunks/settings-subscription.92de11067ad098c7c53c.hot-update.js", + "/chunks/settings-subscription.19ad060aaedfb6b52541.hot-update.js": "/chunks/settings-subscription.19ad060aaedfb6b52541.hot-update.js", + "/chunks/settings-subscription.85794170d03ac7cb857f.hot-update.js": "/chunks/settings-subscription.85794170d03ac7cb857f.hot-update.js", + "/chunks/settings-subscription.b33147b38d8e32864744.hot-update.js": "/chunks/settings-subscription.b33147b38d8e32864744.hot-update.js", + "/chunks/settings-subscription.2c9d8bef7ee36040e67b.hot-update.js": "/chunks/settings-subscription.2c9d8bef7ee36040e67b.hot-update.js", + "/chunks/settings-subscription.d8faf143343d44c62a9d.hot-update.js": "/chunks/settings-subscription.d8faf143343d44c62a9d.hot-update.js", + "/chunks/settings-subscription.c80e7c16565259ea32a2.hot-update.js": "/chunks/settings-subscription.c80e7c16565259ea32a2.hot-update.js", + "/chunks/settings-subscription.3c7ca1c5f81fed688424.hot-update.js": "/chunks/settings-subscription.3c7ca1c5f81fed688424.hot-update.js", + "/chunks/settings-subscription.6b71fb3a94dcf7f46deb.hot-update.js": "/chunks/settings-subscription.6b71fb3a94dcf7f46deb.hot-update.js", + "/chunks/settings-subscription.5630a0e0a74b7096cb09.hot-update.js": "/chunks/settings-subscription.5630a0e0a74b7096cb09.hot-update.js", + "/chunks/settings-subscription.75498149c5a4da2160a8.hot-update.js": "/chunks/settings-subscription.75498149c5a4da2160a8.hot-update.js", + "/chunks/settings-subscription.2f1f2d64be045ee587cd.hot-update.js": "/chunks/settings-subscription.2f1f2d64be045ee587cd.hot-update.js", + "/chunks/settings-subscription.681f4115cdac57b120f5.hot-update.js": "/chunks/settings-subscription.681f4115cdac57b120f5.hot-update.js", + "/chunks/settings-subscription.130506b845c195d4d520.hot-update.js": "/chunks/settings-subscription.130506b845c195d4d520.hot-update.js", + "/chunks/settings-subscription.782d0ccc8cebc7809afc.hot-update.js": "/chunks/settings-subscription.782d0ccc8cebc7809afc.hot-update.js", + "/chunks/settings-subscription.3d669e711f263ccfc7a4.hot-update.js": "/chunks/settings-subscription.3d669e711f263ccfc7a4.hot-update.js", + "/chunks/settings-subscription.b3c7741f44f4f74a6e41.hot-update.js": "/chunks/settings-subscription.b3c7741f44f4f74a6e41.hot-update.js", + "/chunks/settings-subscription.a0fc95fa1528fbc97791.hot-update.js": "/chunks/settings-subscription.a0fc95fa1528fbc97791.hot-update.js", + "/chunks/settings-subscription.585be0b4204dcb6fe705.hot-update.js": "/chunks/settings-subscription.585be0b4204dcb6fe705.hot-update.js", + "/chunks/settings-subscription.cb315c7e87ecb9e5a920.hot-update.js": "/chunks/settings-subscription.cb315c7e87ecb9e5a920.hot-update.js", + "/chunks/settings-subscription.13f3cc5f7f9a0e590d56.hot-update.js": "/chunks/settings-subscription.13f3cc5f7f9a0e590d56.hot-update.js", + "/chunks/settings-subscription.8251dc02b0e5ad28e2e4.hot-update.js": "/chunks/settings-subscription.8251dc02b0e5ad28e2e4.hot-update.js", + "/chunks/settings-subscription.e47b7a46419f395e6014.hot-update.js": "/chunks/settings-subscription.e47b7a46419f395e6014.hot-update.js", + "/chunks/settings-subscription.faef193bea5b50d4dcd3.hot-update.js": "/chunks/settings-subscription.faef193bea5b50d4dcd3.hot-update.js", + "/chunks/settings-subscription.263eccd01d040c7c8704.hot-update.js": "/chunks/settings-subscription.263eccd01d040c7c8704.hot-update.js", + "/chunks/settings-subscription.c99ccf05e2d85b113ea4.hot-update.js": "/chunks/settings-subscription.c99ccf05e2d85b113ea4.hot-update.js", + "/chunks/settings-subscription.a0ad7b85f68c380418d5.hot-update.js": "/chunks/settings-subscription.a0ad7b85f68c380418d5.hot-update.js", + "/chunks/settings-subscription.9997dafb8e0e3c90350a.hot-update.js": "/chunks/settings-subscription.9997dafb8e0e3c90350a.hot-update.js", + "/chunks/settings-subscription.7783bbede12858b51772.hot-update.js": "/chunks/settings-subscription.7783bbede12858b51772.hot-update.js", + "/chunks/settings-subscription.5adf26b765bf47a4e579.hot-update.js": "/chunks/settings-subscription.5adf26b765bf47a4e579.hot-update.js", + "/chunks/settings-subscription.91bec091789022def4b1.hot-update.js": "/chunks/settings-subscription.91bec091789022def4b1.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.ca45f59c6f47080ae697.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.ca45f59c6f47080ae697.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.2d5bc7fc7a22038d7a0f.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.2d5bc7fc7a22038d7a0f.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.6ee7303a603cf90585be.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.6ee7303a603cf90585be.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.e88b217c56eb6e9fa8e9.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.e88b217c56eb6e9fa8e9.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.d1010f5c66ffa6a89ebd.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.d1010f5c66ffa6a89ebd.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.90d4dd664ca94c330354.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.90d4dd664ca94c330354.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.86ae1335131a857b88de.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.86ae1335131a857b88de.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.ef238483ee79c489fc11.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.ef238483ee79c489fc11.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.9cd1c24a1a398d94f39c.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.9cd1c24a1a398d94f39c.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.623b40c905073bdaff8d.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.623b40c905073bdaff8d.hot-update.js", + "/chunks/settings-subscription.e5d448cdc7aa0a879e7a.hot-update.js": "/chunks/settings-subscription.e5d448cdc7aa0a879e7a.hot-update.js", + "/chunks/settings-subscription.e93de9577924975edf28.hot-update.js": "/chunks/settings-subscription.e93de9577924975edf28.hot-update.js", + "/chunks/settings-subscription.c70268db92d00d51c9f9.hot-update.js": "/chunks/settings-subscription.c70268db92d00d51c9f9.hot-update.js", + "/chunks/settings-subscription.0b734f00ac49be587eb8.hot-update.js": "/chunks/settings-subscription.0b734f00ac49be587eb8.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.5ad45c25769df1bf44e6.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.5ad45c25769df1bf44e6.hot-update.js" } diff --git a/resources/js/components/Others/Popup/ConfirmPopup.vue b/resources/js/components/Others/Popup/ConfirmPopup.vue index f52fd66f..486bfebb 100644 --- a/resources/js/components/Others/Popup/ConfirmPopup.vue +++ b/resources/js/components/Others/Popup/ConfirmPopup.vue @@ -5,7 +5,7 @@ -

{{ title }}

+

{{ title }}

{{ message }}

@@ -72,7 +72,7 @@ this.message = args.message this.emoji = '🤔' this.confirmationData = args.action - this.buttonColor = 'danger-solid' + this.buttonColor = 'danger' if (args.buttonColor) { this.buttonColor = args.buttonColor @@ -103,13 +103,6 @@ padding-left: 20px; padding-right: 20px; - .title { - @include font-size(22); - text-transform: uppercase; - font-weight: 800; - color: $text; - } - .message { @include font-size(16); color: #333; diff --git a/resources/js/views/User/MeteredSubscription.vue b/resources/js/views/User/MeteredSubscription.vue index ee8225b8..2dabb8da 100644 --- a/resources/js/views/User/MeteredSubscription.vue +++ b/resources/js/views/User/MeteredSubscription.vue @@ -76,19 +76,51 @@ {{ $t('Billing Alert') }} - - +
+ + {{ user.data.relationships.alert.data.attributes.formatted }} + + + + + + {{ $t('Alert will be triggered after you reach the value above.') }} + +
+ + +
- - + + {{ $t('Update Alert') }} + +
+
+
+
+ + + + +
+ + {{ $t('Set Alert') }}
@@ -149,10 +181,15 @@ diff --git a/src/App/Console/Commands/SetupDevEnvironment.php b/src/App/Console/Commands/SetupDevEnvironment.php index 0462fbbe..9440281c 100644 --- a/src/App/Console/Commands/SetupDevEnvironment.php +++ b/src/App/Console/Commands/SetupDevEnvironment.php @@ -1093,14 +1093,14 @@ class SetupDevEnvironment extends Command $user ->each( fn ($user) => DB::table('traffic') - ->insert([ - 'id' => Str::uuid(), - 'user_id' => $user->id, - 'upload' => random_int(1111111, 9999999), - 'download' => random_int(11111111, 99999999), - 'created_at' => now()->subDays($day), - 'updated_at' => now()->subDays($day), - ]) + ->insert([ + 'id' => Str::uuid(), + 'user_id' => $user->id, + 'upload' => random_int(1111111, 9999999), + 'download' => random_int(11111111, 99999999), + 'created_at' => now()->subDays($day), + 'updated_at' => now()->subDays($day), + ]) ); } } diff --git a/src/App/Console/Kernel.php b/src/App/Console/Kernel.php index 9428efc5..9ec888b1 100644 --- a/src/App/Console/Kernel.php +++ b/src/App/Console/Kernel.php @@ -4,11 +4,11 @@ namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use App\Console\Commands\SetupDevEnvironment; use App\Console\Commands\SetupProdEnvironment; +use Support\Scheduler\Actions\ReportUsageAction; use Support\Scheduler\Actions\DeleteFailedFilesAction; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use Support\Scheduler\Actions\DeleteUnverifiedUsersAction; use Support\Scheduler\Actions\DeleteExpiredShareLinksAction; -use Support\Scheduler\Actions\ReportUsageAction; class Kernel extends ConsoleKernel { diff --git a/src/App/Users/Actions/FormatUsageEstimatesAction.php b/src/App/Users/Actions/FormatUsageEstimatesAction.php index 73f01684..176cd6b5 100644 --- a/src/App/Users/Actions/FormatUsageEstimatesAction.php +++ b/src/App/Users/Actions/FormatUsageEstimatesAction.php @@ -1,5 +1,4 @@ map(function ($estimate) use ($currency) { - // Format usage $usage = match ($estimate['feature']) { 'bandwidth' => Metric::megabytes($estimate['usage'])->format(), - 'storage' => Metric::megabytes($estimate['usage'])->format(), + 'storage' => Metric::megabytes($estimate['usage'])->format(), }; // Normalize units @@ -28,4 +26,4 @@ class FormatUsageEstimatesAction ]; }); } -} \ No newline at end of file +} diff --git a/src/App/Users/Resources/UserResource.php b/src/App/Users/Resources/UserResource.php index 4ee8b077..2e4e6f50 100644 --- a/src/App/Users/Resources/UserResource.php +++ b/src/App/Users/Resources/UserResource.php @@ -1,13 +1,13 @@ [ 'settings' => new SettingsResource($this->settings), 'favourites' => new FolderCollection($this->favouriteFolders), - $this->mergeWhen($this->hasSubscription(), fn() => [ + $this->mergeWhen($this->hasSubscription(), fn () => [ 'subscription' => new SubscriptionResource($this->subscription), ]), - $this->mergeWhen($isMeteredSubscription, fn() => [ + $this->mergeWhen($isMeteredSubscription, fn () => [ 'balance' => new BalanceResource($this->balance), ]), + $this->mergeWhen($isMeteredSubscription, fn () => [ + 'alert' => new BillingAlertResource($this->billingAlert), + ]), ], 'meta' => [ - $this->mergeWhen($isFixedSubscription, fn() => [ + $this->mergeWhen($isFixedSubscription, fn () => [ 'limitations' => $this->limitations->summary(), ]), - $this->mergeWhen($isMeteredSubscription, fn() => [ + $this->mergeWhen($isMeteredSubscription, fn () => [ 'usages' => $this->getUsageEstimates(), ]), ], diff --git a/src/Domain/Traffic/Models/Traffic.php b/src/Domain/Traffic/Models/Traffic.php index b67866bc..026281d2 100644 --- a/src/Domain/Traffic/Models/Traffic.php +++ b/src/Domain/Traffic/Models/Traffic.php @@ -1,8 +1,8 @@ where('status', 'active') ->cursor() - ->each(function($subscription) { + ->each(function ($subscription) { $this->recordBandwidth($subscription); $this->recordStorageCapacity($subscription); }); @@ -46,4 +45,4 @@ class ReportUsageAction // Record storage capacity usage $subscription->recordUsage('bandwidth', $amount); } -} \ No newline at end of file +} diff --git a/tests/App/Users/UserSubscriptionTest.php b/tests/App/Users/UserSubscriptionTest.php index 587d5767..c89623f5 100644 --- a/tests/App/Users/UserSubscriptionTest.php +++ b/tests/App/Users/UserSubscriptionTest.php @@ -1,10 +1,9 @@ has(PlanFixedFeature::factory() - ->count(2) - ->sequence( - [ - 'key' => 'max_storage_amount', - 'value' => 200, - ], - [ - 'key' => 'max_team_members', - 'value' => 20, - ], - ), 'fixedFeatures') + ->count(2) + ->sequence( + [ + 'key' => 'max_storage_amount', + 'value' => 200, + ], + [ + 'key' => 'max_team_members', + 'value' => 20, + ], + ), 'fixedFeatures') ->create(); $user = User::factory() @@ -54,17 +53,17 @@ class UserSubscriptionTest extends TestCase { $plan = Plan::factory() ->has(PlanFixedFeature::factory() - ->count(2) - ->sequence( - [ - 'key' => 'max_storage_amount', - 'value' => 200, - ], - [ - 'key' => 'max_team_members', - 'value' => 20, - ], - ), 'fixedFeatures') + ->count(2) + ->sequence( + [ + 'key' => 'max_storage_amount', + 'value' => 200, + ], + [ + 'key' => 'max_team_members', + 'value' => 20, + ], + ), 'fixedFeatures') ->create(); $user = User::factory() @@ -111,13 +110,13 @@ class UserSubscriptionTest extends TestCase $usages = collect([ [ 'feature' => 'bandwidth', - "amount" => 7546.96, - "usage" => 26024, + 'amount' => 7546.96, + 'usage' => 26024, ], [ - "feature" => "storage", - "amount" => 476.28, - "usage" => 3969, - ] + 'feature' => 'storage', + 'amount' => 476.28, + 'usage' => 3969, + ], ]); // Format usage estimates @@ -126,16 +125,16 @@ class UserSubscriptionTest extends TestCase $expected = [ [ - "feature" => "bandwidth", - "amount" => 7.54696, - "cost" => "$7.55", - "usage" => "26.02GB", + 'feature' => 'bandwidth', + 'amount' => 7.54696, + 'cost' => '$7.55', + 'usage' => '26.02GB', ], [ - "feature" => "storage", - "amount" => 0.47628, - "cost" => "$0.48", - "usage" => "3.97GB", - ] + 'feature' => 'storage', + 'amount' => 0.47628, + 'cost' => '$0.48', + 'usage' => '3.97GB', + ], ]; $this->assertEquals($expected, $estimates); diff --git a/tests/Domain/Teams/TeamLimitsTest.php b/tests/Domain/Teams/TeamLimitsTest.php index a0977878..51ffb32a 100644 --- a/tests/Domain/Teams/TeamLimitsTest.php +++ b/tests/Domain/Teams/TeamLimitsTest.php @@ -30,10 +30,10 @@ class TeamLimitsTest extends TestCase $members->each( fn ($member) => TeamFolderMember::factory() - ->create([ - 'parent_id' => $user->folders[0]->id, - 'user_id' => $member->id, - ]) + ->create([ + 'parent_id' => $user->folders[0]->id, + 'user_id' => $member->id, + ]) ); // Try invite new member diff --git a/tests/Domain/Traffic/TrafficTest.php b/tests/Domain/Traffic/TrafficTest.php index c80f30cf..f40771b8 100644 --- a/tests/Domain/Traffic/TrafficTest.php +++ b/tests/Domain/Traffic/TrafficTest.php @@ -1,9 +1,6 @@ create([ - 'user_id' => $user->id, - 'download' => 155000000, + 'user_id' => $user->id, + 'download' => 155000000, 'created_at' => now()->subDay(), ]);