activityRepository = $activityRepository; } public function validate($period, Constraint $constraint) { if (!$constraint instanceof AccompanyingPeriodValidity) { throw new UnexpectedTypeException($constraint, AccompanyingPeriodValidity::class); } if (!$period instanceof AccompanyingPeriod) { throw new UnexpectedValueException($period, AccompanyingPeriod::class); } $socialIssues = []; $activities = $this->activityRepository->findByAccompanyingPeriod($period, 'SEE'); foreach ($activities as $activity) { $socialIssues = $activity->getSocialIssues()->getValues(); } foreach ($period->getWorks() as $work) { $socialIssues[] = $work->getSocialAction()->getIssue(); } foreach ($socialIssues as $si) { if (!in_array($si, $period->getSocialIssues()->getValues(), true)) { $this->context ->buildViolation( $constraint->messageSocialIssueCannotBeDeleted ) ->addViolation(); } } } }