Bristol SU Support Package
ModuleInstanceEvaluator.php
Go to the documentation of this file.
1 <?php
2 
3 
5 
6 
19 
23 class ModuleInstanceEvaluator implements ModuleInstanceEvaluatorContract
24 {
25 
35  public function evaluateAdministrator(ModuleInstance $moduleInstance, ?User $user = null, ?Group $group = null, ?Role $role = null): EvaluationContract
36  {
37  $evaluation = app(EvaluationContract::class);
38  $evaluation->setVisible(true);
39  $evaluation->setMandatory(false);
40  $evaluation->setActive(true);
41  $evaluation->setComplete(false);
42 
43  return $evaluation;
44  }
45 
56  public function evaluateParticipant(ActivityInstance $activityInstance, ModuleInstance $moduleInstance, ?User $user = null, ?Group $group = null, ?Role $role = null): EvaluationContract
57  {
58  $evaluation = app(EvaluationContract::class);
59  $evaluation->setVisible(LogicTester::evaluate($moduleInstance->visibleLogic, $user, $group, $role));
60  $evaluation->setMandatory($activityInstance->activity->isCompletable() ? LogicTester::evaluate($moduleInstance->mandatoryLogic, $user, $group, $role) : false);
61  $evaluation->setActive(LogicTester::evaluate($moduleInstance->activeLogic, $user, $group, $role));
62  $evaluation->setComplete($this->isComplete($activityInstance, $moduleInstance));
63 
64  return $evaluation;
65  }
66 
78  public function evaluateResource(ActivityInstance $activityInstance, ModuleInstance $moduleInstance): EvaluationContract
79  {
80  $evaluation = app(EvaluationContract::class);
81  $resource = $activityInstance->participant();
82 
83  $audienceMemberFactory = app(AudienceMemberFactory::class);
84 
85  $evaluation->setVisible($audienceMemberFactory->withAccessToLogicGroupWithResource($resource, $moduleInstance->visibleLogic)->count() > 0);
86  $evaluation->setActive($audienceMemberFactory->withAccessToLogicGroupWithResource($resource, $moduleInstance->activeLogic)->count() > 0);
87  if ($activityInstance->activity->isCompletable()) {
88  $evaluation->setMandatory($audienceMemberFactory->withAccessToLogicGroupWithResource($resource, $moduleInstance->mandatoryLogic)->count() > 0);
89  } else {
90  $evaluation->setMandatory(false);
91  }
92  $evaluation->setComplete($this->isComplete($activityInstance, $moduleInstance));
93 
94  return $evaluation;
95  }
96 
104  private function isComplete(ActivityInstance $activityInstance, ModuleInstance $moduleInstance): bool
105  {
106  return ($activityInstance->activity->isCompletable() ?
107  app(CompletionConditionTester::class)->evaluate($activityInstance, $moduleInstance->completionConditionInstance) : false);
108  }
109 
110 }
evaluateResource(ActivityInstance $activityInstance, ModuleInstance $moduleInstance)
evaluateParticipant(ActivityInstance $activityInstance, ModuleInstance $moduleInstance, ?User $user=null, ?Group $group=null, ?Role $role=null)
isComplete(ActivityInstance $activityInstance, ModuleInstance $moduleInstance)
evaluateAdministrator(ModuleInstance $moduleInstance, ?User $user=null, ?Group $group=null, ?Role $role=null)