app/Models/Journal/Entry.php (42 lines of code) (raw):
<?php
namespace App\Models\Journal;
use App\Helpers\DateHelper;
use App\Traits\Journalable;
use App\Models\Account\Account;
use App\Models\ModelBinding as Model;
use App\Interfaces\IsJournalableInterface;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* @property \Carbon\Carbon $date
*/
class Entry extends Model implements IsJournalableInterface
{
use Journalable;
protected $table = 'entries';
/**
* The attributes that aren't mass assignable.
*
* @var array
*/
protected $guarded = ['id'];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'account_id',
'title',
'post',
];
/**
* Get the account record associated with the entry.
*
* @return BelongsTo
*/
public function account()
{
return $this->belongsTo(Account::class);
}
/**
* Get the Entry date.
*
* @param string $value
* @return \Carbon\Carbon
*/
public function getDateAttribute($value)
{
// Default to created_at, but show journalEntry->date if the entry type is JournalEntry
return $this->journalEntry ? $this->journalEntry->date : $this->created_at;
}
/**
* Get all the information of the Entry for the journal.
* @return array
*/
public function getInfoForJournalEntry()
{
return [
'type' => 'entry',
'id' => $this->id,
'title' => $this->title,
'post' => $this->post,
'day' => $this->date->day,
'day_name' => mb_convert_case(DateHelper::getShortDay($this->date), MB_CASE_TITLE, 'UTF-8'),
'month' => $this->date->month,
'month_name' => mb_convert_case(DateHelper::getShortMonth($this->date), MB_CASE_UPPER, 'UTF-8'),
'year' => $this->date->year,
'date' => $this->date,
];
}
}