KUJUNTI.ID MINISH3LL
Path : /var/www/html/mini-moneyexchange/app/Http/Controllers/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/mini-moneyexchange/app/Http/Controllers/ExchangeController.php


<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Models\Bank;
use App\Models\BankAccount;
use App\Models\Transaction;
use App\Models\BankAccountTransaction;
use App\Models\Currency;
use App\Models\User;
use App\Models\Setting;
use App\Models\MoneyExchangeList;
use App\Http\Controllers\Controller;
use Intanode\ReceiptPrinter\ReceiptPrinter as ReceiptPrinter;
use App\Exports\TransactionExport;
use App\Exports\TransactionExport1;
use Maatwebsite\Excel\Facades\Excel;
use Carbon\Carbon;
// use Illuminate\Support\Facades\Mail;
// use App\Mail\BankMail;
class ExchangeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
        
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */

    public function store(Request $request)
    {

       
        $datas = $request->all();        
        $datas['user_id'] = Auth::id();
        // dd($datas);
        $bankAccountExchangeFrom = BankAccount::where('is_bank', false)->where('is_active', true)->where('responsible_by_user_id',$datas['user_id'])->where('currency_id',$datas['exchange_from_id'])->orderBy('id','desc')->first();
        $bankAccountExchangeTo = BankAccount::where('is_bank', false)->where('is_active', true)->where('responsible_by_user_id',$datas['user_id'])->where('currency_id',$datas['exchange_to_id'])->orderBy('id','desc')->first();

        if($bankAccountExchangeFrom && $bankAccountExchangeTo) {
            $datas['amount'] = $datas['exchange_from_amount'];
            $datas['amount_after_exchange'] = $datas['exchange_to_amount'];    
            $datas['bank_account_id'] = $bankAccountExchangeFrom->id;
            $datas['already_print'] = false;

            $t = Transaction::create($datas);

            //update receive bank      
            $t1 = BankAccountTransaction::create(['bank_account_id'=>$bankAccountExchangeFrom->id,
                            'transaction_type'=>'in',
                            'credit_before_transaction'=>$bankAccountExchangeFrom->credit,
                            'credit_after_transaction'=>$bankAccountExchangeFrom->credit+$datas['amount'],
                            'user_id'=>Auth::id(),
                            'amount'=>$datas['amount'],
                            'note'=>'t-'.$t->id,
                            'transaction_id'=>$t->id
                        ]);
            $bankAccountExchangeFrom->credit = $bankAccountExchangeFrom->credit+$datas['amount'];
            $bankAccountExchangeFrom->save();
            
            //update bank after give to customer exchange
            $t2 =BankAccountTransaction::create(['bank_account_id'=>$bankAccountExchangeTo->id,
                            'transaction_type'=>'out',
                            'credit_before_transaction'=>$bankAccountExchangeTo->credit,
                            'credit_after_transaction'=>$bankAccountExchangeTo->credit-$datas['amount_after_exchange'],
                            'user_id'=>Auth::id(),
                            'amount'=>$datas['amount_after_exchange'],
                            'note'=>'t-'.$t->id,
                            'transaction_id'=>$t->id
                    ]);
            $bankAccountExchangeTo->credit = $bankAccountExchangeTo->credit-$datas['amount_after_exchange'];
            $bankAccountExchangeTo->save();

            // update credit after transaction
            $t->credit_khr = BankAccount::where('responsible_by_user_id', $datas['user_id'])->where('is_bank', false)->where('currency_id',3)->where('is_active', true)->first()->credit??0;
            $t->credit_usd = BankAccount::where('responsible_by_user_id', $datas['user_id'])->where('is_bank', false)->where('currency_id',1)->where('is_active', true)->first()->credit??0;
            $t->credit_thb = BankAccount::where('responsible_by_user_id', $datas['user_id'])->where('is_bank', false)->where('currency_id',2)->where('is_active', true)->first()->credit??0;

            $t->credit_thb = BankAccount::where('responsible_by_user_id', $datas['user_id'])->where('is_bank', false)->where('currency_id',2)->where('is_active', true)->first()->credit??0;
            $t->credit_thb = BankAccount::where('responsible_by_user_id', $datas['user_id'])->where('is_bank', false)->where('currency_id',2)->where('is_active', true)->first()->credit??0;
            $t->credit_thb = BankAccount::where('responsible_by_user_id', $datas['user_id'])->where('is_bank', false)->where('currency_id',2)->where('is_active', true)->first()->credit??0;
            $t->save();


            return redirect()->route('exchange-money.create',$t->id)->with('success', __('message.exchange money').' '.__('message.saved successfully'));
        }
        else {
            return redirect()->route('exchange-money.create')->with('error', __('message.bank account configuration is not correct for this user'));
        }
    }
    
    public function transaction(Request $request)
    {   
        $start_date = $request->get('start_date');
        $end_date = $request->get('end_date');
        $bank_account_id = $request->get('bank_account_id');
        $user_id = $request->get('user_id');
        if($start_date=="" && $end_date=="") {
            $start_date = date('Y-m-d');
            $end_date = date('Y-m-d');
        }
        $perpage = $request->get('perpage')??25;        
        if(Auth::user()->role_id==2){
            $datas = Transaction::query();
            $bankAccounts= BankAccount::all();
        }
        else {
            $datas = Transaction::where('user_id',Auth::id());
            $bankAccounts= BankAccount::all();
        }
        if($bank_account_id){
            $datas->where('bank_account_id', $bank_account_id);
        }
        if($user_id){
            $datas->where('user_id', $user_id);
        }
        if($start_date!=null){
            $datas->whereDate("created_at", ">=", $start_date." 00:00:00");
        }
        if($end_date!=null){
            $datas->whereDate("created_at", "<=", $end_date." 23:59:59");
        }
        $transactions = $datas->orderBy('id', 'desc')->paginate($perpage);
        
        $users = User::all();
        return view('moneyExchange.transaction', ['transactions'=> $transactions,'perpage'=>$perpage,'start_date'=>$start_date, 'end_date'=>$end_date, 'bankAccounts'=>$bankAccounts,'bank_account_id'=>$bank_account_id,'users'=>$users,'user_id'=>$user_id]);
    }
    public function transactionDownload(Request $request) {
        return Excel::download(new TransactionExport($request->get('start_date'), $request->get('end_date'), $request->get("bank_account_id"),$request->get("user_id")), 'transactions-report-'.$request->get('start_date')."-".$request->get('end_date').'-'.$request->get("bank_account_id").'-'.$request->get('user_id').'.xlsx');

    }
    public function transactionDownload1(Request $request) {
        return Excel::download(new TransactionExport1($request->get('start_date'), $request->get('end_date'), $request->get("bank_account_id"),$request->get("user_id")), 'transactions-report-'.$request->get('start_date')."-".$request->get('end_date').'-'.$request->get("bank_account_id").'-'.$request->get('user_id').'.xlsx');

    }
    public function create($transaction_id=null)
    {
        $currencies = Currency::all();
        $moneyExchangeLists = MoneyExchangeList::where('is_active',true)->orderBy('order')->get();
        $transactions = Transaction::where('user_id',Auth::id())->orderBy('id','desc')->take(5)->get();
        $already_print= null;
        if($transaction_id) {
            $transaction = Transaction::findOrFail($transaction_id);
            $already_print = $transaction->already_print;
            $transaction->already_print = true;
            $transaction->save();
        }
        return view('moneyExchange.form' , ['currencies'=>$currencies,'transactions'=>$transactions,'transaction_id'=>$transaction_id,'already_print'=>$already_print]);
    }
     public function report(Request $request)
    {
        $start_date = $request->get('start_date');
        $end_date = $request->get('end_date');
        $bank_account_id = $request->get('bank_account_id');
        $user_id = $request->get('user_id');
        $is_bank = $request->get('is_bank');
        // dd($is_bank);
        if($start_date=="" && $end_date=="") {
            $start_date = date('Y-m-d');
            $end_date = date('Y-m-d');
        }
        if(Auth::user()->role_id==2){
            if($user_id){                
                $bankAccounts = BankAccount::where('responsible_by_user_id',Auth::id());
            }
            else{
                $bankAccounts = BankAccount::query();
            }
        }
        else{
            $bankAccounts = BankAccount::where('responsible_by_user_id',Auth::id());
        }
        if($is_bank!=null){
            $bankAccounts->where('is_bank',$is_bank)->get();
        }
        else{
            $bankAccounts->get();
        }
        // $datas = Transaction::where('user_id',Auth::id());
        $users = User::all();
        if($bank_account_id){            
            $ba= BankAccount::findOrFail($bank_account_id);
            $currencies = Currency::where('id',$ba->currency_id)->get();
        }
        else{
            $currencies = Currency::all();
        }
        return view('moneyExchange.report', ['start_date'=>$start_date, 'end_date'=>$end_date, 'bankAccounts'=>$bankAccounts,'bank_account_id'=>$bank_account_id,'users'=>$users,'user_id'=>$user_id,'currencies'=>$currencies,'is_bank'=>$is_bank]);
    }
    public function invoice($transaction_id=null) {
        $transaction = Transaction::findOrFail($transaction_id);

        $now = Carbon::now();
        $created_at = Carbon::parse($transaction->created_at)->addMinutes(5);
        if($created_at<=$now){
            return redirect()->back()->with('error', __("message.can't delete"));
        }
        if($transaction->already_print==false){
            $transaction->already_print = true;
            $transaction->save();
        }        
        $shop_name = Setting::where('name','shop_name')->firstOrFail();
        $logo = Setting::where('name','logo')->firstOrFail();
        $phone = Setting::where('name','phone')->firstOrFail();
        $address = Setting::where('name','address')->firstOrFail();
        return view('moneyExchange.invoice' , ['transaction_id'=>$transaction_id,'transaction'=>$transaction,'shop_name'=>$shop_name->value,'logo'=>$logo->value,'phone'=>$phone->value,'address'=>$address->value]);
    }
    public function profitReport(Request $request) {
        $start_date = $request->get('start_date');
        $end_date = $request->get('end_date');
        $is_bank = $request->get('is_bank');
        $user_id = $request->get('user_id');
        if($start_date=="" && $end_date=="") {
            $start_date = date('Y-m-d');
            $end_date = date('Y-m-d');
        }
        $currencies = Currency::all();
        $users = User::all();
        $mainCurrency = Currency::where('is_main_currency',true)->first();
        if(empty($mainCurrency)) {
            $mainCurrency = Currency::orderBy('id')->first();
        }
        return view('moneyExchange.profitReport' , ['start_date'=>$start_date,'end_date'=>$end_date,'is_bank'=>$is_bank,'currencies'=>$currencies,'users'=>$users,'user_id'=>$user_id,'mainCurrency'=>$mainCurrency]);
    }
}

© KUJUNTI.ID