belongsTo('FireflyIII\Models\Account'); } /** * Grabs the PiggyBankRepetition that's currently relevant / active * * @returns PiggyBankRepetition */ public function currentRelevantRep() { if (!is_null($this->currentRep)) { return $this->currentRep; } if (intval($this->repeats) === 0) { $rep = $this->piggyBankRepetitions()->first(['piggy_bank_repetitions.*']); $this->currentRep = $rep; return $rep; } else { $query = $this->piggyBankRepetitions()->where( function (EloquentBuilder $q) { $q->where( function (EloquentBuilder $q) { $q->where( function (EloquentBuilder $q) { $today = new Carbon; $q->whereNull('startdate'); $q->orWhere('startdate', '<=', $today->format('Y-m-d 00:00:00')); } )->where( function (EloquentBuilder $q) { $today = new Carbon; $q->whereNull('targetdate'); $q->orWhere('targetdate', '>=', $today->format('Y-m-d 00:00:00')); } ); } )->orWhere( function (EloquentBuilder $q) { $today = new Carbon; $q->where('startdate', '>=', $today->format('Y-m-d 00:00:00')); $q->where('targetdate', '>=', $today->format('Y-m-d 00:00:00')); } ); } )->orderBy('startdate', 'ASC'); $result = $query->first(['piggy_bank_repetitions.*']); $this->currentRep = $result; return $result; } } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function piggyBankRepetitions() { return $this->hasMany('FireflyIII\Models\PiggyBankRepetition'); } /** * @return array */ public function getDates() { return ['created_at', 'updated_at', 'deleted_at', 'startdate', 'targetdate']; } /** * @param $value * * @return int */ public function getRemindMeAttribute($value) { return intval($value) == 1; } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function piggyBankEvents() { return $this->hasMany('FireflyIII\Models\PiggyBankEvent'); } /** * @return \Illuminate\Database\Eloquent\Relations\MorphMany */ public function reminders() { return $this->morphMany('FireflyIII\Models\Reminder', 'remindersable'); } }