![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mcoil.corals.io/app/Http/Controllers/Admin/Attributes/ |
<?php namespace App\Http\Controllers\Admin\Attributes; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Shop\Attributes\Exceptions\AttributeNotFoundException; use App\Shop\Attributes\Exceptions\CreateAttributeErrorException; use App\Shop\Attributes\Exceptions\UpdateAttributeErrorException; use App\Shop\Attributes\Repositories\AttributeRepository; use App\Shop\Attributes\Repositories\AttributeRepositoryInterface; use App\Shop\Attributes\Requests\CreateAttributeRequest; use App\Shop\Attributes\Requests\UpdateAttributeRequest; use App\Shop\AttributeValues\AttributeValue; class AttributeController extends Controller { private $attributeRepo; /** * AttributeController constructor. * @param AttributeRepositoryInterface $attributeRepository */ public function __construct(AttributeRepositoryInterface $attributeRepository) { $this->attributeRepo = $attributeRepository; } /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index() { $results = $this->attributeRepo->listAttributes(); $attributes = $results->all(); return view('admin.attributes.list', compact('attributes')); } /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function create() { return view('admin.attributes.create'); } /** * @param CreateAttributeRequest $request * @return \Illuminate\Http\RedirectResponse */ public function store(CreateAttributeRequest $request) { $attribute = $this->attributeRepo->createAttribute($request->except('_token')); return redirect()->route('admin.attributes.index')->with('message', 'Attribute created successfully!'); } /** * @param $id * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function show($id) { try { $attribute = $this->attributeRepo->findAttributeById($id); $attributeRepo = new AttributeRepository($attribute); return view('admin.attributes.show', [ 'attribute' => $attribute, 'values' => $attributeRepo->listAttributeValues() ]); } catch (AttributeNotFoundException $e) { return redirect()->route('admin.attributes.index')->with('error', 'The attribute you are looking for is not found.'); } } /** * @param int $id * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function edit($id) { $attribute = $this->attributeRepo->findAttributeById($id); return view('admin.attributes.edit', compact('attribute')); } /** * @param UpdateAttributeRequest $request * @param $id * @return \Illuminate\Http\RedirectResponse */ public function update(UpdateAttributeRequest $request, $id) { try { $attribute = $this->attributeRepo->findAttributeById($id); $attributeRepo = new AttributeRepository($attribute); $attributeRepo->updateAttribute($request->except('_token')); return redirect()->route('admin.attributes.index')->with('message', 'Attribute updated successfully.'); } catch (UpdateAttributeErrorException $e) { $request->session()->flash('error', $e->getMessage()); return redirect()->route('admin.attributes.edit', $id)->withInput(); } } /** * @param $id * @return bool|null */ public function destroy(Request $request, $id) { $id = $request->id; AttributeValue::where('attribute_id', $id)->delete(); $this->attributeRepo->findAttributeById($id)->delete(); request()->session()->flash('message', 'Attribute deleted successfully!'); return redirect()->back(); } }