diff --git a/app/controllers/AccountController.php b/app/controllers/AccountController.php index d9b907fe7f..b09766ed02 100644 --- a/app/controllers/AccountController.php +++ b/app/controllers/AccountController.php @@ -140,7 +140,8 @@ class AccountController extends BaseController { $subTitle = $this->_subTitlesByIdentifier[$what]; $subTitleIcon = $this->_subIconsByIdentifier[$what]; - $accounts = $this->_repository->getAccountsByType($this->_accountTypesByIdentifier[$what]); + + $accounts = $this->_repository->getAccountsByType($this->_accountTypesByIdentifier[$what]); return View::make('accounts.index', compact('what', 'subTitleIcon', 'subTitle', 'accounts')); } @@ -168,23 +169,21 @@ class AccountController extends BaseController public function store() { - /* - * always validate using the account validator: - * TODO move to constructor. - */ - /** @var \FireflyIII\Validation\Account $validator */ - $validator = App::make('FireflyIII\Validation\Account'); - $data = Input::except('_token', 'post_submit_action'); - $errors = $validator->store($data); + $data = Input::except('_token'); + + // always validate: + $messages = $this->_repository->validate($data); // flash messages: - Session::flash('errors', $errors); - if ($errors->count() > 0) { - Session::flash('error', 'Could not store account: ' . $errors->first()); + Session::flash('warnings', $messages['warnings']); + Session::flash('successes', $messages['successes']); + Session::flash('errors', $messages['errors']); + if ($messages['errors']->count() > 0) { + Session::flash('error', 'Could not store account: ' . $messages['errors']->first()); } // return to create screen: - if ($data['post_submit_action'] == 'validate_only' || $errors->count() > 0) { + if ($data['post_submit_action'] == 'validate_only' || $messages['errors']->count() > 0) { return Redirect::route('accounts.create', e($data['what']))->withInput(); } @@ -206,24 +205,23 @@ class AccountController extends BaseController */ public function update(Account $account) { - /* - * always validate using the account validator: - * TODO move to constructor. - */ - /** @var \FireflyIII\Validation\Account $validator */ - $validator = App::make('FireflyIII\Validation\Account'); $data = Input::except('_token'); $data['what'] = $this->_shortNamesByFullName[$account->accountType->type]; - $errors = $validator->update($data, $account); + + + // always validate: + $messages = $this->_repository->validate($data); // flash messages: - Session::flash('errors', $errors); - if ($errors->count() > 0) { - Session::flash('error', 'Could not update account: ' . $errors->first()); + Session::flash('warnings', $messages['warnings']); + Session::flash('successes', $messages['successes']); + Session::flash('errors', $messages['errors']); + if ($messages['errors']->count() > 0) { + Session::flash('error', 'Could not update account: ' . $messages['errors']->first()); } // return to update screen: - if ($data['post_submit_action'] == 'validate_only' || $errors->count() > 0) { + if ($data['post_submit_action'] == 'validate_only' || $messages['errors']->count() > 0) { return Redirect::route('accounts.edit', $account->id)->withInput(); } diff --git a/app/controllers/GoogleChartController.php b/app/controllers/GoogleChartController.php index 98696a972f..f413c9c5a3 100644 --- a/app/controllers/GoogleChartController.php +++ b/app/controllers/GoogleChartController.php @@ -88,7 +88,7 @@ class GoogleChartController extends BaseController /** @var \FireflyIII\Database\Account\Account $acct */ $acct = App::make('FireflyIII\Database\Account\Account'); - $accounts = count($pref->data) > 0 ? $acct->getByIds($pref->data) : $acct->getAccountsByType(['Default account', 'Asset account']); + $accounts = count($pref->data) > 0 ? $acct->getByIds($pref->data) : $acct->getAssetAccounts(); /** @var Account $account */ foreach ($accounts as $account) { diff --git a/app/controllers/HomeController.php b/app/controllers/HomeController.php index 485f71cb15..33bd974e5e 100644 --- a/app/controllers/HomeController.php +++ b/app/controllers/HomeController.php @@ -33,7 +33,7 @@ class HomeController extends BaseController /** @var \FireflyIII\Shared\Preferences\PreferencesInterface $preferences */ $preferences = App::make('FireflyIII\Shared\Preferences\PreferencesInterface'); - $count = $acct->countAccountsByType(['Default account', 'Asset account']); + $count = $acct->countAssetAccounts(); $start = Session::get('start', Carbon::now()->startOfMonth()); $end = Session::get('end', Carbon::now()->endOfMonth()); @@ -42,7 +42,7 @@ class HomeController extends BaseController // get the preference for the home accounts to show: $frontPage = $preferences->get('frontPageAccounts', []); if ($frontPage->data == []) { - $accounts = $acct->getAccountsByType(['Default account', 'Asset account']); + $accounts = $acct->getAssetAccounts(); } else { $accounts = $acct->getByIds($frontPage->data); } diff --git a/app/controllers/JsonController.php b/app/controllers/JsonController.php index a0e6f08262..fedc5768d2 100644 --- a/app/controllers/JsonController.php +++ b/app/controllers/JsonController.php @@ -36,7 +36,7 @@ class JsonController extends BaseController { /** @var \FireflyIII\Database\Account\Account $accounts */ $accounts = App::make('FireflyIII\Database\Account\Account'); - $list = $accounts->getAccountsByType(['Expense account', 'Beneficiary account']); + $list = $accounts->getExpenseAccounts(); $return = []; foreach ($list as $entry) { $return[] = $entry->name; @@ -53,7 +53,7 @@ class JsonController extends BaseController { /** @var \FireflyIII\Database\Account\Account $accounts */ $accounts = App::make('FireflyIII\Database\Account\Account'); - $list = $accounts->getAccountsByType(['Revenue account']); + $list = $accounts->getRevenueAccounts(); $return = []; foreach ($list as $entry) { $return[] = $entry->name; diff --git a/app/controllers/PiggybankController.php b/app/controllers/PiggybankController.php index 16089486f2..69222f22fa 100644 --- a/app/controllers/PiggybankController.php +++ b/app/controllers/PiggybankController.php @@ -62,7 +62,7 @@ class PiggyBankController extends BaseController $acct = App::make('FireflyIII\Database\Account\Account'); $periods = Config::get('firefly.piggy_bank_periods'); - $accounts = FFForm::makeSelectList($acct->getAccountsByType(['Default account', 'Asset account'])); + $accounts = FFForm::makeSelectList($acct->getAssetAccounts()); $subTitle = 'Create new piggy bank'; $subTitleIcon = 'fa-plus'; @@ -107,7 +107,7 @@ class PiggyBankController extends BaseController $acct = App::make('FireflyIII\Database\Account\Account'); $periods = Config::get('firefly.piggy_bank_periods'); - $accounts = FFForm::makeSelectList($acct->getAccountsByType(['Default account', 'Asset account'])); + $accounts = FFForm::makeSelectList($acct->getAssetAccounts()); $subTitle = 'Edit piggy bank "' . e($piggyBank->name) . '"'; $subTitleIcon = 'fa-pencil'; diff --git a/app/controllers/PreferencesController.php b/app/controllers/PreferencesController.php index ab4b81f717..b1a5ca0fc7 100644 --- a/app/controllers/PreferencesController.php +++ b/app/controllers/PreferencesController.php @@ -29,7 +29,7 @@ class PreferencesController extends BaseController /** @var \FireflyIII\Shared\Preferences\Preferences $preferences */ $preferences = App::make('FireflyIII\Shared\Preferences\Preferences'); - $accounts = $acct->getAccountsByType(['Default account', 'Asset account']); + $accounts = $acct->getAssetAccounts(); $viewRange = $preferences->get('viewRange', '1M'); $viewRangeValue = $viewRange->data; $frontPage = $preferences->get('frontPageAccounts', []); diff --git a/app/controllers/RepeatedExpenseController.php b/app/controllers/RepeatedExpenseController.php index 78272a9453..652e255578 100644 --- a/app/controllers/RepeatedExpenseController.php +++ b/app/controllers/RepeatedExpenseController.php @@ -34,7 +34,7 @@ class RepeatedExpenseController extends BaseController /** @var \FireflyIII\Database\Account\Account $acct */ $acct = App::make('FireflyIII\Database\Account\Account'); $periods = Config::get('firefly.piggy_bank_periods'); - $accounts = FFForm::makeSelectList($acct->getAccountsByType(['Default account', 'Asset account'])); + $accounts = FFForm::makeSelectList($acct->getAssetAccounts()); return View::make('repeatedExpense.create', compact('accounts', 'periods'))->with('subTitle', 'Create new repeated expense')->with( 'subTitleIcon', 'fa-plus' @@ -79,7 +79,7 @@ class RepeatedExpenseController extends BaseController $acct = App::make('FireflyIII\Database\Account\Account'); $periods = Config::get('firefly.piggy_bank_periods'); - $accounts = FFForm::makeSelectList($acct->getAccountsByType(['Default account', 'Asset account'])); + $accounts = FFForm::makeSelectList($acct->getAssetAccounts()); $subTitle = 'Edit repeated expense "' . e($repeatedExpense->name) . '"'; $subTitleIcon = 'fa-pencil'; diff --git a/app/lib/FireflyIII/Database/Account/Account.php b/app/lib/FireflyIII/Database/Account/Account.php index 69b286d744..368aeecac6 100644 --- a/app/lib/FireflyIII/Database/Account/Account.php +++ b/app/lib/FireflyIII/Database/Account/Account.php @@ -6,11 +6,12 @@ use Carbon\Carbon; use FireflyIII\Database\CommonDatabaseCallsInterface; use FireflyIII\Database\CUDInterface; use FireflyIII\Database\SwitchUser; -use FireflyIII\Exception\DeprecatedException; +use FireflyIII\Exception\NotImplementedException; use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Eloquent\Model as Eloquent; use Illuminate\Database\Query\Builder as QueryBuilder; use Illuminate\Support\Collection; +use Illuminate\Support\MessageBag; /** * Class Account @@ -40,6 +41,47 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte return $this->getUser()->accounts()->accountTypeIn($types)->count(); } + /** + * @return int + */ + public function countAssetAccounts() + { + return $this->countAccountsByType(['Default account', 'Asset account']); + } + + /** + * @return int + */ + public function countExpenseAccounts() + { + return $this->countAccountsByType(['Expense account', 'Beneficiary account']); + } + + /** + * Counts the number of total revenue accounts. Useful for DataTables. + * + * @return int + */ + public function countRevenueAccounts() + { + return $this->countAccountsByType(['Revenue account']); + } + + /** + * @param \Account $account + * + * @return \Account|null + */ + public function findInitialBalanceAccount(\Account $account) + { + /** @var \FireflyIII\Database\AccountType\AccountType $acctType */ + $acctType = \App::make('FireflyIII\Database\AccountType\AccountType'); + + $accountType = $acctType->findByWhat('initial'); + + return $this->getUser()->accounts()->where('account_type_id', $accountType->id)->where('name', 'LIKE', $account->name . '%')->first(); + } + /** * @param array $types * @@ -50,11 +92,14 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte /* * Basic query: */ - $query = $this->getUser()->accounts()->accountTypeIn($types)->orderBy('name', 'ASC');; - $set = $query->get(['accounts.*','account_role.data as account_role']); + $query = $this->getUser()->accounts()->accountTypeIn($types)->withMeta()->orderBy('name', 'ASC');; + $set = $query->get(['accounts.*']); $set->each( function (\Account $account) { + /* + * Get last activity date. + */ $account->lastActivityDate = $this->getLastActivity($account); } ); @@ -62,6 +107,57 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte return $set; } + /** + * Get all asset accounts. Optional JSON based parameters. + * + * @param array $metaFilter + * + * @return Collection + */ + public function getAssetAccounts($metaFilter = []) + { + $list = $this->getAccountsByType(['Default account', 'Asset account']); + $list->each( + function (\Account $account) { + + // get accountRole: + + /** @var \AccountMeta $entry */ + $accountRole = $account->accountmeta()->whereName('accountRole')->first(); + if (!$accountRole) { + $accountRole = new \AccountMeta; + $accountRole->account_id = $account->id; + $accountRole->name = 'accountRole'; + $accountRole->data = 'defaultExpense'; + $accountRole->save(); + + } + $account->accountRole = $accountRole->data; + } + ); + + return $list; + + } + + /** + * @return Collection + */ + public function getExpenseAccounts() + { + return $this->getAccountsByType(['Expense account', 'Beneficiary account']); + } + + /** + * Get all revenue accounts. + * + * @return Collection + */ + public function getRevenueAccounts() + { + return $this->getAccountsByType(['Revenue account']); + } + /** * @param \Account $account * @@ -88,8 +184,8 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte /* * Create a journal from opposing to account or vice versa. */ - $balance = floatval($data['openingBalance']); - $date = new Carbon($data['openingBalanceDate']); + $balance = floatval($data['openingbalance']); + $date = new Carbon($data['openingbalancedate']); /** @var \FireflyIII\Database\TransactionJournal\TransactionJournal $tj */ $tj = \App::make('FireflyIII\Database\TransactionJournal\TransactionJournal'); if ($balance < 0) { @@ -243,7 +339,7 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte \App::abort(500); } $account->save(); - if (isset($data['openingBalance']) && floatval($data['openingBalance']) != 0) { + if (isset($data['openingbalance']) && floatval($data['openingbalance']) != 0) { $this->storeInitialBalance($account, $data); } @@ -309,18 +405,78 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte } /** - * Validates an array. Returns an array containing MessageBags + * Validates a model. Returns an array containing MessageBags * errors/warnings/successes. * * @param array $model * - * @throws DeprecatedException - * * @return array */ public function validate(array $model) { - throw new DeprecatedException; + $warnings = new MessageBag; + $successes = new MessageBag; + $errors = new MessageBag; + + /* + * Name validation: + */ + if (!isset($model['name'])) { + $errors->add('name', 'Name is mandatory'); + } + + if (isset($model['name']) && strlen($model['name']) == 0) { + $errors->add('name', 'Name is too short'); + } + if (isset($model['name']) && strlen($model['name']) > 100) { + $errors->add('name', 'Name is too long'); + } + $validator = \Validator::make([$model], \Account::$rules); + if ($validator->invalid()) { + $errors->merge($errors); + } + + if (isset($model['account_role']) && !in_array($model['account_role'], array_keys(\Config::get('firefly.accountRoles')))) { + $errors->add('account_role', 'Invalid account role'); + } else { + $successes->add('account_role', 'OK'); + } + + /* + * type validation. + */ + if (!isset($model['what'])) { + $errors->add('name', 'Internal error: need to know type of account!'); + } + + /* + * Opening balance and opening balance date. + */ + if (isset($model['what']) && $model['what'] == 'asset') { + if (isset($model['openingbalance']) && strlen($model['openingbalance']) > 0 && !is_numeric($model['openingbalance'])) { + $errors->add('openingbalance', 'This is not a number.'); + } + if (isset($model['openingbalancedate']) && strlen($model['openingbalancedate']) > 0) { + try { + new Carbon($model['openingbalancedate']); + } catch (\Exception $e) { + $errors->add('openingbalancedate', 'This date is invalid.'); + } + } + } + + + if (!$errors->has('name')) { + $successes->add('name', 'OK'); + } + if (!$errors->has('openingbalance')) { + $successes->add('openingbalance', 'OK'); + } + if (!$errors->has('openingbalancedate')) { + $successes->add('openingbalancedate', 'OK'); + } + + return ['errors' => $errors, 'warnings' => $warnings, 'successes' => $successes]; } /** @@ -336,30 +492,25 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte } /** - * Finds an account type using one of the "$what"'s: expense, asset, revenue, opening, etc. - * * @param $what * - * @throws DeprecatedException - * + * @throws NotImplementedException * @return \AccountType|null */ public function findByWhat($what) { - throw new DeprecatedException; + throw new NotImplementedException; } /** * Returns all objects. * - * @throws DeprecatedException - * - * * @return Collection + * @throws NotImplementedException */ public function get() { - throw new DeprecatedException; + throw new NotImplementedException; } /** @@ -420,6 +571,32 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte } + /** + * @param \Account $account + * @param int $limit + * + * @return \Illuminate\Pagination\Paginator + */ + public function getAllTransactionJournals(\Account $account, $limit = 50) + { + $offset = intval(\Input::get('page')) > 0 ? intval(\Input::get('page')) * $limit : 0; + $set = $this->getUser()->transactionJournals()->withRelevantData()->leftJoin( + 'transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id' + )->where('transactions.account_id', $account->id)->take($limit)->offset($offset)->orderBy('date', 'DESC')->get( + ['transaction_journals.*'] + ); + $count = $this->getUser()->transactionJournals()->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') + ->orderBy('date', 'DESC')->where('transactions.account_id', $account->id)->count(); + $items = []; + foreach ($set as $entry) { + $items[] = $entry; + } + + return \Paginator::make($items, $count, $limit); + + + } + /** * @param \Account $account * @@ -478,4 +655,25 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte } + + /** + * @param \Account $account + * @param Carbon $start + * @param Carbon $end + * + * @return \Illuminate\Pagination\Paginator + */ + public function getTransactionJournalsInRange(\Account $account, Carbon $start, Carbon $end) + { + $set = $this->getUser()->transactionJournals()->transactionTypes(['Withdrawal'])->withRelevantData()->leftJoin( + 'transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id' + )->where('transactions.account_id', $account->id)->before($end)->after($start)->orderBy('date', 'DESC')->get( + ['transaction_journals.*'] + ); + + return $set; + + } + + } diff --git a/app/lib/FireflyIII/Database/Account/AccountInterface.php b/app/lib/FireflyIII/Database/Account/AccountInterface.php index c9d21ba229..336df90401 100644 --- a/app/lib/FireflyIII/Database/Account/AccountInterface.php +++ b/app/lib/FireflyIII/Database/Account/AccountInterface.php @@ -21,6 +21,34 @@ interface AccountInterface */ public function countAccountsByType(array $types); + /** + * Counts the number of total asset accounts. Useful for DataTables. + * + * @return int + */ + public function countAssetAccounts(); + + /** + * Counts the number of total expense accounts. Useful for DataTables. + * + * @return int + */ + public function countExpenseAccounts(); + + /** + * Counts the number of total revenue accounts. Useful for DataTables. + * + * @return int + */ + public function countRevenueAccounts(); + + /** + * @param \Account $account + * + * @return \Account|null + */ + public function findInitialBalanceAccount(\Account $account); + /** * Get all accounts of the selected types. Is also capable of handling DataTables' parameters. * @@ -30,6 +58,24 @@ interface AccountInterface */ public function getAccountsByType(array $types); + /** + * Get all asset accounts. The parameters are optional and are provided by the DataTables plugin. + * + * @return Collection + */ + public function getAssetAccounts(); + + /** + * @return Collection + */ + public function getExpenseAccounts(); + + /** + * Get all revenue accounts. + * + * @return Collection + */ + public function getRevenueAccounts(); /** * @param \Account $account diff --git a/app/lib/FireflyIII/Database/AccountMeta/AccountMeta.php b/app/lib/FireflyIII/Database/AccountMeta/AccountMeta.php deleted file mode 100644 index a3d1d6a39e..0000000000 --- a/app/lib/FireflyIII/Database/AccountMeta/AccountMeta.php +++ /dev/null @@ -1,66 +0,0 @@ -isValid(); - - return ['errors' => $model->getErrors()]; - } -} \ No newline at end of file diff --git a/app/lib/FireflyIII/Database/Scope/AccountScope.php b/app/lib/FireflyIII/Database/Scope/AccountScope.php deleted file mode 100644 index 4028fdf329..0000000000 --- a/app/lib/FireflyIII/Database/Scope/AccountScope.php +++ /dev/null @@ -1,52 +0,0 @@ - 'account_role']; - - /** - * Apply the scope to a given Eloquent query builder. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * - * @return void - */ - public function apply(Builder $builder) - { - foreach (self::$fields as $name => $field) { - $builder->leftJoin( - 'account_meta AS ' . $field, function (JoinClause $join) use ($field, $name) { - $join->on($field . '.account_id', '=', 'accounts.id')->where($field . '.name', '=', $name); - } - ); - } - - //$builder->whereNull($model->getQualifiedDeletedAtColumn()); - } - - /** - * Remove the scope from the given Eloquent query builder. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * - * @return void - */ - public function remove(Builder $builder) - { - foreach ($builder->joins as $join) { - var_dump($join); - exit; - } - } -} \ No newline at end of file diff --git a/app/lib/FireflyIII/Database/Scope/AccountScopeTrait.php b/app/lib/FireflyIII/Database/Scope/AccountScopeTrait.php deleted file mode 100644 index d0ec9b77c6..0000000000 --- a/app/lib/FireflyIII/Database/Scope/AccountScopeTrait.php +++ /dev/null @@ -1,22 +0,0 @@ -getAccountsByType(['Default account', 'Asset account']); + return $accountRepository->getAssetAccounts(); } /** diff --git a/app/lib/FireflyIII/Report/Report.php b/app/lib/FireflyIII/Report/Report.php index f3040fe30f..56deca08ec 100644 --- a/app/lib/FireflyIII/Report/Report.php +++ b/app/lib/FireflyIII/Report/Report.php @@ -387,7 +387,7 @@ class Report implements ReportInterface $sharedAccounts[] = $account->id; } - $accounts = $this->_accounts->getAccountsByType(['Default account', 'Asset account'])->filter( + $accounts = $this->_accounts->getAssetAccounts()->filter( function (\Account $account) use ($sharedAccounts) { if (!in_array($account->id, $sharedAccounts)) { return $account; diff --git a/app/lib/FireflyIII/Validation/Account.php b/app/lib/FireflyIII/Validation/Account.php deleted file mode 100644 index 9eda3a0743..0000000000 --- a/app/lib/FireflyIII/Validation/Account.php +++ /dev/null @@ -1,62 +0,0 @@ - 'required|in:asset,expense,revenue', - 'name' => 'required|between:1,100', - 'openingBalance' => 'numeric', - 'openingBalanceDate' => 'date', - 'active' => 'required|boolean', - 'account_role' => 'in:' . $meta, - ]; - $validator = \Validator::make($data, $rules); - $validator->valid(); - - return $validator->messages(); - } - - /** - * Every time an [object or set of objects] is updated this method will validate the new - * values in the context of the existing object (or set of objects). Since most forms - * only have one [object] to validate and at least always one main [object] to validate - * this method will accept an array of data to validate and an optional model to validate - * against. - * - * @param array $data - * @param \Eloquent $model - * - * @return MessageBag - */ - public function update(array $data = [], \Eloquent $model = null) - { - // this method simply returns the validation done by "store": - return $this->store($data); - } -} \ No newline at end of file diff --git a/app/lib/FireflyIII/Validation/Validation.php b/app/lib/FireflyIII/Validation/Validation.php deleted file mode 100644 index 07e7784898..0000000000 --- a/app/lib/FireflyIII/Validation/Validation.php +++ /dev/null @@ -1,44 +0,0 @@ - ['required', 'between:1,100'], 'user_id' => 'required|exists:users,id', @@ -27,6 +25,8 @@ class Account extends Eloquent 'active' => 'required|boolean' ]; + protected $dates = ['deleted_at', 'created_at', 'updated_at']; + protected $fillable = ['name', 'user_id', 'account_type_id', 'active']; /** * Account type. @@ -67,7 +67,7 @@ class Account extends Eloquent /** * * @param EloquentBuilder $query - * @param array $types + * @param array $types */ public function scopeAccountTypeIn(EloquentBuilder $query, array $types) { @@ -97,16 +97,6 @@ class Account extends Eloquent return $this->hasMany('Transaction'); } - /** - * @param $value - * - * @return mixed - */ - public function getAccountRoleAttribute($value) - { - return json_decode($value); - } - /** * @param $fieldName * @param $fieldValue diff --git a/app/models/AccountMeta.php b/app/models/AccountMeta.php index 36a1462149..5a481a2c90 100644 --- a/app/models/AccountMeta.php +++ b/app/models/AccountMeta.php @@ -10,16 +10,16 @@ class AccountMeta extends Eloquent /** * @var array */ - protected $rules + public static $rules = [ - 'account_id' => 'numeric|exists:accounts,id', + 'account_id' => 'numeric|required|exists:accounts,id', 'name' => 'required|between:1,250', 'data' => 'required' ]; /** * @var array */ - protected $fillable = ['account_id', 'name', 'data']; + protected $fillable = ['account_id', 'name', 'date']; protected $table = 'account_meta'; /** diff --git a/app/views/accounts/create.blade.php b/app/views/accounts/create.blade.php index 260f1b3fb6..8fc3f78c5a 100644 --- a/app/views/accounts/create.blade.php +++ b/app/views/accounts/create.blade.php @@ -29,8 +29,8 @@