/** * @param City $city * @param Building $building * @param Request $request * @return $this|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ private function setWorkers(City $city, Building $building, Request $request) { $workers = $request->input('workers'); // validate the request's number if ($workers > $building->level * 10 || $workers < 0) { return redirect($request->url())->withErrors(["no_more_worker" => "Az épületben nem dolgozhat ennyi munkás"]); } // check if the user want to add or remove workers. $diff = $workers - $building->workers; if ($city->hasEnoughHumanResources(['workers' => $diff])) { $city->human_resources->subtract(['workers' => $diff]); $building->workers = $workers; $building->save(); return redirect()->back(); } return redirect()->back()->withErrors(['not_enough_worker' => "Nincs elég munkás"]); }