Преглед на файлове

fix: 🐛 Credt usage at dashboard

IceToast преди 2 години
родител
ревизия
e310dba243
променени са 3 файла, в които са добавени 25 реда и са изтрити 3 реда
  1. 1 1
      app/Http/Controllers/HomeController.php
  2. 15 1
      app/Models/Product.php
  3. 9 1
      app/Models/User.php

+ 1 - 1
app/Http/Controllers/HomeController.php

@@ -97,7 +97,7 @@ class HomeController extends Controller
 
         /** Build our Time-Left-Box */
         if ($credits > 0.01 and $usage > 0) {
-            $daysLeft = number_format(($credits * 30) / $usage, 2, '.', '');
+            $daysLeft = number_format($credits / ($usage / 30), 2, '.', '');
             $hoursLeft = number_format($credits / ($usage / 30 / 24), 2, '.', '');
 
             $bg = $this->getTimeLeftBoxBackground($daysLeft);

+ 15 - 1
app/Models/Product.php

@@ -43,7 +43,21 @@ class Product extends Model
 
     public function getHourlyPrice()
     {
-        return ($this->price / 30) / 24;
+        // calculate the hourly price with the billing period
+        switch($this->billing_period) {
+            case 'daily':
+                return $this->price / 24;
+            case 'weekly':
+                return $this->price / 24 / 7;
+            case 'monthly':
+                return $this->price / 24 / 30;
+            case 'half-annually':
+                return $this->price / 24 / 30 / 6;
+            case 'annually':
+                return $this->price / 24 / 365;
+            default:
+                return $this->price;
+        }
     }
 
     public function getDailyPrice()

+ 9 - 1
app/Models/User.php

@@ -251,12 +251,20 @@ class User extends Authenticatable implements MustVerifyEmail
     {
         $usage = 0;
         foreach ($this->getServersWithProduct() as $server) {
-            $usage += $server->product->price;
+            $usage += $server->product->getHourlyPrice() * 24 * 30;
         }
 
         return number_format($usage, 2, '.', '');
     }
 
+    private function getServersWithProduct() {
+        return $this->servers()
+            ->whereNull('suspended')
+            ->whereNull('cancelled')
+            ->with('product')
+            ->get();
+    }
+
     /**
      * @return array|string|string[]
      */