HOME


Mini Shell 1.0
La Pieza.DO | Todo lo que buscas!

Bienvenido de nuevo!

Acceso Cuenta Delivery
DIR: /var/www/devs.lapieza.net/app/Http/Controllers/
Upload File :
Current File : /var/www/devs.lapieza.net/app/Http/Controllers/AttributeController.php
<?php



namespace App\Http\Controllers;



use Illuminate\Http\Request;

use App\Models\Attribute;

use App\Models\Color;

use App\Models\AttributeTranslation;

use App\Models\AttributeValue;

use CoreComponentRepository;

use Str;



class AttributeController extends Controller

{

    public function __construct() {

        // Staff Permission Check

        $this->middleware(['permission:view_product_attributes'])->only('index');

        $this->middleware(['permission:edit_product_attribute'])->only('edit');

        $this->middleware(['permission:delete_product_attribute'])->only('destroy');



        $this->middleware(['permission:view_product_attribute_values'])->only('show');

        $this->middleware(['permission:edit_product_attribute_value'])->only('edit_attribute_value');

        $this->middleware(['permission:delete_product_attribute_value'])->only('destroy_attribute_value');



        $this->middleware(['permission:view_colors'])->only('colors');

        $this->middleware(['permission:edit_color'])->only('edit_color');

        $this->middleware(['permission:delete_color'])->only('destroy_color');

    }



    /**

     * Display a listing of the resource.

     *

     * @return \Illuminate\Http\Response

     */

    public function index()

    {

        CoreComponentRepository::instantiateShopRepository();

        CoreComponentRepository::initializeCache();

        $attributes = Attribute::with('attribute_values')->orderBy('created_at', 'desc')->paginate(15);

        return view('backend.product.attribute.index', compact('attributes'));

    }



    /**

     * Show the form for creating a new resource.

     *

     * @return \Illuminate\Http\Response

     */

    public function create()

    {

    }



    /**

     * Store a newly created resource in storage.

     *

     * @param  \Illuminate\Http\Request  $request

     * @return \Illuminate\Http\Response

     */

    public function store(Request $request)

    {

        $attribute = new Attribute;

        $attribute->name = $request->name;

        $attribute->save();



        $attribute_translation = AttributeTranslation::firstOrNew(['lang' => env('DEFAULT_LANGUAGE'), 'attribute_id' => $attribute->id]);

        $attribute_translation->name = $request->name;

        $attribute_translation->save();



        flash(translate('Attribute has been inserted successfully'))->success();

        return redirect()->route('attributes.index');

    }



    /**

     * Display the specified resource.

     *

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

    public function show($id)

    {

        $data['attribute'] = Attribute::findOrFail($id);

        $data['all_attribute_values'] = AttributeValue::with('attribute')->where('attribute_id', $id)->get();



        // echo '<pre>';print_r($data['all_attribute_values']);die;



        return view("backend.product.attribute.attribute_value.index", $data);

    }



    /**

     * Show the form for editing the specified resource.

     *

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

    public function edit(Request $request, $id)

    {

        $lang      = $request->lang;

        $attribute = Attribute::findOrFail($id);

        return view('backend.product.attribute.edit', compact('attribute','lang'));

    }



    /**

     * Update the specified resource in storage.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

    public function update(Request $request, $id)

    {

        $attribute = Attribute::findOrFail($id);

        if($request->lang == env("DEFAULT_LANGUAGE")){

          $attribute->name = $request->name;

        }

        $attribute->save();



        $attribute_translation = AttributeTranslation::firstOrNew(['lang' => $request->lang, 'attribute_id' => $attribute->id]);

        $attribute_translation->name = $request->name;

        $attribute_translation->save();



        flash(translate('Attribute has been updated successfully'))->success();

        return back();

    }



    /**

     * Remove the specified resource from storage.

     *

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

    public function destroy($id)

    {

        $attribute = Attribute::findOrFail($id);



        foreach ($attribute->attribute_translations as $key => $attribute_translation) {

            $attribute_translation->delete();

        }



        Attribute::destroy($id);

        flash(translate('Attribute has been deleted successfully'))->success();

        return redirect()->route('attributes.index');



    }



    public function store_attribute_value(Request $request)

    {

        $attribute_value = new AttributeValue;

        $attribute_value->attribute_id = $request->attribute_id;

        $attribute_value->value = ucfirst($request->value);

        $attribute_value->save();



        flash(translate('Attribute value has been inserted successfully'))->success();

        return redirect()->route('attributes.show', $request->attribute_id);

    }



    public function edit_attribute_value(Request $request, $id)

    {

        $attribute_value = AttributeValue::findOrFail($id);

        return view("backend.product.attribute.attribute_value.edit", compact('attribute_value'));

    }



    public function update_attribute_value(Request $request, $id)

    {

        $attribute_value = AttributeValue::findOrFail($id);

        

        $attribute_value->attribute_id = $request->attribute_id;

        $attribute_value->value = ucfirst($request->value);

        

        $attribute_value->save();



        flash(translate('Attribute value has been updated successfully'))->success();

        return back();

    }



    public function destroy_attribute_value($id)

    {

        $attribute_values = AttributeValue::findOrFail($id);

        AttributeValue::destroy($id);

        

        flash(translate('Attribute value has been deleted successfully'))->success();

        return redirect()->route('attributes.show', $attribute_values->attribute_id);



    }

    

    public function colors(Request $request) {

        $sort_search = null;

        $colors = Color::orderBy('created_at', 'desc');



        if ($request->search != null){

            $colors = $colors->where('name', 'like', '%'.$request->search.'%');

            $sort_search = $request->search;

        }

        $colors = $colors->paginate(10);



        return view('backend.product.color.index', compact('colors', 'sort_search'));

    }

    

    public function store_color(Request $request) {

        $request->validate([

            'name' => 'required',

            'code' => 'required|unique:colors|max:255',

        ]);

        $color = new Color;

        $color->name = Str::replace(' ', '', $request->name);

        $color->code = $request->code;

        

        $color->save();



        flash(translate('Color has been inserted successfully'))->success();

        return redirect()->route('colors');

    }

    

    public function edit_color(Request $request, $id)

    {

        $color = Color::findOrFail($id);

        return view('backend.product.color.edit', compact('color'));

    }



    /**

     * Update the color.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

    public function update_color(Request $request, $id)

    {

        $color = Color::findOrFail($id);



        $request->validate([

            'code' => 'required|unique:colors,code,'.$color->id,

        ]);

        

        $color->name = Str::replace(' ', '', $request->name);

        $color->code = $request->code;

        

        $color->save();



        flash(translate('Color has been updated successfully'))->success();

        return back();

    }

    

    public function destroy_color($id)

    {

        Color::destroy($id);

        

        flash(translate('Color has been deleted successfully'))->success();

        return redirect()->route('colors');



    }

    

}