Ver Fonte

fix: 🐛 Credt usage at dashboard

IceToast há 2 anos atrás
pai
commit
f3856c88ba
3 ficheiros alterados com 21 adições e 5 exclusões
  1. 1 1
      app/Http/Controllers/HomeController.php
  2. 15 1
      app/Models/Product.php
  3. 5 3
      app/Models/User.php

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

@@ -76,7 +76,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

@@ -37,7 +37,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()

+ 5 - 3
app/Models/User.php

@@ -233,17 +233,19 @@ class User extends Authenticatable implements MustVerifyEmail
      * @return string
      */
     public function creditUsage()
-    {            
+    {
         $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();
     }