Bristol SU Support Package
Repository.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use BristolSU\Support\Activity\Contracts\Repository as ActivityRepositoryContract;
12 
16 class Repository implements ActivityRepositoryContract
17 {
18 
29  public function getForAdministrator(?User $user = null, ?Group $group = null, ?Role $role = null): Collection
30  {
31  return $this->active()->filter(function($activity) use ($user, $group, $role) {
32  $logicTester = app()->make(LogicTester::class);
33  return $logicTester->evaluate($activity->adminLogic, $user, $group, $role);
34  })->values();
35  }
36 
45  public function active(): Collection
46  {
47  return Activity::active()->enabled()->with([
48  'moduleInstances',
49  'forLogic',
50  'adminLogic',
51  'moduleInstances.activeLogic',
52  'moduleInstances.visibleLogic',
53  'moduleInstances.mandatoryLogic',
54  ])->get();
55  }
56 
67  public function getForParticipant(?User $user = null, ?Group $group = null, ?Role $role = null): Collection
68  {
69  return $this->active()->filter(function($activity) use ($user, $group, $role) {
70  $logicTester = app()->make(LogicTester::class);
71  return $logicTester->evaluate($activity->forLogic, $user, $group, $role);
72  })->values();
73  }
74 
80  public function all(): Collection
81  {
82  return Activity::all();
83  }
84 
105  public function create(array $attributes): Activity
106  {
107  return Activity::create($attributes);
108  }
109 
110 
119  public function getById($id): Activity
120  {
121  return Activity::findOrFail($id);
122  }
123 
146  public function update($id, $attributes)
147  {
148  $activity = $this->getById($id);
149  $activity->fill($attributes);
150  $activity->save();
151  return $activity;
152  }
153 
162  public function delete($id)
163  {
164  return $this->getById($id)->delete();
165  }
166 }
getForParticipant(?User $user=null, ?Group $group=null, ?Role $role=null)
Definition: Repository.php:67
getForAdministrator(?User $user=null, ?Group $group=null, ?Role $role=null)
Definition: Repository.php:29