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/TransferController.php


<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Models\BankAccount;
use App\Models\BankAccountTransaction;
use App\Models\Bank;
use App\Models\User;
use App\Models\Currency;
use App\Models\Transfer;
use Carbon\Carbon;
use App\Http\Controllers\Controller;

// use Illuminate\Support\Facades\Mail;
// use App\Mail\BankMail;
class TransferController 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();
        if($request->hasFile('feature_image')){
            $datas['logo'] = $this->uploadImage($request);
        }
        $datas['user_id'] = Auth::id();

        if($datas['transaction_type']=='transferOut') {
            $bankAccountCash = BankAccount::where('is_bank', false)->where('is_active', true)->where('responsible_by_user_id',Auth::id())->where('currency_id', $datas['currency_id'])->orderBy('id','desc')->first();
            $bankAccount = BankAccount::where('is_bank', true)->where('bank_id', $datas['bank_id'])->where('is_active', true)->where('responsible_by_user_id',Auth::id())->where('currency_id', $datas['currency_id'])->orderBy('id','desc')->first();
            $datas['from_bank_account_id'] = $bankAccount->id;
            if($bankAccountCash && $bankAccount){
                $bankAccountCash->credit = $bankAccountCash->credit + ($datas['amount']+$datas['fee']+$datas['partner_fee']);
                $bankAccountCash->save();                

                $bankAccount->credit = $bankAccount->credit-($datas['amount']+$datas['partner_fee']);
                $bankAccount->save();
                $transfer = Transfer::create($datas);
                BankAccountTransaction::create([
                    'bank_account_id'=>$bankAccountCash->id,
                    'transaction_type'=>'in',
                    'credit_before_transaction'=>$bankAccountCash->credit-($datas['amount']+$datas['fee']+$datas['partner_fee']),
                    'credit_after_transaction'=>$bankAccountCash->credit,
                    'user_id'=>Auth::id(),
                    'amount'=>$datas['amount'],
                    'note'=>$datas['note']??null,
                    'transfer_id'=>$transfer->id
                ]);

                BankAccountTransaction::create([
                    'bank_account_id'=>$bankAccount->id,
                    'transaction_type'=>'out',
                    'credit_before_transaction'=>$bankAccount->credit+($datas['amount']+$datas['partner_fee']),
                    'credit_after_transaction'=>$bankAccount->credit,
                    'user_id'=>Auth::id(),
                    'amount'=>$datas['amount'],
                    'note'=>$datas['note']??null,
                    'transfer_id'=>$transfer->id
                ]);
                return redirect()->route('transfer-out')->with('success', __('message.transfer out').' '.__('message.created successfully'));
            }
            else {
                return redirect()->route('transfer-out')->with('error', __('message.bank account configuration is not correct for this user'));
            }
        }
        elseif($datas['transaction_type']=='transferIn') {
            $bankAccountCash = BankAccount::where('is_bank', false)->where('is_active', true)->where('responsible_by_user_id',Auth::id())->where('currency_id', $datas['currency_id'])->orderBy('id','desc')->first();
            $bankAccount = BankAccount::where('is_bank', true)->where('bank_id', $datas['bank_id'])->where('is_active', true)->where('responsible_by_user_id',Auth::id())->where('currency_id', $datas['currency_id'])->orderBy('id','desc')->first();
            $datas['to_bank_account_id'] = $bankAccount->id;

            if($bankAccountCash && $bankAccount){
                $bankAccountCash->credit = $bankAccountCash->credit - ($datas['amount']);
                $bankAccountCash->save();

                $bankAccount->credit = $bankAccount->credit+($datas['amount']+$datas['fee']);
                $bankAccount->save();
                $transfer = Transfer::create($datas);
                BankAccountTransaction::create([
                    'bank_account_id'=>$bankAccountCash->id,
                    'transaction_type'=>'out',
                    'credit_before_transaction'=>$bankAccountCash->credit+($datas['amount']),
                    'credit_after_transaction'=>$bankAccountCash->credit,
                    'user_id'=>Auth::id(),
                    'amount'=>$datas['amount'],
                    'note'=>$datas['note']??null,
                    'transfer_id'=>$transfer->id
                ]);

                BankAccountTransaction::create([
                    'bank_account_id'=>$bankAccount->id,
                    'transaction_type'=>'in',
                    'credit_before_transaction'=>$bankAccount->credit-($datas['amount']+$datas['fee']),
                    'credit_after_transaction'=>$bankAccount->credit,
                    'user_id'=>Auth::id(),
                    'amount'=>$datas['amount'],
                    'note'=>$datas['note']??null,
                    'transfer_id'=>$transfer->id
                ]);
                return redirect()->route('transfer-in')->with('success', __('message.transfer in').' '.__('message.created successfully'));
            }
            else {
                return redirect()->route('transfer-in')->with('error', __('message.bank account configuration is not correct for this user'));
            }
        }
        elseif($datas['transaction_type']=='retransferOut') {
            $bankAccount = BankAccount::findOrFail($datas['from_bank_account_id']);
            if($bankAccount){
                $bankAccount->credit = $bankAccount->credit-($datas['amount']+$datas['partner_fee']);
                $bankAccount->save();
                $transfer = Transfer::create($datas);
                BankAccountTransaction::create([
                    'bank_account_id'=>$datas['from_bank_account_id'],
                    'transaction_type'=>'out',
                    'credit_before_transaction'=>$bankAccount->credit+($datas['amount']+$datas['partner_fee']),
                    'credit_after_transaction'=>$bankAccount->credit,
                    'user_id'=>Auth::id(),
                    'amount'=>$datas['amount'],
                    'note'=>$datas['note']??null,
                    'transfer_id'=>$transfer->id
                ]);
                return redirect()->route('retransfer-out')->with('success', __('message.re-transfer out').' '.__('message.created successfully'));
            }
            else {
                return redirect()->route('re-transfer-out')->with('error', __('message.bank account configuration is not correct for this user'));
            }
        }
        elseif($datas['transaction_type']=='retransferIn') {            
            $bankAccount = BankAccount::findOrFail($datas['to_bank_account_id']);
            if($bankAccount){
                $bankAccount->credit = $bankAccount->credit+($datas['amount']);
                $bankAccount->save();
                $transfer = Transfer::create($datas);
                BankAccountTransaction::create([
                    'bank_account_id'=>$datas['to_bank_account_id'],
                    'transaction_type'=>'in',
                    'credit_before_transaction'=>$bankAccount->credit-($datas['amount']),
                    'credit_after_transaction'=>$bankAccount->credit,
                    'user_id'=>Auth::id(),
                    'amount'=>$datas['amount'],
                    'note'=>$datas['note']??null,
                    'transfer_id'=>$transfer->id
                ]);
                return redirect()->route('retransfer-in')->with('success', __('message.re-transfer in').' '.__('message.created successfully'));
            }
            else {
                return redirect()->route('re-transfer-in')->with('error', __('message.bank account configuration is not correct for this user'));
            }
        }
    }
    public function destroy($id)
    {
        $transfer = Transfer::findOrFail($id);
        if($transfer->created_at->format('d/m/Y')!=Carbon::today()->format('d/m/Y')){
            return redirect()->back()->with('error',__("message.can't delete"));
        }
        foreach($transfer->bankAccountTransactions as $index=>$bankAccountTransaction) {
            $diffCredit = $bankAccountTransaction->credit_before_transaction-$bankAccountTransaction->credit_after_transaction;
            $bankAccountTransaction->bankAccount->credit = $bankAccountTransaction->bankAccount->credit+$diffCredit;
            $bankAccountTransaction->bankAccount->save();
            $bankAccountTransaction->delete();
        }
        $transfer->delete();

        if($transfer->transaction_type=='transferOut') {            
            return redirect()->back()->with('success', __('message.transfer out').' '.__('message.deleted successfully'));
        }
        elseif($transfer->transaction_type=='transferIn') {
            return redirect()->back()->with('success', __('message.transfer in').' '.__('message.deleted successfully'));
        }
        elseif($transfer->transaction_type=='retransferOut') {
            return redirect()->back()->with('success', __('message.re-transfer out').' '.__('message.deleted successfully'));
        }
        elseif($transfer->transaction_type=='retransferIn') {
            return redirect()->back()->with('success', __('message.re-transfer in').' '.__('message.deleted successfully'));
        }
        return redirect()->back()->with('success', __('message.transfer in').' '.__('message.deleted successfully'));
    }
    public function transferOut(Request $request)
    {   
        if(Auth::user()->role_id!=2){
            $bankAccounts = BankAccount::where('is_active',true)->where('responsible_by_user_id',Auth::id())->get();
        }
        else{
            $bankAccounts = BankAccount::where('is_active',true)->get();
        }
        $banks= Bank::where('show_as_bank',true)->get();
        $currencies = Currency::all();
        return view('transfer.transferOut', ['bankAccounts'=> $bankAccounts,'currencies'=>$currencies, 'banks'=>$banks]);
    }
    public function transferIn(Request $request)
    {   
        if(Auth::user()->role_id!=2){
            $bankAccounts = BankAccount::where('is_active',true)->where('responsible_by_user_id',Auth::id())->get();
        }
        else{
            $bankAccounts = BankAccount::where('is_active',true)->get();
        }
        $banks= Bank::where('show_as_bank',true)->get();
        $currencies = Currency::all();
        return view('transfer.transferIn', ['bankAccounts'=> $bankAccounts,'currencies'=>$currencies, 'banks'=>$banks]);
    }
    public function reTransferOut(Request $request) {
        if(Auth::user()->role_id!=2){
            $bankAccounts = BankAccount::where('is_active',true)->where('is_bank',true)->where('responsible_by_user_id',Auth::id())->get();
        }
        else{
            $bankAccounts = BankAccount::where('is_active',true)->where('is_active',true)->where('is_bank',true)->get();
        }
        $banks= Bank::where('show_as_bank',true)->get();
        $currencies = Currency::all();
        return view('transfer.reTransferOut', ['bankAccounts'=> $bankAccounts,'currencies'=>$currencies, 'banks'=>$banks]);      
    }
    public function reTransferIn(Request $request) {
        if(Auth::user()->role_id!=2){
            $bankAccounts = BankAccount::where('is_active',true)->where('is_bank',true)->where('responsible_by_user_id',Auth::id())->get();
        }
        else{
            $bankAccounts = BankAccount::where('is_active',true)->where('is_bank',true)->get();
        }
        $banks= Bank::where('show_as_bank',true)->get();
        $currencies = Currency::all();
        return view('transfer.reTransferIn', ['bankAccounts'=> $bankAccounts,'currencies'=>$currencies, 'banks'=>$banks]);      
    }

    public function transferInTransaction(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');
        $currency_id = $request->get('currency_id');
        if($start_date=="" && $end_date=="") {
            $start_date = date('Y-m-d');
            $end_date = date('Y-m-d');
        }
        $perpage = $request->get('perpage')??25;        
        $datas = Transfer::where('transaction_type','transferIn');
        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");
        }
        if($user_id) {
            $datas->where('user_id',$user_id);
        }

        if(Auth::user()->role_id!=2){
            $datas->where("user_id", Auth::id());
        }
        $transactions = $datas->orderBy('id', 'desc')->paginate($perpage);
        $users = User::all();
        $currencies = Currency::all();
        return view('transfer.transactions.transferInTransaction', ['transactions'=> $transactions,'start_date'=>$start_date,'end_date'=>$end_date,'perpage'=>$perpage,'users'=>$users,'user_id'=>$user_id,'currency_id'=>$currency_id,'currencies'=>$currencies]);
    }
    public function transferOutTransaction(Request $request) {
        $start_date = $request->get('start_date');
        $end_date = $request->get('end_date');
        $bank_account_id = $request->get('bank_account_id');
        $currency_id = $request->get('currency_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;        
        $datas = Transfer::where('transaction_type','transferOut');
        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");
        }
        if($currency_id) {
            $datas->where('currency_id',$currency_id);
        }
        if($user_id) {
            $datas->where('user_id',$user_id);
        }

        if(Auth::user()->role_id!=2){
            $datas->where("user_id", Auth::id());
        }
        $transactions = $datas->orderBy('id', 'desc')->paginate($perpage);
        $currencies = Currency::all();
        $users = User::all();
        return view('transfer.transactions.transferOutTransaction', ['transactions'=> $transactions,'start_date'=>$start_date,'end_date'=>$end_date,'perpage'=>$perpage,'users'=>$users,'user_id'=>$user_id,'currency_id'=>$currency_id,'currencies'=>$currencies]);
    }
    public function reTransferInTransaction(Request $request) {
        $start_date = $request->get('start_date');
        $end_date = $request->get('end_date');
        $bank_account_id = $request->get('bank_account_id');
        $currency_id = $request->get('currency_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;        
        $datas = Transfer::where('transaction_type','reTransferIn');
        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");
        }
        if($currency_id) {
            $datas->where('currency_id',$currency_id);
        }
        if($user_id) {
            $datas->where('user_id',$user_id);
        }

        if(Auth::user()->role_id!=2){
            $datas->where("user_id", Auth::id());
        }
        $transactions = $datas->orderBy('id', 'desc')->paginate($perpage);
        $currencies = Currency::all();
        $users = User::all();
        return view('transfer.transactions.reTransferInTransaction', ['transactions'=> $transactions,'start_date'=>$start_date,'end_date'=>$end_date,'perpage'=>$perpage,'users'=>$users,'user_id'=>$user_id,'currency_id'=>$currency_id,'currencies'=>$currencies]);
    }
    public function reTransferOutTransaction(Request $request) {
        $start_date = $request->get('start_date');
        $end_date = $request->get('end_date');
        $bank_account_id = $request->get('bank_account_id');
        $currency_id = $request->get('currency_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;        
        $datas = Transfer::where('transaction_type','reTransferOut');
        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");
        }
        if($currency_id) {
            $datas->where('currency_id',$currency_id);
        }
        if($user_id) {
            $datas->where('user_id',$user_id);
        }

        if(Auth::user()->role_id!=2){
            $datas->where("user_id", Auth::id());
        }
        $transactions = $datas->orderBy('id', 'desc')->paginate($perpage);
        $currencies = Currency::all();
        $users = User::all();
        return view('transfer.transactions.reTransferOutTransaction', ['transactions'=> $transactions,'start_date'=>$start_date,'end_date'=>$end_date,'perpage'=>$perpage,'users'=>$users,'user_id'=>$user_id,'currency_id'=>$currency_id,'currencies'=>$currencies]);
    }
    public function transferReport(Request $request) {
        $start_date = $request->get('start_date');
        $end_date = $request->get('end_date');
        $bank_account_id = $request->get('bank_account_id');
        $currency_id = $request->get('currency_id');
        $user_id = $request->get('user_id');
        if($start_date=="" && $end_date=="") {
            $start_date = date('Y-m-d');
            $end_date = date('Y-m-d');
        }

        $datas = Transfer::whereIn('transaction_type',['transferIn','transferOut']);
        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");
        }
        if($currency_id) {
            $datas->where('currency_id',$currency_id);
        }
        if($user_id) {
            $datas->where('user_id',$user_id);
        }
        $currencies = Currency::all();
        $users = User::all();
        $bankAccounts = BankAccount::all();
        return view('transfer.reports.transferReport', ['datas'=> $datas, 'start_date'=>$start_date, 'end_date'=>$end_date, 'bank_account_id'=>$bank_account_id, 'currency_id'=>$currency_id, 'user_id'=>$user_id, 'datas'=>$datas,'users'=>$users,'currencies'=>$currencies,'bankAccounts'=>$bankAccounts]);
    }
    
}

© KUJUNTI.ID