You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							122 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
	
	
							122 lines
						
					
					
						
							3.9 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
namespace App\Http\Controllers\Vendor;
 | 
						|
 | 
						|
use App\Http\Controllers\Controller;
 | 
						|
use App\Models\AddOn;
 | 
						|
use Brian2694\Toastr\Facades\Toastr;
 | 
						|
use Illuminate\Http\Request;
 | 
						|
use App\CentralLogics\Helpers;
 | 
						|
use App\Models\Translation;
 | 
						|
 | 
						|
class AddOnController extends Controller
 | 
						|
{
 | 
						|
    public function index()
 | 
						|
    {
 | 
						|
        $addons = AddOn::orderBy('name')->paginate(config('default_pagination'));
 | 
						|
        return view('vendor-views.addon.index', compact('addons'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function store(Request $request)
 | 
						|
    {
 | 
						|
        if(!Helpers::get_restaurant_data()->food_section)
 | 
						|
        {
 | 
						|
            Toastr::warning(translate('messages.permission_denied'));
 | 
						|
            return back();
 | 
						|
        }
 | 
						|
        $request->validate([
 | 
						|
            'name' => 'required|array',
 | 
						|
            'name.*' => 'max:191',
 | 
						|
            'price' => 'required|numeric|between:0,999999999999.99',
 | 
						|
        ],[
 | 
						|
            'name.required' => translate('messages.Name is required!'),
 | 
						|
        ]);
 | 
						|
 | 
						|
        $addon = new AddOn();
 | 
						|
        $addon->name = $request->name[array_search('en', $request->lang)];
 | 
						|
        $addon->price = $request->price;
 | 
						|
        $addon->restaurant_id = \App\CentralLogics\Helpers::get_restaurant_id();
 | 
						|
        $addon->save();
 | 
						|
        $data = [];
 | 
						|
        foreach($request->lang as $index=>$key)
 | 
						|
        {
 | 
						|
            if($request->name[$index] && $key != 'en')
 | 
						|
            {
 | 
						|
                array_push($data, Array(
 | 
						|
                    'translationable_type'  => 'App\Models\AddOn',
 | 
						|
                    'translationable_id'    => $addon->id,
 | 
						|
                    'locale'                => $key,
 | 
						|
                    'key'                   => 'name',
 | 
						|
                    'value'                 => $request->name[$index],
 | 
						|
                ));
 | 
						|
            }
 | 
						|
        }
 | 
						|
        if(count($data))
 | 
						|
        {
 | 
						|
            Translation::insert($data);
 | 
						|
        }
 | 
						|
        Toastr::success(translate('messages.addon_added_successfully'));
 | 
						|
        return back();
 | 
						|
    }
 | 
						|
 | 
						|
    public function edit($id)
 | 
						|
    {
 | 
						|
        if(!Helpers::get_restaurant_data()->food_section)
 | 
						|
        {
 | 
						|
            Toastr::warning(translate('messages.permission_denied'));
 | 
						|
            return back();
 | 
						|
        }
 | 
						|
        $addon = AddOn::withoutGlobalScope('translate')->findOrFail($id);
 | 
						|
        return view('vendor-views.addon.edit', compact('addon'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function update(Request $request, $id)
 | 
						|
    {
 | 
						|
        if(!Helpers::get_restaurant_data()->food_section)
 | 
						|
        {
 | 
						|
            Toastr::warning(translate('messages.permission_denied'));
 | 
						|
            return back();
 | 
						|
        }
 | 
						|
        $request->validate([
 | 
						|
            'name' => 'required|max:191',
 | 
						|
            'price' => 'required|numeric|between:0,999999999999.99',
 | 
						|
        ], [
 | 
						|
            'name.required' => translate('messages.Name is required!'),
 | 
						|
        ]);
 | 
						|
 | 
						|
        $addon = AddOn::find($id);
 | 
						|
        $addon->name = $request->name[array_search('en', $request->lang)];
 | 
						|
        $addon->price = $request->price;
 | 
						|
        $addon->save();
 | 
						|
 | 
						|
        foreach($request->lang as $index=>$key)
 | 
						|
        {
 | 
						|
            if($request->name[$index] && $key != 'en')
 | 
						|
            {
 | 
						|
                Translation::updateOrInsert(
 | 
						|
                    ['translationable_type'  => 'App\Models\AddOn',
 | 
						|
                        'translationable_id'    => $addon->id,
 | 
						|
                        'locale'                => $key,
 | 
						|
                        'key'                   => 'name'],
 | 
						|
                    ['value'                 => $request->name[$index]]
 | 
						|
                );
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        Toastr::success(translate('messages.addon_updated_successfully'));
 | 
						|
        return redirect(route('vendor.addon.add-new'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function delete(Request $request)
 | 
						|
    {
 | 
						|
        if(!Helpers::get_restaurant_data()->food_section)
 | 
						|
        {
 | 
						|
            Toastr::warning(translate('messages.permission_denied'));
 | 
						|
            return back();
 | 
						|
        }
 | 
						|
        $addon = AddOn::find($request->id);
 | 
						|
        $addon->delete();
 | 
						|
        Toastr::success(translate('messages.addon_deleted_successfully'));
 | 
						|
        return back();
 | 
						|
    }
 | 
						|
}
 | 
						|
 |