!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/smab.picotech.app/public_html/app/Http/Controllers/Api/   drwxr-xr-x
Free 29.39 GB of 117.98 GB (24.91%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

namespace App\Http\Controllers\Api;

use 
App\Http\Controllers\Controller;
use 
Illuminate\Http\Request;
use 
App\Models\User;
use 
App\Models\Category;
use 
App\Models\CategoryDescription;
use 
App\Models\Banner;
use 
App\Models\Country;
use 
App\Models\BannerImage;
use 
App\Models\Product;
use 
App\Models\ProductRelatedAttribute;
use 
App\Models\ProductAttributeGroup;
use 
App\Models\ProductDescription;
use 
App\Models\ProductRelated;
use 
App\Models\ProductSpecial;
use 
App\Models\ProductImage;
use 
App\Models\StoreProductOption;
use 
App\Models\Manufacturer;
use 
App\Models\Review;
use 
App\Models\DOD;
use 
App\Models\Page;
use 
App\Models\Language;
use 
Validator;
use 
File;
use 
DB;
use 
Auth;
use 
Carbon\Carbon;

class 
GeneralApiController extends Controller
{

    public function 
__construct()
    {
    }

    
//homepage init api
    
public function getHomePageInit(Request $request)
    {
        try {
            
//set language
            
$lang Language::where('code'$request->get('language') ? $request->get('language') : 'en')->first();
            
session()->put('currentLanguage'$lang->id);
            
session()->save();

            
$deviceID $request->get('device_id''');
            
$deviceType $request->get('deviceType''');
            if (
$deviceID != '') {
                
//insert device
                
$checkExists DB::table('devices')->where('device_id'$deviceID)->first();
                if (!
$checkExists) {
                    
DB::table('devices')->insert(['device_id' => $deviceID'device_type' => $deviceType]);
                }
            }

            
//homepage categories
            
$categories Category::select('category_id''image''parent_id''sort_order''status')
                ->
with('categoryDescription:name,category_id')
                ->
where('status''1')->orderBy('sort_order''ASC')->get()->toArray();

            
$data['categories'] = buildTree($categories09);

            
//homepage banners
            
$brands file_get_contents(base_path() . '/storage/app/apphomepageSlider.json');
            
$data['homepageSlider'] = json_decode($brands);

            
//banners
            
$brands file_get_contents(base_path() . '/storage/app/appbanner.json');
            
$data['banners'] = json_decode($brands);

            
//homepage manufacturers
            
$brands file_get_contents(base_path() . '/storage/app/brands.json');
            
$data['manufacturers'] = json_decode($brands);

            
//Featured Products
            
$featureProduct file_get_contents(base_path() . '/storage/app/featuredProducts.json');
            
$data['featuredproducts'] = json_decode($featureProduct);

            
//homepage DOD
            
$getDodProducts file_get_contents(base_path() . '/storage/app/dodProducts.json');
            
$data['dodProducts'] = json_decode($getDodProducts);

            
//homepage new arrival
            
$data['newProducts'] = Product::select('id''image''category_id''model''price''quantity''sort_order''status''date_available')
                ->
with('productDescription:name,id,product_id''special:product_id,price,start_date,end_date')
                ->
withCount([
                    
'productReview as review_avg' => function ($query) {
                        
$query->select(DB::raw('avg(rating)'));
                    }
                ])
                ->
orderBy('created_at''DESC')
                ->
where('date_available''<='date('Y-m-d'))
                ->
where('status''1')
                ->
take(4)
                ->
get();

            return [
'status' => 1'data' => $data];
        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }
    }

    
//homepage api
    
public function getHomePage(Request $request)
    {
        try {
            
$data = [];
            
$lang Language::where('code'$request->get('language') ? $request->get('language') : 'en')->first();
            
session()->put('currentLanguage'$lang->id);
            
session()->save();

            
//homepage Trending
            
$data['trendingProducts'] = Product::select('id''image''category_id''model''price''quantity''sort_order''status''date_available')
                ->
with('productDescription:name,id,product_id''special:product_id,price,start_date,end_date')
                ->
withCount([
                    
'productReview as review_avg' => function ($query) {
                        
$query->select(DB::raw('avg(rating)'));
                    }
                ])
                ->
where('date_available''<='date('Y-m-d'))
                ->
where('status''1')
                ->
orderBy('viewed''DESC')
                ->
take(4)
                ->
get();

            if (!
$request->get('reactnativeapp')) {
                
//homepage DOD
                
$dealsFlutter DOD::select('id''product_id')
                    ->
with('productDescription:name,id,product_id''special:product_id,price,start_date,end_date''productDetails:id,image,price,quantity,sort_order,status,date_available')
                    ->
withCount([
                        
'productReview as review_avg' => function ($query) {
                            
$query->select(DB::raw('avg(rating)'));
                        }
                    ])
                    ->
whereHas('productDetails', function ($q) {
                        
$q->where('date_available''<='date('Y-m-d'));
                        
$q->where('status''1');
                        
$q->orderBy('sort_order''ASC');
                    })
                    ->
whereHas('special', function ($q) {
                        
$q->where('start_date''<='date('Y-m-d'));
                        
$q->where('end_date''>='date('Y-m-d'));
                    })
                    ->
take(4)
                    ->
get();

                
$flutterDOD = [];
                foreach (
$dealsFlutter as $key => $value) {
                    
$flutterDOD[] = [
                        
'id' => $value->id,
                        
'product_id' => $value->product_id,
                        
'review_avg' => $value->review_avg,
                        
'product_description' => $value->productDescription,
                        
'special' => $value->special,
                        
'image' => $value->productDetails->image,
                        
'price' => $value->productDetails->price,
                        
'quantity' => $value->productDetails->quantity,
                        
'sort_order' => $value->productDetails->sort_order,
                        
'date_available' => $value->productDetails->date_available
                    
];
                }
                
$data['flutter_dod'] = $flutterDOD;
            }

            
$categoriesArr DB::table('homepage_categories')
                ->
join('category''category.category_id''=''homepage_categories.category_id')
                ->
join('category_description''category_description.category_id''=''homepage_categories.category_id')
                ->
select('category.category_id''category_description.name''homepage_categories.sort_order''homepage_categories.id')
                ->
where('category_description.language_id'$lang->id)
                ->
orderBy('homepage_categories.sort_order''ASC')
                ->
get()
                ->
toArray();

            
$dataCatWiseProducts = [];

            foreach (
$categoriesArr as $key => $value) {

                
$ids = [(int) $value->category_id];
                
//check if parent cat
                
$getChildCats Category::where('parent_id'$value->category_id)->select('category_id')->get()->toArray();

                foreach (
$getChildCats as $key => $value2) {
                    
$ids[] = $value2['category_id'];
                }

                
$catProducts Product::with('category:name,category_id''productDescription:id,product_id,name''special:product_id,price,start_date,end_date')
                    ->
select('id''image''category_id''model''price''quantity''sort_order''status''date_available')
                    ->
whereIn('category_id'$ids)
                    ->
orderBy('created_at''DESC')
                    ->
where('date_available''<='date('Y-m-d'))
                    ->
where('status''1')->take(10)->get()->toArray();

                
$dataCatWiseProducts[$value->name] = $catProducts;
            }

            
$data['categoryWiseProduct'] = $dataCatWiseProducts;

            return [
'status' => 1'data' => $data];

        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }
    }

    
//new products
    
public function getNewProducts()
    {
        try {
            
$data = [];
            
$data Product::select('id''image''category_id''model''price''quantity''sort_order''status''date_available')
                ->
with('productDescription:name,id,product_id''special:product_id,price,start_date,end_date')
                ->
withCount([
                    
'productReview as review_avg' => function ($query) {
                        
$query->select(DB::raw('avg(rating)'));
                    }
                ])
                ->
orderBy('created_at''DESC')
                ->
where('date_available''<='date('Y-m-d'))
                ->
where('status''1')
                ->
take(20)
                ->
get();
            return [
'status' => 1'data' => $data];
        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }
    }

    
//dod products
    
public function getDODProducts()
    {
        try {
            
$data = [];
            
$data DOD::select('id''product_id')
                ->
with('productDescription:name,id,product_id''special:product_id,price,start_date,end_date''productDetails:id,image,price,quantity,sort_order,status,date_available')
                ->
withCount([
                    
'productReview as review_avg' => function ($query) {
                        
$query->select(DB::raw('avg(rating)'));
                    }
                ])
                ->
whereHas('productDetails', function ($q) {
                    
$q->where('date_available''<='date('Y-m-d'));
                    
$q->where('status''1');
                    
$q->orderBy('sort_order''ASC');
                })
                ->
whereHas('special', function ($q) {
                    
$q->where('start_date''<='date('Y-m-d'));
                    
$q->where('end_date''>='date('Y-m-d'));
                })
                ->
take(25)
                ->
get();

            
$flutterDOD = [];
            foreach (
$data as $key => $value) {
                
$flutterDOD[] = [
                    
'id' => $value->id,
                    
'product_id' => $value->product_id,
                    
'review_avg' => $value->review_avg,
                    
'product_description' => $value->productDescription,
                    
'special' => $value->special,
                    
'image' => $value->productDetails->image,
                    
'price' => $value->productDetails->price,
                    
'quantity' => $value->productDetails->quantity,
                    
'sort_order' => $value->productDetails->sort_order,
                    
'date_available' => $value->productDetails->date_available
                
];
            }


            return [
'status' => 1'data' => $data'flutterDOD' => $flutterDOD];
        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }
    }

    
//trending products
    
public function getTrendingProducts()
    {
        try {
            
$data = [];
            
$data Product::select('id''image''category_id''model''price''quantity''sort_order''status''date_available')
                ->
with('productDescription:name,id,product_id''special:product_id,price,start_date,end_date')
                ->
withCount([
                    
'productReview as review_avg' => function ($query) {
                        
$query->select(DB::raw('avg(rating)'));
                    }
                ])
                ->
where('date_available''<='date('Y-m-d'))
                ->
where('status''1')
                ->
orderBy('viewed''DESC')
                ->
take(20)
                ->
get();

            return [
'status' => 1'data' => $data];
        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }
    }

    
//get categories
    
public function getCategories(User $user)
    {
        
$categories Category::select('category_id''image''parent_id''sort_order''status')
            ->
with('categoryDescription:name,category_id')
            ->
where('status''1')->orderBy('sort_order''ASC')->get()->toArray();

        
//build tree
        
$tree buildTree($categories);

        return [
'status' => 1'data' => $tree];
        
//}
        // catch (\Exception $e) {
        //  return ['status'=> 0,'message'=>'Error'];
        //  }
    
}

    
//get categories
    
public function getManufacturers(User $user)
    {
        try {
            
$menufacturers Manufacturer::select('id''name''status''sort_order''image')
                ->
where('status''1')
                ->
orderBy('sort_order''ASC')
                ->
get()
                ->
toArray();

            return [
'status' => 1'data' => $menufacturers];
        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }
    }

    
//search products
    
public function searchProducts(Request $request)
    {
        try {
            
$keyword $request->get('q''');
            
$records Product::select('id''image''price''quantity''sort_order''status')
                ->
with('productDescription:name,id,product_id''special:product_id,price,start_date,end_date')
                ->
when($keyword, function ($q) use ($keyword) {
                    
$q->orderBy('sort_order''ASC');
                    
$q->whereHas('productDescription', function ($q) use ($keyword) {
                        
$q->where('name''like'"%$keyword%");
                    });
                })->
take(10)
                ->
get();

            return [
'status' => 1'data' => $records];
        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }

    }

    
//get product details
    
public function productDetails($id)
    {

        try {
            
$data = [];
            if (
Product::find($id)) {
                
$relatedIds ProductRelated::getRelatedIds($id);
                
$data['reletedProducts'] = [];
                
$data['productImages'] = [];
                if (
count($relatedIds) > 0) {
                    
$data['reletedProducts'] = Product::select('id''image''price''quantity''sort_order''status''date_available')
                        ->
withCount([
                            
'productReview as review_avg' => function ($query) {
                                
$query->select(DB::raw('avg(rating)'));
                            }
                        ])
                        ->
with('productDescription:name,id,product_id''special:product_id,price,start_date,end_date')
                        ->
orderBy('sort_order''ASC')
                        ->
whereIn('id'$relatedIds)->get();
                }

                
$productRelatedAttribute ProductRelatedAttribute::
                    
join('product_attributes''product_attributes.id''=''product_related_attributes.attribute_id')
                    ->
join('product_attribute_description''product_attribute_description.attribute_id''=''product_attributes.id')
                    ->
join('product_attribute_groups''product_attribute_groups.id''=''product_attributes.group_id')
                    ->
join('product_attribute_group_description''product_attribute_group_description.attribute_group_id''=''product_attribute_groups.id')
                    ->
select(
                        
'product_related_attributes.*',
                        
'product_attributes.group_id',
                        
'product_attribute_description.name',
                        
'product_attribute_group_description.name as groupName'
                    
)
                    ->
where('product_related_attributes.product_id'$id)
                    ->
where('product_attribute_group_description.language_id'session()->get('currentLanguage'))
                    ->
where('product_attribute_description.language_id'session()->get('currentLanguage'))
                    ->
wherenull('product_attribute_description.deleted_at')
                    ->
wherenull('product_attribute_group_description.deleted_at')
                    ->
get()
                    ->
toArray();

                
$result = array();
                foreach (
$productRelatedAttribute as $element) {
                    
$result[$element['groupName']][] = $element;
                }

                
$data['productAttributes'] = $result;
                
$data['productSpecial'] = ProductSpecial::where('start_date''<='date('Y-m-d'))->where('end_date''>='date('Y-m-d'))->where('product_id'$id)->first();
                
$data['productImages'] = ProductImage::where('product_id'$id)->orderBy('sort_order_image''ASC')->take(10)->get();
                
$data['data'] = Product::with('category:name,category_id''productDescription:id,product_id,name,description')->findOrFail($id);
                
$productOptionsData StoreProductOption::where('product_id'$id)
                    ->
join('product_options''product_options.id''=''store_product_option.option_id')
                    ->
join('product_option_description''product_option_description.option_id''=''store_product_option.option_id')
                    ->
select('store_product_option.*''product_option_description.name''product_options.type')
                    ->
where('product_option_description.language_id'session()->get('currentLanguage'))
                    ->
get();
                
$reviews Review::where('product_id'$id)->where('status'1)->get();
                
$data['totalReviews'] = count($reviews);
                
$sumReview 0;
                
$star1 0;
                
$star2 0;
                
$star3 0;
                
$star4 0;
                
$star5 0;

                foreach (
$reviews as $key => $value) {

                    
$sumReview += $value->rating;
                    if (
$value->rating && $value->rating <= 1.9) {
                        
$star1++;
                    } else if (
$value->rating >= && $value->rating <= 2.9) {
                        
$star2++;
                    } else if (
$value->rating >= && $value->rating <= 3.9) {
                        
$star3++;
                    } else if (
$value->rating >= && $value->rating <= 4.9) {
                        
$star4++;
                    } else if (
$value->rating >= 4.9 && $value->rating <= 5) {
                        
$star5++;
                    }
                }

                
$data['star1'] = $star1 number_format($star1 $data['totalReviews'] * 1002) : "0";
                
$data['star2'] = $star2 number_format($star2 $data['totalReviews'] * 1002) : "0";
                
$data['star3'] = $star3 number_format($star3 $data['totalReviews'] * 1002) : "0";
                
$data['star4'] = $star4 number_format($star4 $data['totalReviews'] * 1002) : "0";
                
$data['star5'] = $star5 number_format($star5 $data['totalReviews'] * 1002) : "0";

                
$data['avgReview'] = $sumReview number_format($sumReview $data['totalReviews'], 2) : "0";

                
$productOptions = [];
                
$optionName '';
                foreach (
$productOptionsData as $key => $value) {
                    
$productOptions[$value->name][] = $value;
                }
                
$data['productOptions'] = $productOptions;

                return [
'status' => 1'data' => $data];
            } else {
                return [
'status' => 0'data' => 'Product not found!'];
            }
        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }
    }

    
//increment product view count
    // public function incrementProductView($id) {
    //   try {
    //       Product::where('id',$id)->increment('viewed',1);
    //       return ['status'=>1];
    //   } catch (\Exception $e) {
    //     return ['status'=> 0,'message'=>'Error'];
    //   }
    // }

    //get product by category id
    
public function getProductByCategory($idRequest $request)
    {

        try {

            
$ids = [(int) $id];

            
//check if parent cat
            
$getChildCats Category::where('parent_id'$id)->select('category_id')->get()->toArray();

            foreach (
$getChildCats as $key => $value) {
                
$ids[] = $value['category_id'];
            }

            
$data Product::with('category:name,category_id''productDescription:id,product_id,name''special:product_id,price,start_date,end_date')
                ->
withCount([
                    
'productReview as review_avg' => function ($query) {
                        
$query->select(DB::raw('avg(rating)'));
                    }
                ])
                ->
select('id''image''category_id''model''price''quantity''sort_order''status''date_available')
                ->
whereIn('category_id'$ids)
                ->
orderBy('created_at''DESC')
                ->
where('date_available''<='date('Y-m-d'));

            if (!empty(
$request->filterPrice)) {
                
$data $data->where('price''<='$request->filterPrice);
            }
            if (!empty(
$request->filterPriceRange)) {
                
$getRange explode(','$request->filterPriceRange);
                
$data $data->where('price''>='$getRange[0])->where('price''<='$getRange[1]);
            }
            if (!empty(
$request->filterRating)) {
                
$data $data->whereHas('productReview', function ($q) use ($request) {
                    
$q->where('rating''>='$request->filterRating 1);
                    
$q->where('rating''<='$request->filterRating);
                });
            }

            
$data $data->where('status''1')->paginate($this->defaultPaginate);

            
$categoryData Category::select('category_id')
                ->
with('categoryDescription:name,category_id')->where('category_id'$id)->first();

            return [
'status' => 1'productsList' => $data'categoryData' => $categoryData];

        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }

    }

    
//get product by manufacturer id
    
public function getProductByManufacturer(Request $request$id)
    {

        try {
            
$data Product::with('category:name,category_id''productDescription:id,product_id,name''special:product_id,price,start_date,end_date')
                ->
withCount([
                    
'productReview as review_avg' => function ($query) {
                        
$query->select(DB::raw('avg(rating)'));
                    }
                ])
                ->
select('id''image''category_id''model''price''quantity''sort_order''status''date_available')
                ->
whereHas('productManufacturer', function ($q) use ($id) {
                    
$q->where('id'$id);
                });

            
//if filter applied
            
if (!empty($request->filterPrice)) {
                
$data $data->where('price''<='$request->filterPrice);
            }
            if (!empty(
$request->filterPriceRange)) {
                
$getRange explode(','$request->filterPriceRange);
                
$data $data->where('price''>='$getRange[0])->where('price''<='$getRange[1]);
            }
            if (!empty(
$request->filterRating)) {
                
$data $data->whereHas('productReview', function ($q) use ($request) {
                    
$q->where('rating''>='$request->filterRating 1);
                    
$q->where('rating''<='$request->filterRating);
                });
            }

            
$data $data->orderBy('created_at''DESC')
                ->
where('date_available''<='date('Y-m-d'))
                ->
where('status''1')->paginate($this->defaultPaginate);

            
$brandData Manufacturer::where('id'$id)->first();

            return [
'status' => 1'productsList' => $data'brandData' => $brandData];

        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }
    }

    
//cms pages
    
public function getPages($id)
    {
        try {
            
$data Page::findOrFail($id);
            if (
$data) {
                return [
'status' => 1'data' => $data];
            } else {
                return [
'status' => 0'message' => 'Not found!'];
            }
        } catch (
\Exception $e) {
            return [
'status' => 0'message' => 'Error'];
        }
    }

    
//check Login
    
public function checkLogin()
    {
        
$status 0;
        if (
Auth::guard('customer')->check()) {
            
$status 1;
        }
        return [
"status" => 1'loginStatus' => $status];
    }

    
//get payment methods Login
    
public function getPaymentMethods()
    {
        
$data DB::table('payment_methods')->where('status'1)->get();
        return [
"status" => 1'payment_methods' => $data];
    }

    
//clear cache
    
public function checkCache(Request $request)
    {
        
$deviceID $request->get('device_id''');

        
$checkExists DB::table('devices')->where('device_id'$deviceID)->first();
        
$clearCache false;
        if (!
$checkExists) {
            
$clearCache true;
        } else {
            
$clearCache $checkExists->clear_cache == false true;
        }

        return [
'status' => 1'clearCache' => $clearCache'device' => $deviceID];
    }

    
//set cache valuee
    
public function setCacheFalse(Request $request)
    {
        
$deviceID $request->get('device_id''');
        
DB::table('devices')->where('device_id'$deviceID)->update(['clear_cache' => 0]);
        return [
'status' => 1'clearCache' => $clearCache];
    }



}

//cat parent child function
function buildTree($elements$parentId 0$limit 100)
{
    
$branch = array();
    
$i 1;
    foreach (
$elements as $element) {
        if (
$element['parent_id'] == $parentId) {
            if (
$i $limit) {
                
$children buildTree($elements$element['category_id']);

                if (
$children) {
                    
$element['children'] = $children;
                }
                
$branch[] = $element;
            }
            
$i++;
        }
    }

    return 
$branch;
}

:: 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.0078 ]--