Cachet/app/Presenters/MetricPresenter.php
2017-09-30 11:29:12 +01:00

90 lines
2.1 KiB
PHP

<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Presenters;
use CachetHQ\Cachet\Presenters\Traits\TimestampsTrait;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Contracts\Support\Jsonable;
use McCool\LaravelAutoPresenter\BasePresenter;
class MetricPresenter extends BasePresenter implements Arrayable, Jsonable
{
use TimestampsTrait;
/**
* Determines the metric view filter name.
*
* @return string
*/
public function view_name()
{
switch ($this->wrappedObject->default_view) {
case 0: return 'last_hour';
case 1: return 'today';
case 2: return 'week';
case 3: return 'month';
}
}
/**
* Determines the metric view filter name, used in the API.
*
* @return string
*/
public function default_view_name()
{
return trans('cachet.metrics.filter.'.$this->trans_string_name());
}
/**
* Determines the metric translation view filter name.
*
* @return string
*/
public function trans_string_name()
{
switch ($this->wrappedObject->default_view) {
case 0: return 'last_hour';
case 1: return 'hourly';
case 2: return 'weekly';
case 3: return 'monthly';
}
}
/**
* Convert the presenter instance to an array.
*
* @return string[]
*/
public function toArray()
{
return array_merge($this->wrappedObject->toArray(), [
'created_at' => $this->created_at(),
'updated_at' => $this->updated_at(),
'default_view_name' => $this->default_view_name(),
]);
}
/**
* Convert the object to its JSON representation.
*
* @param int $options
* @return string
*/
public function toJson($options = 0)
{
$json = json_encode($this->toArray(), $options);
return $json;
}
}