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/BankAccountController.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\BankAccountTransactionType;
use App\Http\Controllers\Controller;

// use Illuminate\Support\Facades\Mail;
// use App\Mail\BankMail;
class BankAccountController 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();
        $bankAccounts = BankAccount::create($datas);
        return redirect()->route('bank-accounts.index')->with('success', __('message.bank account').' '.__('message.created successfully'));
    }

    public function index(Request $request)
    {   
        $perpage = $request->get('perpage')??25;
        $responsible_by_user_id = $request->get('responsible_by_user_id');
        $currency_id = $request->get('currency_id');
        $is_bank = $request->get('is_bank');
        $datas = BankAccount::where('is_bank',true);
        if($is_bank!=null){
            $datas->where('is_bank',$is_bank);
        }
        if($responsible_by_user_id) {
            $datas->where('responsible_by_user_id',$responsible_by_user_id);
        }     
        if($currency_id){
            $datas->where('currency_id',$currency_id);
        }           
        $bankAccounts = $datas->orderBy('id', 'desc')->paginate($perpage);
        $users = User::all();
        $currencies = Currency::all();
        return view('bankAccount.bankAccountList', ['bankAccounts'=> $bankAccounts,'perpage'=>$perpage,'users'=>$users,'responsible_by_user_id'=>$responsible_by_user_id,'is_bank'=>$is_bank,'currency_id'=>$currency_id,'currencies'=>$currencies]);
    }

    public function create()
    {
        $banks = Bank::all();
        $currencies = Currency::all();
        $users = User::all();
        return view('bankAccount.bankAccountForm' , ['banks'=>$banks,'currencies'=>$currencies,'users'=>$users]);
    }

    public function edit($id)
    {
        $bankAccount = BankAccount::where("id", $id)->firstOrFail();
        $banks = Bank::all();
        $currencies = Currency::all();
        $users = User::all();
        return view('bankAccount.bankAccountForm', ['bankAccount'=> $bankAccount, 'banks'=>$banks,'currencies'=>$currencies,'users'=>$users]);
    }

    public function update(Request $request, $id)
    {
        $bankAccount = BankAccount::where("id", $id)->firstOrFail();
        $datas = $request->all();
        if($request->hasFile('feature_image')){
            $datas['logo'] = $this->uploadImage($request);
        }
        $bankAccount->update($datas);

        return redirect()->route('bank-accounts.index')->with('success', __('message.bank account').' '.__('message.updated successfully'));
    }

    public function destroy($id)
    {
        $bank = BankAccount::findOrFail($id);
        if(count($bank->bankAccountTransaction)){
            return redirect()->route('bank-accounts.index')->with('error', __('message.bank account').' '.__("message.can't delete"));
        }
        $bank->delete();

        return redirect()->route('bank-accounts.index')->with('success', __('message.bank account').' '.__('message.deleted successfully'));
    }

    public function show(Request $request){
        return redirect()->route('bank-accounts.index');
    }
    private function uploadImage(Request $request)
    {
        $image = $request->file('feature_image');
        $name = time().'.'.$image->getClientOriginalName();

        $destinationPath = public_path('images/');
        $image->move($destinationPath, $name);
        return 'images/'.$name;
    }
    public function bankAccountDepositWithdraw($id, Request $request) {
        $type = $request->get('type')=='deposit'?'deposit':'withdraw';
        $bankAccount = BankAccount::findOrFail($id);
        $bankAccountTransactionTypes = BankAccountTransactionType::where('is_active',true)->orderBy('order')->get();
        return view('bankAccount.bankAccountDepositWithdrawForm' , ['bankAccount'=>$bankAccount, 'type'=>$type,'bankAccountTransactionTypes'=>$bankAccountTransactionTypes]);
    }
    public function bankAccountDepositWithdrawStore($id, Request $request) {
        $datas = $request->all();
        $bankAccount = BankAccount::findOrFail($id);
        $bankAccountTransactionType = BankAccountTransactionType::findOrFail($datas['bank_account_transaction_type_id']);
        $myBankAccount = BankAccount::where('is_bank',$bankAccount->is_bank)->where('currency_id',$bankAccount->currency_id)->where('is_active',true)->where('bank_id',$bankAccount->bank_id)->orderBy('id','desc')->where('responsible_by_user_id',Auth::id())->firstOrFail();
        $datas['credit_before_transaction'] = $bankAccount->credit;
        $type = $datas['type']=='deposit'?'in':'out';
        $mybankType = '';
        $mybankBeforeTransaction= $myBankAccount->credit;
        if($type=='in'){
            $mybankType = 'out';
            $datas['credit_after_transaction'] = $bankAccount->credit + $datas['amount'];
            if($bankAccountTransactionType->return_credit){
                $myBankAccount->credit = $myBankAccount->credit -$datas['amount'];
            }
        }
        else {
            $mybankType = 'in';
            $datas['credit_after_transaction'] = $bankAccount->credit - $datas['amount'];
            if($bankAccountTransactionType->return_credit){
                $myBankAccount->credit = $myBankAccount->credit + $datas['amount'];
            }
        }
        
        $datas['bank_account_id'] = $id;
        $datas['user_id'] = Auth::id();
        $datas['transaction_type'] = $type;
        $bankAccount->credit = $datas['credit_after_transaction'];
        // dd($datas,$bankAccount);
        $bankAccount->save();
        $bankAccountTransaction = BankAccountTransaction::create($datas);
        // create bank transaction for owner bank (ex: vault)        
        if($bankAccountTransactionType->return_credit){
            if($bankAccount->id!=$myBankAccount->id) {                
                $myBankAccount->save();            
                BankAccountTransaction::create([
                    'bank_account_id'=>$myBankAccount->id,
                    'transaction_type'=>$mybankType,
                    'credit_before_transaction'=>$mybankBeforeTransaction,
                    'credit_after_transaction'=>$myBankAccount->credit,
                    'user_id'=>Auth::id(),
                    'amount'=>$datas['amount'],
                    'note'=>'transfer from:'.$bankAccountTransaction->id,
                    'transaction_id'=>null
                ]);
            }
        }
            
        return redirect()->back()->with('success', __('message.credit').' '.__('message.updated successfully'));
    }
}

© KUJUNTI.ID