public function getAddBet($id) { // Проверка, является ли текущий пользователь участником $haveAccess = Bidders::where(['user_id' => Auth::user()->id, 'auction_id' => $id, 'status' => 1])->get(); // Экземпляр лота $auction = Auction::find($id); // Список ставок $thisBids = Bets::where('auction_id', '=', $id)->orderBy('created_at', 'desc')->get(); // Если пользователь не является участником - редиректим на главную страницу if ($haveAccess->count() == 0) { return redirect('/auctions'); } else { // Если данный пользователь является последним, кто сделал ставку и пытается сделать ее еще раз - редиректим назад и показываем ошибку if ($thisBids->count() > 0 && $thisBids->first()->user_id == Auth::user()->id) { return redirect()->back()->with('bit_error', 'Ви вже зробили ставку!'); } // Если пользователь не делал ставок, но имеет доступ $bet = new Bets(); // Создаем экземпляр ставки $bet->auction_id = $id; // Указываем id аукциона $bet->user_id = Auth::user()->id; // Указываем id пользователя // Если это первая ставка - складываем стартовую цену и цену за шаг if ($thisBids->count() == 0) { $bet->bet = $auction->starting_price + $auction->bid_price; } else { // Добавляем цену за шаг к последнему ценовому предложению $bet->bet = $thisBids->first()->bet + $auction->bid_price; } // Продлеваем аукцион еще на 15 минут $auction->date_end = Carbon::parse($auction->date_end)->addMinutes(15); $auction->save(); $bet->save(); } // В случае успеха - редиректим назад и передаем flash переменную return redirect()->back()->with('bit_success', '1'); }