use App\Entities\BaseRepository;
use App\Entities\Users\User;
use ProjectStatus;
class ProjectsRepository extends BaseRepository
{
protected $model;
public function __construct(Project $model)
{
parent::__construct($model);
}
public function getProjects($q, $statusId, User $user)
{
$statusIds = array_keys(ProjectStatus::toArray());
if ($user->hasRole('admin') == false) {
return $user->projects()
->where(function ($query) use ($q, $statusId, $statusIds) {
$query->where('projects.name', 'like', '%'.$q.'%');
if ($statusId && in_array($statusId, $statusIds)) {
$query->where('status_id', $statusId);
}
})
->latest()
->with(['customer', 'jobs'])
->paginate($this->_paginate);
}
return $this->model->latest()
->where(function ($query) use ($q, $statusId, $statusIds) {
$query->where('name', 'like', '%'.$q.'%');
if ($statusId && in_array($statusId, $statusIds)) {
$query->where('status_id', $statusId);
}
})
->with('customer')
->paginate($this->_paginate);
}
//
public function getStatusName($statusId)
{
return ProjectStatus::getNameById($statusId);
}
//
}