Akaunting/app/View/Components/Form/Group/Account.php

78 lines
2.2 KiB
PHP

<?php
namespace App\View\Components\Form\Group;
use App\Abstracts\View\Components\Form;
use App\Models\Banking\Account as Model;
class Account extends Form
{
public $type = 'account';
public $path;
public $accounts;
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
if (empty($this->name)) {
$this->name = 'account_id';
}
$this->path = route('modals.accounts.create');
if (empty($this->accounts) && ! empty($this->options)) {
$this->accounts = $this->options;
} else if (empty($this->accounts)) {
$this->accounts = $this->getAccounts();
}
$model = $this->getParentData('model');
$account_id = old('account.id', old('account_id', null));
if (! empty($account_id)) {
$this->selected = $account_id;
if (! $this->accounts->has($account_id)) {
$account = Model::with(['transactions', 'income_transactions', 'expense_transactions', 'currency'])->find($account_id);
$this->accounts->push($account);
}
}
if (! empty($model) && ! empty($model->{$this->name})) {
$this->selected = $model->{$this->name};
$selected_account = $model->account;
}
if (! empty($selected_account) && ! $this->accounts->contains('id', $selected_account->id)) {
$this->accounts->push($selected_account);
}
if ($this->selected === null) {
$this->selected = setting('default.account');
}
// Share accounts with all views
view()->share('accounts', $this->accounts);
return view('components.form.group.account');
}
protected function getAccounts()
{
if ($this->hideCurrency) {
return Model::with(['transactions', 'income_transactions', 'expense_transactions', 'currency'])->enabled()->orderBy('name')->get();
}
return Model::with(['transactions', 'income_transactions', 'expense_transactions', 'currency'])->enabled()->orderBy('name')->get();
}
}