Page MenuHomePhorge

D4594.1741995306.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D4594.1741995306.diff

diff --git a/src/app/Http/Controllers/API/V4/PolicyController.php b/src/app/Http/Controllers/API/V4/PolicyController.php
--- a/src/app/Http/Controllers/API/V4/PolicyController.php
+++ b/src/app/Http/Controllers/API/V4/PolicyController.php
@@ -142,18 +142,21 @@
$request->save();
}
- // exempt owners that have 100% discount.
- if ($wallet->discount && $wallet->discount->discount == 100) {
- return response()->json(['response' => 'DUNNO'], 200);
- }
- // exempt owners that have made at least two payments and currently maintain a positive balance.
- if ($wallet->balance > 0) {
- $payments = $wallet->payments()->where('amount', '>', 0)->where('status', 'paid');
+ // Paying users have a 15 messages per minute limit
+ if ($wallet->hasMinimumBalanceAndPayments()) {
+ $ownerRates = RateLimit::where('owner_id', $owner->id)
+ ->where('updated_at', '>=', \Carbon\Carbon::now()->subMinute());
- if ($payments->count() >= 2) {
- return response()->json(['response' => 'DUNNO'], 200);
+ if (($count = $ownerRates->count()) >= 15) {
+ $result = [
+ 'response' => 'DEFER_IF_PERMIT',
+ 'reason' => 'The account is at 15 messages per minute, cool down.'
+ ];
+
+ return response()->json($result, 403);
}
+ return response()->json(['response' => 'DUNNO'], 200);
}
//
diff --git a/src/app/Wallet.php b/src/app/Wallet.php
--- a/src/app/Wallet.php
+++ b/src/app/Wallet.php
@@ -743,4 +743,28 @@
return $this;
}
+
+
+ /**
+ * Ensure that this wallet has a positive balance and a minimum number of payments,
+ * or a 100% discount (in which case there are no payments).
+ *
+ * @return bool
+ */
+ public function hasMinimumBalanceAndPayments($minimumPayments = 2): bool
+ {
+ if ($this->discount && $this->discount->discount == 100) {
+ return true;
+ }
+
+ if ($this->balance > 0) {
+ $payments = $this->payments()->where('amount', '>', 0)->where('status', 'paid');
+
+ if ($payments->count() >= $minimumPayments) {
+ return true;
+ }
+ }
+
+ return false;
+ }
}

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 15, 12:35 AM (6 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
11311962
Default Alt Text
D4594.1741995306.diff (2 KB)

Event Timeline