/** * @param Channel $channel */ public function scheduleRecalculation(Channel $channel = null) { if ($channel) { $isActiveChannel = $channel->getStatus() === Channel::STATUS_ACTIVE; $channelData = $channel->getData(); $rfmEnabled = !empty($channelData[RFMAwareInterface::RFM_STATE_KEY]); if (!$isActiveChannel || !$rfmEnabled) { return; } } if ($this->getJob()) { return; } $args = []; if ($channel) { $argument = sprintf('--channel=%s', $channel->getId()); $channelJob = $this->getJob($argument); if ($channelJob) { return; } $args = [$argument]; } $job = new Job(CalculateAnalyticsCommand::COMMAND_NAME, $args); $em = $this->doctrineHelper->getEntityManager($job); if (!$channel) { $channelJobs = $this->getJob('--channel'); if ($channelJobs) { foreach ($channelJobs as $channelJob) { $em->remove($channelJob); } } } $em->persist($job); $em->flush($job); }
/** * @param EntityManager $em * @param SettingsProvider $settingsProvider * @param Channel $channel */ public function __construct(EntityManager $em, SettingsProvider $settingsProvider, Channel $channel) { $this->em = $em; $this->settingsProvider = $settingsProvider; $this->channel = $channel; $this->channelType = $channel->getChannelType(); $this->dataSource = $channel->getDataSource(); $this->name = $channel->getName(); $this->owner = $channel->getOwner(); $this->entities = $channel->getEntities(); $this->status = (bool) $channel->getStatus(); }
/** * @Route( * "/status/change/{id}", * requirements={"id"="\d+"}, * name="orocrm_channel_change_status" * ) * @AclAncestor("orocrm_channel_update") */ public function changeStatusAction(Channel $channel) { if ($channel->getStatus() == Channel::STATUS_ACTIVE) { $message = 'orocrm.channel.controller.message.status.deactivated'; $channel->setStatus(Channel::STATUS_INACTIVE); } else { $message = 'orocrm.channel.controller.message.status.activated'; $channel->setStatus(Channel::STATUS_ACTIVE); } $this->getDoctrine()->getManager()->flush(); $event = new ChannelChangeStatusEvent($channel); $this->get('event_dispatcher')->dispatch(ChannelChangeStatusEvent::EVENT_NAME, $event); $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans($message)); return $this->redirect($this->generateUrl('orocrm_channel_view', ['id' => $channel->getId(), '_enableContentProviders' => 'mainMenu'])); }