| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | 
							- <?php
 
- namespace App\Http\Controllers\Admin\Attributes;
 
- 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;
 
- 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 = $this->attributeRepo->paginateArrayResults($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'));
 
-         $request->session()->flash('message', 'Create attribute successful!');
 
-         return redirect()->route('admin.attributes.edit', $attribute->id);
 
-     }
 
-     /**
 
-      * @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) {
 
-             request()->session()->flash('error', 'The attribute you are looking for is not found.');
 
-             return redirect()->route('admin.attributes.index');
 
-         }
 
-     }
 
-     /**
 
-      * @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'));
 
-             $request->session()->flash('message', 'Attribute update successful!');
 
-             return redirect()->route('admin.attributes.edit', $attribute->id);
 
-         } 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($id)
 
-     {
 
-         $this->attributeRepo->findAttributeById($id)->delete();
 
-         request()->session()->flash('message', 'Attribute deleted successfully!');
 
-         return redirect()->route('admin.attributes.index');
 
-     }
 
- }
 
 
  |