Browse Source

Add subscription model docblocks

pull/12/head
Nafies Luthfi 8 years ago
parent
commit
7a35ebe54f
  1. 75
      app/Entities/Subscriptions/Subscription.php
  2. 17
      app/Entities/Subscriptions/SubscriptionsRepository.php
  3. 25
      app/Entities/Subscriptions/Type.php

75
app/Entities/Subscriptions/Subscription.php

@ -5,68 +5,133 @@ namespace App\Entities\Subscriptions;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/**
* Subscription Model.
*
* @author Nafies Luthfi <nafiesl@gmail.com>
*/
class Subscription extends Model class Subscription extends Model
{ {
/**
* The attributes that aren't mass assignable.
*
* @var array
*/
protected $guarded = ['id', 'created_at', 'updated_at']; protected $guarded = ['id', 'created_at', 'updated_at'];
/**
* Show subscription name with link to subscription detail.
*
* @return Illuminate\Support\HtmlString
*/
public function nameLink() public function nameLink()
{ {
return link_to_route('subscriptions.show', $this->name, [$this->id], [ return link_to_route('subscriptions.show', $this->name, [$this->id], [
'title' => trans(
'title' => __(
'app.show_detail_title', 'app.show_detail_title',
['name' => $this->name, 'type' => trans('subscription.subscription')]
['name' => $this->name, 'type' => __('subscription.subscription')]
), ),
]); ]);
} }
/**
* Check weather the subscription is near it's due date.
*
* @return bool
*/
public function nearOfDueDate() public function nearOfDueDate()
{ {
return Carbon::parse($this->due_date)->diffInDays(Carbon::now()) < 60; return Carbon::parse($this->due_date)->diffInDays(Carbon::now()) < 60;
} }
/**
* Show the subscription near due date sign (icon).
*
* @return string
*/
public function nearOfDueDateSign() public function nearOfDueDateSign()
{ {
return $this->nearOfDueDate() ? '<i class="fa fa-exclamation-circle" style="color: red"></i>' : ''; return $this->nearOfDueDate() ? '<i class="fa fa-exclamation-circle" style="color: red"></i>' : '';
} }
/**
* Subscription near due date description.
*
* @return string
*/
public function dueDateDescription() public function dueDateDescription()
{ {
$dueDateDescription = trans('subscription.start_date').' : '.dateId($this->start_date)."\n";
$dueDateDescription .= trans('subscription.due_date').' : '.dateId($this->due_date);
$dueDateDescription = __('subscription.start_date').' : '.dateId($this->start_date)."\n";
$dueDateDescription .= __('subscription.due_date').' : '.dateId($this->due_date);
return $dueDateDescription; return $dueDateDescription;
} }
/**
* Subscription belongs to Project relation.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function project() public function project()
{ {
return $this->belongsTo('App\Entities\Projects\Project'); return $this->belongsTo('App\Entities\Projects\Project');
} }
/**
* Subscription belongs to Customer relation.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function customer() public function customer()
{ {
return $this->belongsTo('App\Entities\Partners\Customer'); return $this->belongsTo('App\Entities\Partners\Customer');
} }
/**
* Subscription belongs to Vendor relation.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function vendor() public function vendor()
{ {
return $this->belongsTo('App\Entities\Partners\Vendor'); return $this->belongsTo('App\Entities\Partners\Vendor');
} }
/**
* Get subscription status to display in the view.
*
* @return string
*/
public function status() public function status()
{ {
return $this->status_id == 1 ? trans('app.active') : trans('app.in_active');
return $this->status_id == 1 ? __('app.active') : __('app.in_active');
} }
/**
* Add type attribute on Subscription model.
*
* @return string
*/
public function getTypeAttribute() public function getTypeAttribute()
{ {
return Type::getNameById($this->type_id); return Type::getNameById($this->type_id);
} }
/**
* Add type_color attribute on Subscription model.
*
* @return string
*/
public function getTypeColorAttribute() public function getTypeColorAttribute()
{ {
return Type::getColorById($this->type_id); return Type::getColorById($this->type_id);
} }
/**
* Add type_label attribute on Subscription model.
*
* @return string
*/
public function getTypeLabelAttribute() public function getTypeLabelAttribute()
{ {
return '<span class="badge" style="background-color: '.$this->type_color.'">'.$this->type.'</span>'; return '<span class="badge" style="background-color: '.$this->type_color.'">'.$this->type.'</span>';

17
app/Entities/Subscriptions/SubscriptionsRepository.php

@ -9,13 +9,30 @@ use App\Entities\BaseRepository;
*/ */
class SubscriptionsRepository extends BaseRepository class SubscriptionsRepository extends BaseRepository
{ {
/**
* Subscription model.
*
* @var \App\Entities\Subscriptions\Subscription
*/
protected $model; protected $model;
/**
* Create SubscriptionRepository class instance.
*
* @param \App\Entities\Subscriptions\Subscription $model
*/
public function __construct(Subscription $model) public function __construct(Subscription $model)
{ {
parent::__construct($model); parent::__construct($model);
} }
/**
* Get subscrioption list.
*
* @param string $q
* @param int $customerId
* @return \Illuminate\Pagination\LengthAwarePaginator
*/
public function getSubscriptions($q, $customerId) public function getSubscriptions($q, $customerId)
{ {
return $this->model->orderBy('status_id', 'desc') return $this->model->orderBy('status_id', 'desc')

25
app/Entities/Subscriptions/Type.php

@ -6,28 +6,49 @@ use App\Entities\ReferenceAbstract;
class Type extends ReferenceAbstract class Type extends ReferenceAbstract
{ {
/**
* List of subscription type item.
*
* @var array
*/
protected static $lists = [ protected static $lists = [
1 => 'domain', 1 => 'domain',
2 => 'hosting', 2 => 'hosting',
3 => 'maintenance', 3 => 'maintenance',
]; ];
/**
* List of subscription color by type.
*
* @var array
*/
protected static $colors = [ protected static $colors = [
1 => '#337ab7', 1 => '#337ab7',
2 => '#4caf50', 2 => '#4caf50',
3 => '#00b3ff', 3 => '#00b3ff',
]; ];
/**
* Get type name by id.
*
* @param int $singleId
* @return string
*/
public static function getNameById($singleId) public static function getNameById($singleId)
{ {
return trans('subscription.types.'.static::getById($singleId));
return __('subscription.types.'.static::getById($singleId));
} }
/**
* Get subscription type items in array format.
*
* @return array
*/
public static function toArray() public static function toArray()
{ {
$lists = []; $lists = [];
foreach (static::$lists as $key => $value) { foreach (static::$lists as $key => $value) {
$lists[$key] = trans('subscription.types.'.$value);
$lists[$key] = __('subscription.types.'.$value);
} }
return $lists; return $lists;

Loading…
Cancel
Save