set/update/delete billing alert

This commit is contained in:
Čarodej
2021-12-17 10:44:50 +01:00
parent 04e46b7fcb
commit afb8323541
13 changed files with 307 additions and 96 deletions
@@ -1,5 +1,4 @@
<?php
namespace App\Users\Actions;
use ByteUnits\Metric;
@@ -10,11 +9,10 @@ class FormatUsageEstimatesAction
public function __invoke(string $currency, Collection $usage)
{
return $usage->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
];
});
}
}
}
+10 -7
View File
@@ -1,13 +1,13 @@
<?php
namespace App\Users\Resources;
use App\Users\Actions\FormatUsageEstimatesAction;
use Domain\Folders\Resources\FolderCollection;
use VueFileManager\Subscription\Domain\Usage\Actions\SumUsageForCurrentPeriodAction;
use Illuminate\Http\Resources\Json\JsonResource;
use App\Users\Actions\FormatUsageEstimatesAction;
use VueFileManager\Subscription\Domain\Credits\Resources\BalanceResource;
use VueFileManager\Subscription\Domain\BillingAlerts\Resources\BillingAlertResource;
use VueFileManager\Subscription\Domain\Subscriptions\Resources\SubscriptionResource;
use VueFileManager\Subscription\Domain\Usage\Actions\SumUsageForCurrentPeriodAction;
class UserResource extends JsonResource
{
@@ -41,18 +41,21 @@ class UserResource extends JsonResource
'relationships' => [
'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(),
]),
],