From b2c1527b172187212e7db0973bc4dd299fa567bc Mon Sep 17 00:00:00 2001 From: James Cole Date: Fri, 27 Feb 2015 16:48:33 +0100 Subject: [PATCH] Lost a lot of stuff along the way. --- app/Models/Account.php | 105 +++++++++++++++++++++++++++++ app/Models/AccountType.php | 29 ++++++++ app/Models/Bill.php | 40 +++++++++++ app/Models/Budget.php | 59 ++++++++++++++++ app/Models/BudgetLimit.php | 37 ++++++++++ app/Models/Category.php | 41 +++++++++++ app/Models/Component.php | 22 ++++++ app/Models/LimitRepetition.php | 45 +++++++++++++ app/Models/PiggyBankEvent.php | 37 ++++++++++ app/Models/PiggyBankRepetition.php | 29 ++++++++ app/Models/Reminder.php | 37 ++++++++++ app/Models/Transaction.php | 48 +++++++++++++ app/Models/TransactionCurrency.php | 33 +++++++++ app/Models/TransactionGroup.php | 39 +++++++++++ app/Models/TransactionRelation.php | 21 ++++++ app/Models/TransactionType.php | 30 +++++++++ 16 files changed, 652 insertions(+) create mode 100644 app/Models/Account.php create mode 100644 app/Models/AccountType.php create mode 100644 app/Models/Bill.php create mode 100644 app/Models/Budget.php create mode 100644 app/Models/BudgetLimit.php create mode 100644 app/Models/Category.php create mode 100644 app/Models/Component.php create mode 100644 app/Models/LimitRepetition.php create mode 100644 app/Models/PiggyBankEvent.php create mode 100644 app/Models/PiggyBankRepetition.php create mode 100644 app/Models/Reminder.php create mode 100644 app/Models/Transaction.php create mode 100644 app/Models/TransactionCurrency.php create mode 100644 app/Models/TransactionGroup.php create mode 100644 app/Models/TransactionRelation.php create mode 100644 app/Models/TransactionType.php diff --git a/app/Models/Account.php b/app/Models/Account.php new file mode 100644 index 0000000000..2c6c21002e --- /dev/null +++ b/app/Models/Account.php @@ -0,0 +1,105 @@ + 'required|exists:users,id', + 'account_type_id' => 'required|exists:account_types,id', + 'name' => 'required|between:1,100|uniqueForUser:accounts,name', + 'active' => 'required|boolean' + ]; + + protected $fillable = ['user_id', 'account_type_id', 'name', 'active']; + + /** + * @param $fieldName + * + * @return string|null + */ + public function getMeta($fieldName) + { + foreach ($this->accountMeta as $meta) { + if ($meta->name == $fieldName) { + return $meta->data; + } + } + + return null; + + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function accountMeta() + { + return $this->hasMany('FireflyIII\Models\AccountMeta'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function accountType() + { + return $this->belongsTo('FireflyIII\Models\AccountType'); + } + + /** + * @return array + */ + public function getDates() + { + return ['created_at', 'updated_at', 'deleted_at']; + } + + /** + * @param EloquentBuilder $query + * @param array $types + */ + public function scopeAccountTypeIn(EloquentBuilder $query, array $types) + { + if (is_null($this->joinedAccountTypes)) { + $query->leftJoin('account_types', 'account_types.id', '=', 'accounts.account_type_id'); + $this->joinedAccountTypes = true; + } + $query->whereIn('account_types.type', $types); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function transactions() + { + return $this->hasMany('FireflyIII\Models\Transaction'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function user() + { + return $this->belongsTo('FireflyIII\User'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function piggyBanks() + { + return $this->hasMany('FireflyIII\Models\PiggyBank'); + } + +} diff --git a/app/Models/AccountType.php b/app/Models/AccountType.php new file mode 100644 index 0000000000..aee84c7c1e --- /dev/null +++ b/app/Models/AccountType.php @@ -0,0 +1,29 @@ +hasMany('FireflyIII\Models\Account'); + } + + /** + * @return array + */ + public function getDates() + { + return ['created_at', 'updated_at']; + } +} diff --git a/app/Models/Bill.php b/app/Models/Bill.php new file mode 100644 index 0000000000..7cdcc2e67c --- /dev/null +++ b/app/Models/Bill.php @@ -0,0 +1,40 @@ +hasMany('FireflyIII\Models\TransactionJournal'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function user() + { + return $this->belongsTo('FireflyIII\User'); + } + + +} diff --git a/app/Models/Budget.php b/app/Models/Budget.php new file mode 100644 index 0000000000..b07c11b830 --- /dev/null +++ b/app/Models/Budget.php @@ -0,0 +1,59 @@ +hasMany('FireflyIII\Models\BudgetLimit'); + } + + /** + * @return array + */ + public function getDates() + { + return ['created_at', 'updated_at', 'deleted_at']; + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough + */ + public function limitrepetitions() + { + return $this->hasManyThrough('FireflyIII\Models\LimitRepetition', 'FireflyIII\Models\BudgetLimit', 'budget_id'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function transactionjournals() + { + return $this->belongsToMany('FireflyIII\Models\TransactionJournal', 'budget_transaction_journal', 'budget_id'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function user() + { + return $this->belongsTo('FireflyIII\User'); + } + + +} diff --git a/app/Models/BudgetLimit.php b/app/Models/BudgetLimit.php new file mode 100644 index 0000000000..5189d91664 --- /dev/null +++ b/app/Models/BudgetLimit.php @@ -0,0 +1,37 @@ +belongsTo('FireflyIII\Models\Budget'); + } + + /** + * @return array + */ + public function getDates() + { + return ['created_at', 'updated_at', 'startdate']; + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function limitrepetitions() + { + return $this->hasMany('FireflyIII\Models\LimitRepetition'); + } + +} diff --git a/app/Models/Category.php b/app/Models/Category.php new file mode 100644 index 0000000000..37f12c7ca8 --- /dev/null +++ b/app/Models/Category.php @@ -0,0 +1,41 @@ +belongsToMany('FireflyIII\Models\TransactionJournal', 'category_transaction_journal', 'category_id'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function user() + { + return $this->belongsTo('FireflyIII\User'); + } + +} diff --git a/app/Models/Component.php b/app/Models/Component.php new file mode 100644 index 0000000000..0c8e57a45f --- /dev/null +++ b/app/Models/Component.php @@ -0,0 +1,22 @@ +belongsTo('FireflyIII\Models\BudgetLimit'); + } + + /** + * @return array + */ + public function getDates() + { + return ['created_at', 'updated_at', 'startdate', 'enddate']; + } + + public function spentInRepetition() + { + $sum = \DB::table('transactions') + ->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id') + ->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id') + ->leftJoin('budget_limits', 'budget_limits.budget_id', '=', 'budget_transaction_journal.budget_id') + ->leftJoin('limit_repetitions', 'limit_repetitions.budget_limit_id', '=', 'budget_limits.id') + ->where('transaction_journals.date', '>=', $this->startdate->format('Y-m-d')) + ->where('transaction_journals.date', '<=', $this->enddate->format('Y-m-d')) + ->where('transactions.amount', '>', 0) + ->where('limit_repetitions.id', '=', $this->id) + ->sum('transactions.amount'); + + return floatval($sum); + } + +} diff --git a/app/Models/PiggyBankEvent.php b/app/Models/PiggyBankEvent.php new file mode 100644 index 0000000000..f9a94a0286 --- /dev/null +++ b/app/Models/PiggyBankEvent.php @@ -0,0 +1,37 @@ +belongsTo('FireflyIII\Models\PiggyBank'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function transactionJournal() + { + return $this->belongsTo('FireflyIII\Models\TransactionJournal'); + } + +} diff --git a/app/Models/PiggyBankRepetition.php b/app/Models/PiggyBankRepetition.php new file mode 100644 index 0000000000..fe4d72a6f2 --- /dev/null +++ b/app/Models/PiggyBankRepetition.php @@ -0,0 +1,29 @@ +belongsTo('FireflyIII\Models\PiggyBank'); + } + +} diff --git a/app/Models/Reminder.php b/app/Models/Reminder.php new file mode 100644 index 0000000000..98e75a0a4c --- /dev/null +++ b/app/Models/Reminder.php @@ -0,0 +1,37 @@ +morphTo(); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function user() + { + return $this->belongsTo('FireflyIII\User'); + } + +} diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php new file mode 100644 index 0000000000..90af507dae --- /dev/null +++ b/app/Models/Transaction.php @@ -0,0 +1,48 @@ + 'required|exists:accounts,id', + 'transaction_journal_id' => 'required|exists:transaction_journals,id', + 'description' => 'between:1,255', + 'amount' => 'required|numeric' + ]; + use SoftDeletes, ValidatingTrait; + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function account() + { + return $this->belongsTo('FireflyIII\Models\Account'); + } + + /** + * @return array + */ + public function getDates() + { + return ['created_at', 'updated_at', 'deleted_at']; + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function transactionJournal() + { + return $this->belongsTo('FireflyIII\Models\TransactionJournal'); + } +} diff --git a/app/Models/TransactionCurrency.php b/app/Models/TransactionCurrency.php new file mode 100644 index 0000000000..9283709f9e --- /dev/null +++ b/app/Models/TransactionCurrency.php @@ -0,0 +1,33 @@ +hasMany('FireflyIII\Models\TransactionJournal'); + } +} diff --git a/app/Models/TransactionGroup.php b/app/Models/TransactionGroup.php new file mode 100644 index 0000000000..3afbdba0f4 --- /dev/null +++ b/app/Models/TransactionGroup.php @@ -0,0 +1,39 @@ +belongsToMany('FireflyIII\Models\TransactionJournal'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function user() + { + return $this->belongsTo('FireflyIII\User'); + } + +} diff --git a/app/Models/TransactionRelation.php b/app/Models/TransactionRelation.php new file mode 100644 index 0000000000..058f395537 --- /dev/null +++ b/app/Models/TransactionRelation.php @@ -0,0 +1,21 @@ +hasMany('FireflyIII\Models\TransactionJournal'); + } +}