| Path : /var/www/html/mini-moneyexchange/app/Http/Controllers/ |
|
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'));
}
}