validateActivityAndProject($value, $this->context); } private function validateActivityAndProject(TimesheetEntity $timesheet, ExecutionContextInterface $context): void { $newOrStarted = $timesheet->isRunning() || $timesheet->getId() === null; if (!$newOrStarted) { return; } $activity = $timesheet->getActivity(); if (null !== $activity && !$activity->isVisible()) { $context->buildViolation(TimesheetDeactivated::getErrorName(TimesheetDeactivated::DISABLED_ACTIVITY_ERROR)) ->atPath('activity') ->setTranslationDomain('validators') ->setCode(TimesheetDeactivated::DISABLED_ACTIVITY_ERROR) ->addViolation(); } $project = $timesheet->getProject(); if ($project === null) { return; } if (!$project->isVisible()) { $context->buildViolation(TimesheetDeactivated::getErrorName(TimesheetDeactivated::DISABLED_PROJECT_ERROR)) ->atPath('project') ->setTranslationDomain('validators') ->setCode(TimesheetDeactivated::DISABLED_PROJECT_ERROR) ->addViolation(); } $customer = $project->getCustomer(); if ($customer === null) { return; } if (!$customer->isVisible()) { $context->buildViolation(TimesheetDeactivated::getErrorName(TimesheetDeactivated::DISABLED_CUSTOMER_ERROR)) ->atPath('customer') ->setTranslationDomain('validators') ->setCode(TimesheetDeactivated::DISABLED_CUSTOMER_ERROR) ->addViolation(); } } }