/**
* Dynamically retrieve attributes.
*
* @param string $key
* @return mixed
*/
public function __get($key)
{
// Dynamically get time since attributes
$normalized = Str::snake($key);
$attribute = str_replace(['time_since_', 'time_till_'], ['', ''], $normalized);
if ((Str::startsWith($normalized, 'time_since_') || Str::startsWith($normalized, 'time_till_')) && in_array($attribute . '_at', $this->getDates())) {
// Convert the attribute to a Carbon date
$value = $this->getAttributeFromArray($attribute . '_at');
// Show label if date has not been set
if (is_null($value)) {
return Lang::get('esensi/core::core.labels.never_' . $attribute);
}
// Show human readable date
$date = $this->asDateTime($value);
return $date->diffForHumans();
}
// Default dynamic getter
return parent::__get($key);
}