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); } } }
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; } }
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); } }
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); }
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); } } }
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); } } }