瀏覽代碼

decrement and increment endpoints

Hiekki 3 年之前
父節點
當前提交
b12007aea3
共有 2 個文件被更改,包括 39 次插入1 次删除
  1. 38 1
      app/Http/Controllers/Api/UserController.php
  2. 1 0
      routes/api.php

+ 38 - 1
app/Http/Controllers/Api/UserController.php

@@ -64,8 +64,8 @@ class UserController extends Controller
     }
     }
 
 
     /**
     /**
+     * increments the users credits or/and server_limit
      * 
      * 
-     *
      * @param Request $request
      * @param Request $request
      * @param int $id
      * @param int $id
      * @return User
      * @return User
@@ -88,12 +88,49 @@ class UserController extends Controller
          }
          }
 
 
         if($request->server_limit){
         if($request->server_limit){
+            if ($user->server_limit + $request->server_limit >= 2147483647) throw ValidationException::withMessages([
+                'server_limit' => "You cannot add this amount of servers because it would exceed the server limit."
+            ]);
            $user->increment('server_limit', $request->server_limit);
            $user->increment('server_limit', $request->server_limit);
         }
         }
 
 
         return $user;
         return $user;
     }
     }
 
 
+    /**
+     * decrements the users credits or/and server_limit
+     * 
+     * @param Request $request
+     * @param int $id
+     * @return User
+     */
+    public function decrement(Request $request, int $id)
+    {
+        $discordUser = DiscordUser::find($id);
+        $user = $discordUser ? $discordUser->user : User::findOrFail($id);
+
+        $request->validate([
+            "credits"      => "sometimes|numeric|min:0|max:1000000",
+            "server_limit" => "sometimes|numeric|min:0|max:1000000",
+        ]);
+        
+        if($request->credits){
+             if ($user->credits - $request->credits >= 99999999) throw ValidationException::withMessages([
+                'credits' => "You cannot remove this amount of credits because you would exceed the minimum credit"
+            ]);
+            $user->decrement('credits', $request->credits);
+         }
+
+        if($request->server_limit){
+            if ($user->server_limit - $request->server_limit >= 2147483647) throw ValidationException::withMessages([
+                'server_limit' => "You cannot remove this amount of servers because it would exceed the minimum server."
+            ]);
+           $user->decrement('server_limit', $request->server_limit);
+        }
+
+        return $user;
+    }
+
     /**
     /**
      * Remove the specified resource from storage.
      * Remove the specified resource from storage.
      *
      *

+ 1 - 0
routes/api.php

@@ -18,6 +18,7 @@ use Illuminate\Support\Facades\Route;
 
 
 Route::middleware('api.token')->group(function () {
 Route::middleware('api.token')->group(function () {
     Route::patch('/users/{user}/increment', [UserController::class, 'increment']);
     Route::patch('/users/{user}/increment', [UserController::class, 'increment']);
+    Route::patch('/users/{user}/decrement', [UserController::class, 'decrement']);
     Route::resource('users', UserController::class)->except(['store', 'create']);
     Route::resource('users', UserController::class)->except(['store', 'create']);
 
 
     Route::patch('/servers/{server}/suspend', [ServerController::class, 'suspend']);
     Route::patch('/servers/{server}/suspend', [ServerController::class, 'suspend']);