diff --git a/resources/js/components/UI/Bar.vue b/resources/js/components/UI/Bar.vue
index 73dfe9e0..7d6f737d 100644
--- a/resources/js/components/UI/Bar.vue
+++ b/resources/js/components/UI/Bar.vue
@@ -1,7 +1,7 @@
-
+
diff --git a/src/App/Users/Resources/UserStorageResource.php b/src/App/Users/Resources/UserStorageResource.php
index de2886f0..08204d11 100644
--- a/src/App/Users/Resources/UserStorageResource.php
+++ b/src/App/Users/Resources/UserStorageResource.php
@@ -1,7 +1,10 @@
$this->usedCapacity / 1000000000,
- 'fixed' => $this->limitations->max_storage_amount,
- default => $this->limitations->max_storage_amount,
+ 'fixed' => $this->limitations->max_storage_amount,
+ default => $this->limitations->max_storage_amount,
};
return [
'data' => [
- 'id' => (string) $this->id,
+ 'id' => (string)$this->id,
'type' => 'storage',
'attributes' => [
'used' => Metric::bytes($this->usedCapacity)->format(),
'capacity' => format_gigabytes($totalCapacity),
- 'percentage' => (float) get_storage_percentage($this->usedCapacity, $totalCapacity),
+ 'percentage' => (float)get_storage_percentage($this->usedCapacity, $totalCapacity),
],
'meta' => [
'traffic' => [
@@ -44,23 +47,23 @@ class UserStorageResource extends JsonResource
],
'images' => [
'used' => Metric::bytes($images)->format(),
- 'percentage' => (float) get_storage_percentage($images, $totalCapacity),
+ 'percentage' => (float)get_storage_percentage($images, $totalCapacity),
],
'audios' => [
'used' => Metric::bytes($audios)->format(),
- 'percentage' => (float) get_storage_percentage($audios, $totalCapacity),
+ 'percentage' => (float)get_storage_percentage($audios, $totalCapacity),
],
'videos' => [
'used' => Metric::bytes($videos)->format(),
- 'percentage' => (float) get_storage_percentage($videos, $totalCapacity),
+ 'percentage' => (float)get_storage_percentage($videos, $totalCapacity),
],
'documents' => [
'used' => Metric::bytes($documents)->format(),
- 'percentage' => (float) get_storage_percentage($documents, $totalCapacity),
+ 'percentage' => (float)get_storage_percentage($documents, $totalCapacity),
],
'others' => [
'used' => Metric::bytes($others)->format(),
- 'percentage' => (float) get_storage_percentage($others, $totalCapacity),
+ 'percentage' => (float)get_storage_percentage($others, $totalCapacity),
],
],
],
@@ -130,18 +133,26 @@ class UserStorageResource extends JsonResource
->where('user_id', $this->id)
->where('created_at', '>', $period)
->orderBy('created_at')
- ->get();
+ ->get(['upload', 'download', 'created_at'])
+ ->each(fn($record) => $record->created_at = format_date($record->created_at, 'd. M. Y'))
+ ->keyBy('created_at');
- $upload = $trafficRecords->map(fn ($record) => [
- 'created_at' => format_date($record->created_at, 'd. M. '),
- 'percentage' => $uploadMax !== 0 ? round(($record->upload / $uploadMax) * 100, 2) : 0,
+ $mappedTrafficRecords = mapTrafficRecords($trafficRecords);
+
+ $upload = $mappedTrafficRecords->map(fn($record) => [
+ 'created_at' => $record->created_at,
'amount' => Metric::bytes($record->upload)->format(),
+ 'percentage' => $uploadMax !== 0
+ ? round(($record->upload / $uploadMax) * 100, 2)
+ : 0,
]);
- $download = $trafficRecords->map(fn ($record) => [
- 'created_at' => format_date($record->created_at, 'd. M. '),
- 'percentage' => $downloadMax !== 0 ? round(($record->download / $downloadMax) * 100, 2) : 0,
+ $download = $mappedTrafficRecords->map(fn($record) => [
+ 'created_at' => $record->created_at,
'amount' => Metric::bytes($record->download)->format(),
+ 'percentage' => $downloadMax !== 0
+ ? round(($record->download / $downloadMax) * 100, 2)
+ : 0,
]);
return [$downloadTotal, $uploadTotal, $upload, $download];
diff --git a/src/Domain/Admin/Controllers/Dashboard/GetDashboardDataController.php b/src/Domain/Admin/Controllers/Dashboard/GetDashboardDataController.php
index 738dae54..893e4ef1 100644
--- a/src/Domain/Admin/Controllers/Dashboard/GetDashboardDataController.php
+++ b/src/Domain/Admin/Controllers/Dashboard/GetDashboardDataController.php
@@ -52,7 +52,7 @@ class GetDashboardDataController extends Controller
{
// Set period range for data retrieval
$period = now()
- ->subDays(44)
+ ->subDays(45)
->endOfDay();
// Get bandwidth data
@@ -64,16 +64,20 @@ class GetDashboardDataController extends Controller
DB::raw('sum(upload) as upload')
)
->groupBy('created_at')
- ->get();
+ ->get(['upload', 'download', 'created_at'])
+ ->each(fn($record) => $record->created_at = format_date($record->created_at, 'd. M. Y'))
+ ->keyBy('created_at');
- $upload = $trafficRecords->map(fn ($record) => [
- 'created_at' => format_date($record->created_at, 'd. M. '),
+ $mappedTrafficRecords = mapTrafficRecords($trafficRecords);
+
+ $upload = $mappedTrafficRecords->map(fn ($record) => [
+ 'created_at' => $record->created_at,
'percentage' => intval($trafficRecords->max('upload')) !== 0 ? round(($record->upload / $trafficRecords->max('upload')) * 100, 2) : 0,
'amount' => Metric::bytes($record->upload)->format(),
]);
- $download = $trafficRecords->map(fn ($record) => [
- 'created_at' => format_date($record->created_at, 'd. M. '),
+ $download = $mappedTrafficRecords->map(fn ($record) => [
+ 'created_at' => $record->created_at,
'percentage' => intval($trafficRecords->max('download')) !== 0 ? round(($record->download / $trafficRecords->max('download')) * 100, 2) : 0,
'amount' => Metric::bytes($record->download)->format(),
]);
diff --git a/src/Support/helpers.php b/src/Support/helpers.php
index 53a2b246..3b18ed56 100644
--- a/src/Support/helpers.php
+++ b/src/Support/helpers.php
@@ -648,6 +648,33 @@ if (! function_exists('getThumbnailFileList')) {
}
}
+if (! function_exists('mapTrafficRecords')) {
+ /**
+ * Map missing dates
+ */
+ function mapTrafficRecords(Collection $trafficRecords): Collection
+ {
+ $records = collect();
+
+ foreach (range(44, 0) as $day) {
+ $day = now()->subDays($day)->translatedFormat('d. M. Y');
+
+ if (optional($trafficRecords)[$day]) {
+ $records->push($trafficRecords[$day]);
+ } else {
+ $record = new Collection();
+
+ $record->upload = 0;
+ $record->download = 0;
+ $record->created_at = $day;
+
+ $records->add($record);
+ }
+ }
+ return $records;
+ }
+}
+
if (! function_exists('map_language_translations')) {
/**
* It map language translations as language key and language value