record daily usage

This commit is contained in:
Čarodej
2021-12-10 16:37:00 +01:00
parent 26f367031e
commit 9275487cfa
8 changed files with 186 additions and 27 deletions
@@ -0,0 +1,49 @@
<?php
namespace Support\Scheduler\Actions;
use DB;
use VueFileManager\Subscription\Domain\Subscriptions\Models\Subscription;
class ReportUsageAction
{
public function __invoke()
{
Subscription::whereIn('type', ['pre-paid', 'auto-renew'])
->where('status', 'active')
->cursor()
->each(function($subscription) {
$this->recordBandwidth($subscription);
$this->recordStorageCapacity($subscription);
});
}
private function recordStorageCapacity(Subscription $subscription): void
{
// Sum all file size
$filesize = DB::table('files')
->where('user_id', $subscription->user->id)
->sum('filesize');
// We count storage size in GB, e.g. 0.15 is 150mb
$amount = $filesize / 1000000000;
// Record storage capacity usage
$subscription->recordUsage('storage', $amount);
}
private function recordBandwidth(Subscription $subscription): void
{
// We count storage size in GB, e.g. 0.15 is 150mb
$record = $subscription
->user
->traffics()
->where('created_at', today()->subDay())
->first();
$amount = ($record->download ?? 0) / 1000000000;
// Record storage capacity usage
$subscription->recordUsage('bandwidth', $amount);
}
}