Path : /var/www/html/mini-moneyexchange/app/Models/ |
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/Models/Currency.php |
<?php namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Model; class Currency extends Model { use HasFactory, Notifiable, SoftDeletes; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'user_id', 'is_main_currency', 'decimal_precision', 'flage', 'sample_money', 'currency_code', 'child_currency_id', 'min_exchange_amount' ]; public function user() { return $this->belongsTo(User::class); } public function exchangeFromCurrencies() { return $this->hasMany(MoneyExchangeList::class,'exchange_from_currency_id', 'id'); } public function bankAccounts() { return $this->hasMany(BankAccount::class); } public function getCashAmount($user_id){ return BankAccount::where('responsible_by_user_id',$user_id)->where('currency_id',$this->id)->where('is_bank',false)->orderBy('id','desc')->first(); } public function exchangeToCurrencies() { return $this->hasMany(MoneyExchangeList::class,'exchange_to_currency_id', 'id'); } // public function totalCashIn($start_date, $end_date, $user_id=null, $bank_account_id=null) // { // $exchangeListIds = $this->exchangeFromCurrencies()->pluck('id'); // $datas = Transaction::whereBetween('created_at',[$start_date,$end_date])->whereIn('money_exchange_list_id', $exchangeListIds); // if($bank_account_id){ // $datas->where('bank_account_id',$bank_account_id); // } // if($user_id){ // $datas->where('user_id',$user_id); // } // return $datas->sum('amount'); // } public function startBalance($date, $is_bank, $user_id=null, $bank_account_id=null) { $bank_account_ids = $this->bankAccounts()->pluck('id'); $datas = BankAccountTransaction::whereDate('created_at','<',$date)->whereIn('bank_account_id', $bank_account_ids); // dd($is_bank); if($is_bank!=null){ $datas->whereHas('bankAccount', function($query) use ($is_bank){ $query->where('bank_accounts.is_bank', $is_bank); }); } if($bank_account_id){ $datas->where('bank_account_id',$bank_account_id); } if($user_id){ $datas->where('user_id',$user_id); } $credit_after_transaction = 0; $datas->orderBy('created_at','desc'); $data=[]; foreach($bank_account_ids as $index=>$baid){ $temp = Clone $datas; $data = $temp->where('bank_account_id',$baid)->first(); $credit_after_transaction = $credit_after_transaction+ ($data->credit_after_transaction??0); // unset($data); // unset($temp); } return $credit_after_transaction; } public function totalCashIn($start_date, $end_date, $is_bank, $user_id=null, $bank_account_id=null, $is_internal=null) { $bank_account_ids = $this->bankAccounts()->pluck('id'); $datas = BankAccountTransaction::whereBetween('created_at',[$start_date,$end_date])->whereIn('bank_account_id', $bank_account_ids)->where('transaction_type','in'); if($is_internal==true){ $datas->where('transaction_id',null); } else{ $datas->where('transaction_id','<>',null); } if($is_bank!=null){ $datas->whereHas('bankAccount', function($query) use ($is_bank){ $query->where('bank_accounts.is_bank', $is_bank); }); } if($bank_account_id){ $datas->where('bank_account_id',$bank_account_id); } if($user_id){ $datas->whereHas('bankAccount', function($query) use($user_id){ $query->where('bank_accounts.responsible_by_user_id', $user_id); }); // $datas->where('user_id',$user_id); } return $datas->sum('amount'); } // public function totalCashOut($start_date, $end_date, $user_id=null, $bank_account_id=null) // { // $exchangeListIds = $this->exchangeToCurrencies()->pluck('id'); // $datas = Transaction::whereBetween('created_at',[$start_date,$end_date])->whereIn('money_exchange_list_id', $exchangeListIds); // if($bank_account_id) { // $datas->where('bank_account_id',$bank_account_id); // } // if($user_id) { // $datas->where('user_id',$user_id); // } // return $datas->sum('amount_after_exchange'); // } public function totalCashOut($start_date, $end_date, $is_bank, $user_id=null, $bank_account_id=null, $is_internal=null) { $bank_account_ids = $this->bankAccounts()->pluck('id'); $datas = BankAccountTransaction::whereBetween('created_at',[$start_date,$end_date])->whereIn('bank_account_id', $bank_account_ids)->where('transaction_type','out'); if($is_internal==true){ $datas->where('transaction_id',null); } else{ $datas->where('transaction_id','<>',null); } if($is_bank!=null){ $datas->whereHas('bankAccount', function($query) use ($is_bank){ $query->where('bank_accounts.is_bank', $is_bank); }); } if($bank_account_id){ $datas->where('bank_account_id',$bank_account_id); } if($user_id){ // $datas->where('user_id',$user_id); $datas->whereHas('bankAccount', function($query) use($user_id){ $query->where('bank_accounts.responsible_by_user_id', $user_id); }); } return $datas->sum('amount'); } public function totalFee($start_date, $end_date, $is_bank, $user_id=null, $bank_account_id=null) { $exchangeListIds = $this->exchangeFromCurrencies()->pluck('id'); $datas = Transaction::whereBetween('created_at',[$start_date,$end_date])->whereIn('money_exchange_list_id', $exchangeListIds); if($is_bank!=null){ $datas->whereHas('bankAccount', function($query) use ($is_bank){ $query->where('bank_accounts.is_bank', $is_bank); }); } if($bank_account_id){ $datas->where('bank_account_id',$bank_account_id); } if($user_id){ $datas->where('user_id',$user_id); } return $datas->sum('fee'); } public function toMainCurrency($amount) { $mainCurrency = Currency::where('is_main_currency',true)->first(); if($this->id!=($mainCurrency->id??0)) { $moneyExchangList =MoneyExchangeList::where('exchange_from_currency_id',$this->id)->where('exchange_to_currency_id',$mainCurrency->id)->firstOrFail(); if($moneyExchangList->calculation=='x') { return $amount*$moneyExchangList->current_rate; } else { return $amount/$moneyExchangList->current_rate; } } else { return $amount; } } public function transfers() { return $this->hasMany(Transfer::class); } }