コード例 #1
0
ファイル: GroupConverter.php プロジェクト: Exanrus/crm-bundle
 public function reverseConvert($object)
 {
     if ($object instanceof Group) {
         if ($object->getAccount() == $this->accountManager->getCurrentAccount()) {
             return ['id' => $object->getId(), 'name' => $object->getName(), 'roles' => $object->getRoles()];
         }
     }
     return null;
 }
コード例 #2
0
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     $request = $event->getRequest();
     $host = $this->accountManager->getHostFromDomain($request->getHost());
     $account = $this->em->getRepository('CoreBundle:Account')->findOneBy(array('domain' => $host));
     if ($account instanceof AccountInterface) {
         $this->accountManager->setCurrentAccount($account);
     } else {
         $response = new JsonResponse(['error' => 'Account for ' . $request->getHost() . ' not found'], Response::HTTP_NOT_FOUND);
         $event->setResponse($response);
     }
 }
コード例 #3
0
 protected function find($class, Request $request, $options, $name)
 {
     if ($options['mapping'] || $options['exclude']) {
         return false;
     }
     $id = $this->getIdentifier($request, $options, $name);
     if (false === $id || null === $id) {
         return false;
     }
     $criteria = array('id' => $id, 'account' => $this->accountManager->getCurrentAccount());
     try {
         return $this->getManager($options['entity_manager'], $class)->getRepository($class)->findOneBy($criteria);
     } catch (NoResultException $e) {
         return null;
     }
 }
コード例 #4
0
 public function onNewCaller(CallbackEvent $event)
 {
     $callEvent = $event->getCallEvent();
     /** @var Call $call */
     $call = $callEvent->getCall();
     // Prepare new client information
     $client = $call->getClient();
     $client->setFirstName('from call center');
     if ($callEvent->getTreeName() || $callEvent->getTreeNumber()) {
         $condition = new ChannelCondition();
         $condition->setAccount($this->accountManager->getCurrentAccount());
         $condition->setTreeName($callEvent->getTreeName())->setTreeNumber($callEvent->getTreeNumber());
         $channel = $this->channelManager->searchOne($condition);
         if ($channel instanceof Channel) {
             $call->getClient()->setChannel($channel);
         }
     }
 }
コード例 #5
0
 public function onFirstCall(CallbackEvent $event)
 {
     $callEvent = $event->getCallEvent();
     /** @var Call $call */
     $call = $callEvent->getCall();
     $callerSystem = $this->callManager->getCallerSystem($callEvent);
     $activity = $this->activityManager->create();
     $activity->setType('call');
     $this->activityManager->update($activity, false);
     $call->setActivity($activity);
     unset($activity);
     $call->setAccount($this->accountManager->getCurrentAccount());
     $user = $callerSystem->searchSourceUser($callEvent);
     if ($user instanceof UserInterface) {
         $call->setDirection(CallInterface::DIRECTION_OUTBOUND);
         $call->setUser($user);
         // Dispatch PerficoSipuniEvents::CALL when using SIP system for outbound call
         if ($callerSystem instanceof SipManager) {
             $e = new CallbackEvent();
             $e->setCallEvent($callEvent);
             $this->dispatcher->dispatch(PerficoSipuniEvents::CALL, $e);
         }
     } else {
         $call->setDirection(CallInterface::DIRECTION_INCOMING);
         $client = $callerSystem->searchSourceClient($callEvent);
         if ($client instanceof ClientInterface) {
             $call->setClient($client);
         } else {
             if ($callerSystem instanceof PhoneManager) {
                 // TODO need remove this condition since clients can call from Skype or Sip
                 $client = $this->clientManager->create();
                 $this->clientManager->update($client, false);
                 $callerSystem->prepareNewClient($client, $callEvent->getSrcNumber());
                 $call->setClient($client);
                 $e = new CallbackEvent();
                 $e->setCallEvent($callEvent);
                 $this->dispatcher->dispatch(PerficoCRMEvents::NEW_THE_CALLER, $e);
             }
         }
     }
 }
コード例 #6
0
ファイル: GenericManager.php プロジェクト: Exanrus/crm-bundle
 /**
  * @return AccountInterface
  */
 public function getCurrentAccount()
 {
     return $this->accountManager->getCurrentAccount();
 }