| 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/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]);
}
}