!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:     DashboardController.php (20.54 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\BecameReseller;
use 
App\Models\BillingRequest;
use 
App\Models\Domain;
use 
App\Models\Notice;
use 
App\Models\NumberRequest;
use 
App\Models\Plan;
use 
App\Models\SenderId;
use 
App\Models\Ticket;
use 
App\Models\TopUpRequest;
use 
Carbon\Carbon;
use 
App\Models\UserAnalytics;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Date;
use 
Illuminate\Support\Facades\DB;
use 
Illuminate\Support\Facades\Response;
use function 
PHPUnit\Framework\isNull;

class 
DashboardController extends Controller
{


    public function 
index()
    {
        
$user auth()->guard('customer')->user();
        
$cache_in_seconds=env('CACHE_TIME');

        
//Cache For New Message
        
$cacheNewMessageCount cache('newMessageCount_'.$user->id);
        if(
is_null($cacheNewMessageCount)) {
            
$newMessageCount $user->receive_messages()->whereDate('created_at''>='Carbon::now())->count();
            
$newMessageCount cache()->remember('newMessageCount_'.$user->id$cache_in_seconds, function () use ($newMessageCount) {
                return 
$newMessageCount;
            });
        }else{
            
$newMessageCount$cacheNewMessageCount;
        }
        
$data['newMessageCount']=$newMessageCount;

        
//Cache For Inbox Message Count
        
$cacheInboxCount cache('inboxCount_'.$user->id);
        if(
is_null($cacheInboxCount)) {
            
$inboxCount $user->message_logs()->where('type''inbox')->whereDate('created_at'Carbon::now())->count();
            
$inboxCount cache()->remember('inboxCount_'.$user->id$cache_in_seconds, function () use ($inboxCount) {
                return 
$inboxCount;
            });
        }else{
            
$inboxCount$cacheInboxCount;
        }
        
$data['inboxCount']=$inboxCount;


        
//Cache For Sent Message Count
        
$cacheSentCount cache('sentCount_'.$user->id);
        if(
is_null($cacheSentCount)) {
            
$sentCount $user->message_logs()->where('type''sent')->where('status''succeed')->whereColumn('created_at''<''updated_at')->whereDate('updated_at'Carbon::now())->count();
            
$sentCount cache()->remember('sentCount_'.$user->id$cache_in_seconds, function () use ($sentCount) {
                return 
$sentCount;
            });
        }else{
            
$sentCount$cacheSentCount;
        }
        
$data['sentCount']=$sentCount;

        
//Cache For Weekly Inbox Messages
        
$cacheInboxes cache('inboxes_'.$user->id);
        if(
is_null($cacheInboxes)) {
            
$inboxes $user->receive_messages()
                ->
select(DB::Raw('count(*) as count'),DB::Raw('DATE(created_at) day'))
                ->
whereDate('created_at''>'Carbon::now()->startOfWeek())
                ->
groupBy('day')->get()
                ->
pluck('count','day');
            
$inboxes cache()->remember('inboxes_'.$user->id$cache_in_seconds, function () use ($inboxes) {
                return 
$inboxes;
            });
        }else{
            
$inboxes$cacheInboxes;
        }

        
$weekDates=[];
        foreach (
getLastNDays(7) as $day){
            
$day=Carbon::createFromTimeString(str_replace('"','',$day." 0:00:00"));
            
$weekDates[]= $day->format('m-d-Y');
        }

        
$data['weekDates']=$weekDates;
        
$chatInboxes=[];
        foreach (
getLastNDays(7) as $day){
            
$chatInboxes[]=isset($inboxes[trim($day'"')])?$inboxes[trim($day'"')]:0;
        }
        
$data['chart_inbox']=$chatInboxes;

        
//Cache For Today Expense
        
$cacheTodayExpense cache('todayExpense_'.$user->id);
        if(
is_null($cacheTodayExpense)) {
            
$todayExpenseauth('customer')->user()->expenses()->whereDate('created_at'now())->sum('cost');
            
$todayExpense cache()->remember('todayExpense_'.$user->id$cache_in_seconds, function () use ($todayExpense) {
                return 
$todayExpense;
            });
        }else{
            
$todayExpense$cacheTodayExpense;
        }
        
$data['todayExpense']=$todayExpense;


        
//Cache For SWeekly Expense
        
$cacheWeeklyExpense cache('weeklyExpense_'.$user->id);
        if(
is_null($cacheWeeklyExpense)) {
            
$weeklyExpenseauth('customer')->user()->expenses()->whereDate('created_at','>'Carbon::now()->startOfWeek())->sum('cost');
            
$weeklyExpense cache()->remember('weeklyExpense_'.$user->id$cache_in_seconds, function () use ($weeklyExpense) {
                return 
$weeklyExpense;
            });
        }else{
            
$weeklyExpense$cacheWeeklyExpense;
        }
        
$data['weeklyExpense']=$weeklyExpense;

        
//Cache For Total Expense
        
$cacheTotalExpense cache('totalExpense_'.$user->id);
        if(
is_null($cacheTotalExpense)) {
            
$totalExpenseauth('customer')->user()->expenses()->sum('cost');
            
$totalExpense cache()->remember('totalExpense_'.$user->id$cache_in_seconds, function () use ($totalExpense) {
                return 
$totalExpense;
            });
        }else{
            
$totalExpense$cacheTotalExpense;
        }
        
$data['totalExpense']=$totalExpense;

        
//Cache For InboundResponse
        
$cacheInboundResponse cache('inboundResponse_'.$user->id);
        if(
is_null($cacheInboundResponse)) {
            
$inboundResponse auth('customer')->user()->message_logs()->whereDate('created_at'now())->where('type','inbox')->count();
            
$inboundResponse cache()->remember('inboundResponse_'.$user->id$cache_in_seconds, function () use ($inboundResponse) {
                return 
$inboundResponse;
            });
        }else{
            
$inboundResponse$cacheInboundResponse;
        }

        
//Cache For OutboundResponse
        
$cacheOutboundResponse cache('outboundResponse_'.$user->id);
        if(
is_null($cacheOutboundResponse)) {
            
$outboundResponse auth('customer')->user()->message_logs()->whereColumn('created_at''<''updated_at')->whereDate('updated_at'now())->where('type','sent')->count();
            
$outboundResponse cache()->remember('outboundResponse_'.$user->id$cache_in_seconds, function () use ($outboundResponse) {
                return 
$outboundResponse;
            });
        }else{
            
$outboundResponse$cacheOutboundResponse;
        }

        
//Cache For Weekly Sent Message
        
$cacheWeeklySent cache('weeklySent_'.$user->id);
        if(
is_null($cacheWeeklySent)) {
            
$weeklySent $user->message_logs()
                ->
select(DB::raw("COUNT(*) as count"),DB::Raw('DATE(updated_at) day'))
                ->
whereDate('updated_at''>'Carbon::now()->startOfWeek())
                ->
where('type','sent')
                ->
groupBy('day')->pluck('count','day');
            
$weeklySent cache()->remember('weeklySent_'.$user->id$cache_in_seconds, function () use ($weeklySent) {
                return 
$weeklySent;
            });
        }else{
            
$weeklySent$cacheWeeklySent;
        }

        
//Cache For Weekly Inbox Message
        
$cacheWeeklyReceived cache('weeklyReceived_'.$user->id);
        if(
is_null($cacheWeeklyReceived)) {
            
$weeklyReceived $user->message_logs()
                ->
select(DB::raw("COUNT(*) as count"),DB::Raw('DATE(created_at) day'))
                ->
whereDate('created_at''>'Carbon::now()->startOfWeek())
                ->
where('type','inbox')
                ->
groupBy('day')->pluck('count','day');
            
$weeklyReceived cache()->remember('weeklyReceived_'.$user->id$cache_in_seconds, function () use ($weeklyReceived) {
                return 
$weeklyReceived;
            });
        }else{
            
$weeklyReceived$cacheWeeklyReceived;
        }
        
//End


        
$weeklyResponseArray=[];
        foreach (
getLastNDays(7) as $day){
            
$day=trim($day,'"');
            if(isset(
$weeklySent[$day]) && isset($weeklyReceived[$day]) && $weeklyReceived[$day]>){
                
$weeklyResponseArray[]= round(($weeklyReceived[$day]/$weeklySent[$day] ) * 1002);
            }else{
                
$weeklyResponseArray[]=0;
            }
        }

        
//Cache For All Inbound Message
        
$cacheAllInboundResponse cache('allInboundResponse_'.$user->id);
        if(
is_null($cacheAllInboundResponse)) {
            
$allInboundResponse $user->message_logs()->where('type','inbox')->count();
            
$allInboundResponse cache()->remember('allInboundResponse_'.$user->id$cache_in_seconds, function () use ($allInboundResponse) {
                return 
$allInboundResponse;
            });
        }else{
            
$allInboundResponse$cacheAllInboundResponse;
        }
        
//End


        //Cache For All Sent Message
        
$cacheAllOutboundResponse cache('allOutboundResponse_'.$user->id);
        if(
is_null($cacheAllOutboundResponse)) {
            
$allOutboundResponse $user->message_logs()->where('type','sent')->count();
            
$allOutboundResponse cache()->remember('allOutboundResponse_'.$user->id$cache_in_seconds, function () use ($allOutboundResponse) {
                return 
$allOutboundResponse;
            });
        }else{
            
$allOutboundResponse$cacheAllOutboundResponse;
        }
        
//End


        //Cache For Total Message
        
$cacheTodayTotalMessages cache('todayTotalMessages_'.$user->id);
        if(
is_null($cacheTodayTotalMessages)) {
            
$todayTotalMessages $user->message_logs()->where('type''sent')->whereColumn('created_at''<''updated_at')->whereDate('updated_at'now())->count();
            
$todayTotalMessages cache()->remember('todayTotalMessages_'.$user->id$cache_in_seconds, function () use ($todayTotalMessages) {
                return 
$todayTotalMessages;
            });
        }else{
            
$todayTotalMessages$cacheTodayTotalMessages;
        }
        
//End


       // TODO::Failed Message Reports
        //Cache For Total Failed Message
        
$cacheTotalFailed cache('totalFailed_'.$user->id);
        if(
is_null($cacheTotalFailed)) {
            
$totalFailed $user->message_logs()->where('type''sent')->where('status''failed')->count();
            
$totalFailed cache()->remember('totalFailed_'.$user->id$cache_in_seconds, function () use ($totalFailed) {
                return 
$totalFailed;
            });
        }else{
            
$totalFailed$cacheTotalFailed;
        }
        
//End

        //Cache For Daily Failed Message
        
$cacheDailyFailed cache('dailyFailed_'.$user->id);
        if(
is_null($cacheDailyFailed)) {
            
$dailyFailed $user->message_logs()->where('type''sent')->where('status''failed')->whereColumn('created_at''<''updated_at')->whereDate('updated_at'now())->count();
            
$dailyFailed cache()->remember('dailyFailed_'.$user->id$cache_in_seconds, function () use ($dailyFailed) {
                return 
$dailyFailed;
            });
        }else{
            
$dailyFailed$cacheDailyFailed;
        }
        
//End

        //Cache For Weekly Failed Message
        
$cacheWeeklyFailed cache('weeklyFailed_'.$user->id);
        if(
is_null($cacheWeeklyFailed)) {
            
$weeklyFailed $user->message_logs()->where('type''sent')->whereDate('updated_at','>'Carbon::now()->startOfWeek())->count();
            
$weeklyFailed cache()->remember('weeklyFailed_'.$user->id$cache_in_seconds, function () use ($weeklyFailed) {
                return 
$weeklyFailed;
            });
        }else{
            
$weeklyFailed$cacheWeeklyFailed;
        }
        
//TODO::End Failed Message Report


        //TODO::Delivered Message Reports
        //Cache For Total Delivered Message
        
$cacheTotalDelivered cache('totalDelivered_'.$user->id);
        if(
is_null($cacheTotalDelivered)) {
            
$totalDelivered $user->message_logs()->where('status''succeed')->whereColumn('created_at''<''updated_at')->where('type''sent')->count();
            
$totalDelivered cache()->remember('totalDelivered_'.$user->id$cache_in_seconds, function () use ($totalDelivered) {
                return 
$totalDelivered;
            });
        }else{
            
$totalDelivered$cacheTotalDelivered;
        }

        
//Cache For Total Delivered Message
        
$cacheDailyDelivered cache('dailyDelivered_'.$user->id);
        if(
is_null($cacheDailyDelivered)) {
            
$dailyDelivered $user->message_logs()->where('status''succeed')->whereColumn('created_at''<''updated_at')->whereDate('updated_at'now())->where('type''sent')->count();
            
$dailyDelivered cache()->remember('dailyDelivered_'.$user->id$cache_in_seconds, function () use ($dailyDelivered) {
                return 
$dailyDelivered;
            });
        }else{
            
$dailyDelivered$cacheDailyDelivered;
        }
        
//Cache For Total Delivered Message
        
$cacheWeeklyDelivered cache('weeklyDelivered_'.$user->id);
        if(
is_null($cacheWeeklyDelivered)) {
            
$weeklyDelivered $user->message_logs()->where('status''succeed')->whereColumn('created_at''<''updated_at')->whereDate('updated_at','>'Carbon::now()->startOfWeek())->where('type''sent')->count();
            
$weeklyDelivered cache()->remember('weeklyDelivered_'.$user->id$cache_in_seconds, function () use ($weeklyDelivered) {
                return 
$weeklyDelivered;
            });
        }else{
            
$weeklyDelivered$cacheWeeklyDelivered;
        }



        
$data['weeklyResponseArray']=$weeklyResponseArray;
        
$data['dailyResponseRate'] = $outboundResponse && $inboundResponse 0?formatNumber(($inboundResponse $outboundResponse) * 100):0;
        
$data['responseRate'] = $allOutboundResponse && $allInboundResponse 0?formatNumber(($allInboundResponse $allOutboundResponse) * 100):0;

        
$data['deliveryRate'] =$todayTotalMessages && $dailyDelivered formatNumber(($dailyDelivered 100) / $todayTotalMessages) : 0;


        
$data['blockRate'] = $totalFailed && $totalDelivered formatNumber($totalFailed  $totalDelivered) : 0;
        
$data['dailyBlockRate'] = $dailyFailed && $dailyDelivered formatNumber($dailyFailed $dailyDelivered) : 0;
        
$data['weeklyBlockRate'] =$weeklyDelivered && $weeklyFailed formatNumber($weeklyFailed  $weeklyDelivered) : 0;




//      Check Settings
        
$cacheSellerRequest cache('sellerRequest_'.$user->id);
        if(
is_null($cacheSellerRequest)) {
            
$sellerRequest BecameReseller::where('customer_id'$user->id)->where('status''approved')->first();
            
$sellerRequest cache()->remember('sellerRequest_'.$user->id$cache_in_seconds, function () use ($sellerRequest) {
                return 
$sellerRequest;
            });
        }else{
            
$sellerRequest$cacheSellerRequest;
        }

        
$cacheDomain cache('domain_'.$user->id);
        if(
is_null($cacheDomain)) {
            
$domain=Domain::where('customer_id'$user->id)->where('status''approved')->first();
            
$domain cache()->remember('domain_'.$user->id$cache_in_seconds, function () use ($domain) {
                return 
$domain;
            });
        }else{
            
$domain$cacheDomain;
        }
        
$cachePlans cache('plans_'.$user->id);
        if(
is_null($cachePlans)) {
            
$plans=Plan::where('admin_id'$user->id)->where('added_by''!=''admin')->count();
            
$plans cache()->remember('plans_'.$user->id$cache_in_seconds, function () use ($plans) {
                return 
$plans;
            });
        }else{
            
$plans$cachePlans;
        }

        
$availableSettings=[];

        if(!
$sellerRequest){
            
$availableSettings[]=trans("Verify Account");
        }
        if(!
$domain){
            
$availableSettings[]=trans("Configure Domain");
        }
        if(
$plans <= 0){
            
$availableSettings[]=trans("Create Plan for Users");
        }


        
$data['available_setting']=$availableSettings;

        return 
view('customer.dashboard'$data);
    }

    public function 
downloadAttach(Request $request){

        
$user=auth('customer')->user();

        
$notice=Notice::where('status''active')->whereIn('for', [$user->type'all'])->where('id'$request->id)->firstOrFail();

        
$file=isset($notice->attached_data)?public_path('uploads/'.$notice->attached_data):'';

        if(!
file_exists($file) || !$notice->attached_data){
            return 
redirect()->back()->withErrors(['failed'=>'File does not exist']);
        }

        return 
Response::download($file);
    }

    public function 
viewAllNotices(){

        return 
view('customer.notices');
    }

    public function 
countNotification(){
        
$customer=auth('customer')->user();
        if(
$customer->type=='master_reseller'){
            
$addedBy='master_reseller';
        }else if(
$customer->type=='reseller'){
            
$addedBy='reseller';
        }else{
            
$data=[
                
'plan_request'=>0,
                
'topUpReq'=>0,
            ];
            return 
response()->json([ $data'status'=>'success'], 200);
        }

        
$sellerCustomers=$customer->customers()->pluck('id');
        
$plans $customer->plans()->where('added_by'$addedBy)->pluck('id');
        
$planReq=BillingRequest::whereIn('plan_id'$plans)->where('status''pending')->count();
        if (
$customer->type == 'master_reseller') {
            
$topup_requests TopUpRequest::where('admin_id'$customer->id)->where('status''pending')
                ->
whereIn('customer_type', ['reseller''master_reseller_customer'])->count();
        } else if (
$customer->type == 'reseller') {
            
$topup_requests TopUpRequest::where('admin_id'$customer->id)->where('status''pending')->where('customer_type''reseller_customer')->count();
        }

        
$inboxCount $customer->message_logs()->where('type''inbox')->where('is_read''no')->count();


        
$data=[
            
'plan_request'=>$planReq,
            
'topUpReq'=>$topup_requests,
            
'inboxCount'=>$inboxCount,
        ];
        return 
response()->json([ $data'status'=>'success'], 200);
    }

    public function 
clearCache(){
        
$customer=auth('customer')->user();
        
cache()->forget('newMessageCount_'.$customer->id);
        
cache()->forget('inboxCount_'.$customer->id);
        
cache()->forget('sentCount_'.$customer->id);
        
cache()->forget('inboxes_'.$customer->id);
        
cache()->forget('todayExpense_'.$customer->id);
        
cache()->forget('weeklyExpense_'.$customer->id);
        
cache()->forget('totalExpense_'.$customer->id);
        
cache()->forget('outboundResponse_'.$customer->id);
        
cache()->forget('weeklySent_'.$customer->id);
        
cache()->forget('weeklyReceived_'.$customer->id);
        
cache()->forget('allInboundResponse_'.$customer->id);
        
cache()->forget('allOutboundResponse_'.$customer->id);
        
cache()->forget('todayTotalMessages_'.$customer->id);
        
cache()->forget('totalFailed_'.$customer->id);
        
cache()->forget('dailyFailed_'.$customer->id);
        
cache()->forget('weeklyFailed_'.$customer->id);
        
cache()->forget('weeklyFailed_'.$customer->id);
        
cache()->forget('totalDelivered_'.$customer->id);
        
cache()->forget('dailyDelivered_'.$customer->id);
        
cache()->forget('weeklyDelivered_'.$customer->id);
        
cache()->forget('sellerRequest_'.$customer->id);
        
cache()->forget('domain_'.$customer->id);
        
cache()->forget('plans_'.$customer->id);
        
cache()->forget('wallet_'.$customer->id);

        return 
redirect()->back()->with('success'trans('customer.messages.cache_cleared'));
    }
    public function 
store_user_browser_data(Request $request)
    {
        
$request->validate([
            
'country' => 'required',
            
'browser' => 'required',
            
'os' => 'required'
        
]);

        
$auth_id auth()->user()->id;




        
$user_analytics UserAnalytics::where('browser'$request->browser)->where('customer_id'$auth_id)->first();
        if(!
$user_analytics){
            
$user_analytics=new UserAnalytics();
            
$user_analytics->customer_id=$auth_id;
            
$user_analytics->browser=$request->browser;
        }

        
$now Carbon::now();
        
$lastUpdated $user_analytics->updated_at Carbon::parse($user_analytics->updated_at) : null;

        if (
$lastUpdated === null || $now->diffInMinutes($lastUpdated) >= 15) {
            
$user_analytics->os $request->os;
            
$user_analytics->country $request->country;
            
$user_analytics->browser $request->browser;
            
$user_analytics->counter $user_analytics->counter 1;
            
$user_analytics->updated_at $now;
            
$user_analytics->save();
        }
        

        return 
response()->json(['status' => 'success']);
    }
}

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