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'], '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'] ]); $loginResponseStatus = $loginResponse->status(); switch ($loginResponseStatus) { case 401: return response()->json([ 'status' => $loginResponseStatus, // 401 'message' => 'Unauthorized', 'response' => $loginResponse ], $loginResponseStatus); break; case 200: // try to withdraw from the balance $balanceResponse = Http::post('http://127.0.0.1:8000/api/v1/withdraw-from-balance?token=' . $loginResponse['token'] . '&total_price=' . $input['totalPrice'] . '¤cy=' . $input['currency']); $balanceResponseStatus = $balanceResponse->status(); if($balanceResponseStatus == 201) { RequestModel::create(array_merge($input, [ 'name' => $loginResponse['user']['name'] . $loginResponse['user']['surname'], 'email' => $loginResponse['user']['email'] ])); } if($balanceResponseStatus == 500) { return response()->json([ 'status' => $balanceResponseStatus, // 500 'message' => 'Internal Server Error', 'response' => $balanceResponse ], $balanceResponseStatus); break; } return response()->json([ 'status' => $balanceResponseStatus, // 201 (ok) or 300 (fill up balance) '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(); } }