/** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update(Request $request, $id) { try { $product = Product::with(['price', 'price.stantion'])->where('id', $id)->first(); } catch (ModelNotFoundException $e) { abort(404); } if (!$product) { abort(404); } $id = $request->route('products'); $validationRules = ['name' => 'required|alpha_spaces_numbers|max:35|unique:products,name,' . $id, 'article' => 'required|alpha_spaces_numbers|max:15', 'description' => 'required|alpha_spaces_numbers', 'condition_id' => 'required|integer']; $depos = Stantion::all(); foreach ($depos as $depo) { $validationRules['price' . $depo->id] = 'required|numeric'; $validationRules['amount' . $depo->id] = 'required|numeric'; $validationRules['vat' . $depo->id] = 'required|numeric'; } $v = Validator::make($request->all(), $validationRules); if ($v->fails()) { return redirect()->back()->withErrors($v->errors())->withInput(); } $prices = $product->price; DB::transaction(function () use($product, $request, $prices) { $product->article = $request->article; $product->name = $request->name; $product->description = $request->description; $product->condition_id = $request->condition_id; if (!(int) $request->category_id) { $product->category_id = null; } else { $product->category_id = $request->category_id; } $product->save(); foreach ($prices as $price) { $priceInputName = 'price' . $price->stantion[0]->id; $priceInputAmount = 'amount' . $price->stantion[0]->id; $priceInputVAT = 'vat' . $price->stantion[0]->id; $price->price = $request->{$priceInputName}; $price->amount = $request->{$priceInputAmount}; $price->nds = $request->{$priceInputVAT}; $price->save(); } }); return redirect('products')->with('alert-success', 'Товар обновлен'); }
/** * Display a listing of the resource. * * @return Response */ public function index() { $stations = Stantion::all(); return view('stations.index', ['stations' => $stations]); }