From b9c756c8d5bba142b07b4a6902b63c5123c2ede3 Mon Sep 17 00:00:00 2001 From: cp6 Date: Sun, 19 Jun 2022 21:22:23 +1000 Subject: [PATCH] Added pricing update with API Added pricing update with API --- app/Http/Controllers/ApiController.php | 46 +++++++++++++++++++++++++- routes/api.php | 1 + 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/ApiController.php b/app/Http/Controllers/ApiController.php index e36218e..53662a0 100644 --- a/app/Http/Controllers/ApiController.php +++ b/app/Http/Controllers/ApiController.php @@ -12,6 +12,7 @@ use App\Models\Server; use App\Models\Shared; use DataTables; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; @@ -432,7 +433,7 @@ class ApiController extends Controller return response()->json(array('result' => 'fail'), 500); } - public function updateServer(Request $request, Server $server) + public function updateServer(Request $request) { $rules = array( 'hostname' => 'string|min:3', @@ -487,4 +488,47 @@ class ApiController extends Controller return response()->json(array('result' => 'fail', 'request' => $request->post()), 500); } + public function updatePricing(Request $request) + { + $rules = array( + 'price' => 'required|numeric', + 'currency' => 'required|string|size:3', + 'term' => 'required|integer', + 'active' => 'integer', + 'next_due_date' => 'date', + ); + + $messages = array( + 'required' => ':attribute is required', + 'integer' => ':attribute must be an integer', + 'string' => ':attribute must be a string', + 'size' => ':attribute must be exactly :size characters', + 'numeric' => ':attribute must be a float', + 'date' => ':attribute must be a date Y-m-d', + ); + + $validator = Validator::make($request->all(), $rules, $messages); + + if ($validator->fails()) { + return response()->json(['result' => 'fail', 'messages' => $validator->messages()], 400); + } + + $pricing = new Pricing(); + + $request->as_usd = $pricing->convertToUSD($request->price, $request->currency); + + $request->usd_per_month = $pricing->costAsPerMonth($request->as_usd, $request->term); + + $price_update = Pricing::where('id', $request->id)->update(request()->all()); + + Cache::forget("all_pricing"); + Server::serverRelatedCacheForget(); + + if ($price_update) { + return response()->json(array('result' => 'success', 'server_id' => $request->id), 200); + } + + return response()->json(array('result' => 'fail', 'request' => $request->post()), 500); + } + } diff --git a/routes/api.php b/routes/api.php index d860d70..78df219 100644 --- a/routes/api.php +++ b/routes/api.php @@ -52,6 +52,7 @@ Route::middleware('auth:api')->get('os/{id}', 'App\Http\Controllers\ApiControlle Route::middleware('auth:api')->get('pricing/', 'App\Http\Controllers\ApiController@getAllPricing'); Route::middleware('auth:api')->get('pricing/{id}', 'App\Http\Controllers\ApiController@getPricing'); +Route::middleware('auth:api')->put('pricing/{id}', 'App\Http\Controllers\ApiController@updatePricing'); Route::middleware('auth:api')->get('providers/', 'App\Http\Controllers\ApiController@getAllProviders'); Route::middleware('auth:api')->get('providers/{id}', 'App\Http\Controllers\ApiController@getProvider');