'boolean', 'webhook_configuration' => 'array', 'updated_at' => 'timestamp', 'created_at' => 'timestamp', 'deleted_at' => 'timestamp', ]; protected $with = [ 'company', ]; public function service(): SubscriptionService { return new SubscriptionService($this); } public function company(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Company::class); } public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class)->withTrashed(); } public function group_settings() { return $this->belongsTo(GroupSetting::class, 'group_id', 'id'); } public function nextDateByInterval($date, $frequency_id) { switch ($frequency_id) { case RecurringInvoice::FREQUENCY_DAILY: return $date->addDay(); case RecurringInvoice::FREQUENCY_WEEKLY: return $date->addWeek(); case RecurringInvoice::FREQUENCY_TWO_WEEKS: return $date->addWeeks(2); case RecurringInvoice::FREQUENCY_FOUR_WEEKS: return $date->addWeeks(4); case RecurringInvoice::FREQUENCY_MONTHLY: return $date->addMonthNoOverflow(); case RecurringInvoice::FREQUENCY_TWO_MONTHS: return $date->addMonthsNoOverflow(2); case RecurringInvoice::FREQUENCY_THREE_MONTHS: return $date->addMonthsNoOverflow(3); case RecurringInvoice::FREQUENCY_FOUR_MONTHS: return $date->addMonthsNoOverflow(4); case RecurringInvoice::FREQUENCY_SIX_MONTHS: return $date->addMonthsNoOverflow(6); case RecurringInvoice::FREQUENCY_ANNUALLY: return $date->addYear(); case RecurringInvoice::FREQUENCY_TWO_YEARS: return $date->addYears(2); case RecurringInvoice::FREQUENCY_THREE_YEARS: return $date->addYears(3); default: return null; } } }