orderByDesc('created_at') ->get(); return Inertia::render('Requests', [ 'requests' => RequestResource::collection($requests), ]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $input = $request->all(); $rules = [ 'phone' => ['required'], 'password' => ['required'], 'dial_code' => ['required'], 'first_name' => ['required'], 'last_name' => ['required'], 'email' => ['required', 'email'], 'org_type' => ['required'], 'items' => ['required', 'array'], 'items.*.id' => ['required'], 'totalPrice' => ['required', 'numeric'], 'currency' => ['required', 'in:TMT,USD'] ]; $validator = Validator::make($input, $rules); if($validator->fails()) { return response()->json([ 'status' => 400, 'validationErrors' => $validator->errors() ], 400); } $loginResponse = Http::post('http://127.0.0.1:8000/api/login', [ 'username' => $input['phone'], 'password' => $input['password'], 'dial_code' => '+' . $input['dial_code'] ]); $loginResponseStatus = $loginResponse->status(); switch ($loginResponseStatus) { case 401: return response()->json([ 'status' => $loginResponseStatus, // 401 'message' => 'Unauthorized', 'response' => $loginResponse ], $loginResponseStatus); break; case 200: // check user balance $fee = $input['totalPrice']; // if($input['currency'] == 'USD') { // $fee = $fee * settings('local_price') / settings('int_price'); // fee - converted to TMT price // } if($loginResponse['user']['user_balance'] - $fee < 0) { return response()->json([ 'status' => 300, // 300 'message' => 'Fill up your balance', 'response' => $loginResponse ], 300); } // try to withdraw fee from the balance for creating a request $balanceResponse = Http::post('http://127.0.0.1:8000/api/v1/withdraw-from-balance?token=' . $loginResponse['token'], [ // 'token' => $loginResponse['token'], 'total_price' => $input['totalPrice'], // USD or TMT 'currency' => $input['currency'], 'fee' => $fee, // 'items' => $input['items'] ]); $balanceResponseStatus = $balanceResponse->status(); if($balanceResponseStatus == 201) { RequestModel::create(array_merge($input, [ 'phone' => '+' . $input['dial_code'] . $input['phone'] ])); } if($balanceResponseStatus == 500) { return response()->json([ 'status' => $balanceResponseStatus, // 500 'message' => 'Internal Server Error', 'response' => $balanceResponse ], $balanceResponseStatus); break; } return response()->json([ 'status' => $balanceResponseStatus, // 201 (ok) 'message' => $balanceResponse['message'], 'response' => $balanceResponse ], $balanceResponseStatus); break; case 500: return response()->json([ 'status' => $loginResponseStatus, // 500 'message' => 'Internal Server Error', 'response' => $loginResponse ], $loginResponseStatus); break; default: return response()->json([ 'status' => $loginResponseStatus, 'message' => 'Unknown Server Error', 'response' => $loginResponse ], $loginResponseStatus); break; } } /** * Remove the specified resource from storage. * * @param \App\Models\Request $request * @return \Illuminate\Http\Response */ public function destroy(RequestModel $request) { $request->delete(); return redirect()->back(); } }