Category.php
Go to the documentation of this file.
1 <?php
2 namespace App\Models;
3 
7 
16 class Category extends Model
17 {
18 
19  use SoftDeletes;
20  protected $dates = ['deleted_at'];
21  protected $table = 'categories';
22 
26  public $rules = array(
27  'user_id' => 'numeric',
28  'name' => 'required|min:3|max:255|unique:categories,name,NULL,deleted_at',
29  'category_type' => 'required',
30  );
31 
39  protected $injectUniqueIdentifier = true;
40  use ValidatingTrait;
41 
42 
48  protected $fillable = ['name','category_type'];
49 
50 
51  public function has_models()
52  {
53  return $this->hasMany('\App\Models\AssetModel', 'category_id')->count();
54  }
55 
56  public function accessories()
57  {
58  return $this->hasMany('\App\Models\Accessory');
59  }
60 
61  public function consumables()
62  {
63  return $this->hasMany('\App\Models\Consumable');
64  }
65 
66  public function components()
67  {
68  return $this->hasMany('\App\Models\Component');
69  }
70 
71  public function itemCount()
72  {
73  switch ($this->category_type) {
74  case 'asset':
75  return $this->assets->count();
76  case 'accessory':
77  return $this->accessories->count();
78  case 'component':
79  return $this->components->count();
80  case 'consumable':
81  return $this->consumables->count();
82  }
83  return '0';
84  }
85 
86  public function assets()
87  {
88  return $this->hasManyThrough('\App\Models\Asset', '\App\Models\AssetModel', 'category_id', 'model_id');
89  }
90 
91  public function models()
92  {
93  return $this->hasMany('\App\Models\AssetModel', 'category_id');
94  }
95 
96  public function getEula()
97  {
98 
99  $Parsedown = new \Parsedown();
100 
101  if ($this->eula_text) {
102  return $Parsedown->text(e($this->eula_text));
103  } elseif ((Setting::getSettings()->default_eula_text) && ($this->use_default_eula=='1')) {
104  return $Parsedown->text(e(Setting::getSettings()->default_eula_text));
105  } else {
106  return null;
107  }
108 
109  }
110 
120  public function scopeRequiresAcceptance($query)
121  {
122 
123  return $query->where('require_acceptance', '=', true);
124  }
125 
134  public function scopeTextSearch($query, $search)
135  {
136 
137  return $query->where(function ($query) use ($search) {
138 
139  $query->where('name', 'LIKE', '%'.$search.'%')
140  ->orWhere('category_type', 'LIKE', '%'.$search.'%');
141  });
142  }
143 }
scopeRequiresAcceptance($query)
scopeRequiresAcceptance
Definition: Category.php:120
static getSettings()
Definition: Setting.php:33
$rules
Category validation rules.
Definition: Category.php:26
scopeTextSearch($query, $search)
Query builder scope to search on text.
Definition: Category.php:134