| Path : /proc/self/root/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 : //proc/self/root/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]);
}
}