Exemplo n.º 1
0
 public function find(Message $message)
 {
     $corderCodes = array();
     foreach (array($message->getSubject(), $message->getBody()) as $mail) {
         $matches = NULL;
         if (preg_match_all('/\\d{4}\\/\\d{2}-\\d{4}\\/\\d{2}/m', $mail, $matches)) {
             $corderCodes = array_merge($corderCodes, $matches[0]);
         }
     }
     if (empty($corderCodes)) {
         return;
     }
     $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_oracle');
     $repo = $em->getRepository('Common\\Oracle\\Order');
     $orders = $repo->findByCode($corderCodes);
     foreach ($orders as $order) {
         // set order
         $metadata = new Metadata();
         $metadata->setMessage($message)->setType(Metadata::TYPE_ORDER)->setOracleId($order->getId())->setValue($order->getCode());
         if (!$this->metaExists($metadata, $message)) {
             $message->getMetadata()->add($metadata);
         }
         // take customer from order
         $metadata = new Metadata();
         $metadata->setMessage($message)->setType(Metadata::TYPE_CUSTOMER)->setOracleId($order->getCustomer()->getId())->setValue($order->getCustomer()->getEmail());
         if (!$this->metaExists($metadata, $message)) {
             $message->getMetadata()->add($metadata);
         }
     }
 }
Exemplo n.º 2
0
 protected function metaExists(Metadata $metadata, Message $message)
 {
     $exists = $message->getMetadata()->filter(function ($entry) use($metadata) {
         if ($entry->getMessage()->getId() == $metadata->getMessage()->getId() && $entry->getType() == $metadata->getType() && $entry->getOracleId() == $metadata->getOracleId() && $entry->getValue() == $metadata->getValue()) {
             return true;
         } else {
             return false;
         }
     })->count() > 0 ? true : false;
     if ($exists) {
         return true;
     } else {
         return false;
     }
 }
Exemplo n.º 3
0
 public function find(Message $message)
 {
     $fp = fopen('./data/ml/mail/test2.txt', 'w+');
     fwrite($fp, $message->getSubject());
     fwrite($fp, "\n");
     fwrite($fp, strip_tags($message->getBody()));
     fclose($fp);
     $output = trim(shell_exec("python ./python/src/prod_mail2_predict.py"));
     if ($output) {
         $profileRepo = $this->_lockedEm->getRepository('Common\\Entity\\Profile');
         $profile = $profileRepo->findOneBy(array('id' => $output));
         $msgProfile = new Message\Profile();
         $msgProfile->setMessage($message)->setOwner(true)->setProfile($profile);
         $message->getMessageProfiles()->add($msgProfile);
         $state = new Message\State();
         $state->setMessage($message)->setState(Message\State::STATE_OWNED);
         $message->getStates()->add($state);
     }
 }
Exemplo n.º 4
0
 public function find(Message $message)
 {
     $fp = fopen('./data/ml/mail/test.txt', 'w+');
     fwrite($fp, $message->getSubject());
     fwrite($fp, "\n");
     fwrite($fp, strip_tags($message->getBody()));
     fclose($fp);
     $type = new Type();
     $type->setMessage($message);
     $output = trim(shell_exec("python ./python/src/prod_mail_predict.py"));
     if (strcasecmp($output, Type::TYPE_FULFILLMENT) === 0) {
         $type->setType(Type::TYPE_FULFILLMENT);
     } elseif (strcasecmp($output, Type::TYPE_PRODUCT) === 0) {
         $type->setType(Type::TYPE_PRODUCT);
     } else {
         $type->setType(Type::TYPE_UNDEFINED);
     }
     $message->getTypes()->add($type);
 }
Exemplo n.º 5
0
 public function find(Message $message)
 {
     if ($message->getAddresses()->count() === 0) {
         return;
     }
     foreach ($message->getAddresses() as $address) {
         $from = strtolower(trim($address->getAddress()));
         $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_oracle');
         $repo = $em->getRepository('Common\\Oracle\\Customer');
         $customer = $repo->findByEmail($from);
         if (is_null($customer)) {
             return;
         }
         $metadata = new Metadata();
         $metadata->setMessage($message)->setType(Metadata::TYPE_CUSTOMER)->setOracleId($customer->getId())->setValue($customer->getEmail());
         if (!$this->metaExists($metadata, $message)) {
             $message->getMetadata()->add($metadata);
         }
     }
 }
Exemplo n.º 6
0
 private function articleUrl(Message $message)
 {
     $articleIds = array();
     foreach (array($message->getSubject(), $message->getBody()) as $mail) {
         if (preg_match_all('/article\\/([0-9]*)\\//mi', $mail, $matches)) {
             $articleIds = array_merge($articleIds, $matches[1]);
         }
     }
     $articleIds = array_values(array_unique($articleIds));
     $articleIds = array_map('trim', $articleIds);
     if (empty($articleIds)) {
         return;
     }
     $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_oracle');
     $qb = $em->createQueryBuilder();
     $qb->select('p')->from('Common\\Oracle\\Product', 'p')->where('p.id IN (:id)')->setParameter(':id', $articleIds);
     foreach ($qb->getQuery()->getResult() as $product) {
         $metadata = new Metadata();
         $metadata->setMessage($message)->setType(Metadata::TYPE_PRODUCT)->setOracleId($product->getId())->setValue($product->getName());
         if (!$this->metaExists($metadata, $message)) {
             $message->getMetadata()->add($metadata);
         }
     }
 }