/** * @param BookingSchedule $value * @param ProviderAvailabilityConstraint $constraint * @throws Exception */ public function validate($value, Constraint $constraint) { foreach ($value->getPlace()->getBusinessHoursException() as $bhE) { if ($bhE->getId() == $value->getId()) { continue; } //foreach (DayFlaggableHelper::getWeekdays() as $day){ //$method = 'getDay' . $day; if ($value->getDay() == $bhE->getDay()) { if ($value->getStartsAt() >= $bhE->getStartsAt() && $bhE->getEndsAt() >= $value->getStartsAt()) { $this->context->buildViolation($constraint->openAtMessage)->setParameter('%openAt%', $value->getStartsAt()->format('H:i:s'))->setParameter('%startsAt%', $bhE->getStartsAt()->format('H:i:s'))->setParameter('%endsAt%', $bhE->getEndsAt()->format('H:i:s'))->setParameter('%day%', $value->getDay()->format('Y-m-d'))->atPath('startsAt')->addViolation(); break; } if ($value->getEndsAt() >= $bhE->getStartsAt() && $bhE->getEndsAt() >= $value->getEndsAt()) { $this->context->buildViolation($constraint->closeAtMessage)->setParameter('%closeAt%', $value->getEndsAt()->format('H:i:s'))->setParameter('%startsAt%', $bhE->getStartsAt()->format('H:i:s'))->setParameter('%endsAt%', $bhE->getEndsAt()->format('H:i:s'))->setParameter('%day%', $value->getDay()->format('Y-m-d'))->atPath('endsAt')->addViolation(); break; } } } }