/**
  * @Route("/create/{mailbox}")
  * @Acl(
  *      id="oro_email_autoresponserule_create",
  *      type="entity",
  *      class="OroEmailBundle:AutoResponseRule",
  *      permission="CREATE"
  * )
  * @Template("OroEmailBundle:AutoResponseRule:dialog/update.html.twig")
  */
 public function createAction(Mailbox $mailbox = null)
 {
     $rule = new AutoResponseRule();
     if ($mailbox) {
         $rule->setMailbox($mailbox);
     }
     return $this->update($rule);
 }
 /**
  * @Route("/update/{id}", requirements={"id"="\d+"})
  * @Acl(
  *      id="oro_email_autoresponserule_update",
  *      type="entity",
  *      class="OroEmailBundle:AutoResponseRule",
  *      permission="EDIT"
  * )
  * @Template("OroEmailBundle:AutoResponseRule:dialog/update.html.twig")
  */
 public function updateAction(AutoResponseRule $rule, Request $request)
 {
     if ($request->isMethod('POST')) {
         $params = $request->request->get(AutoResponseRuleType::NAME);
         if (!$params['template']['existing_entity'] && $rule->getTemplate()) {
             $oldTemplate = $rule->getTemplate();
             if (!$oldTemplate->isVisible()) {
                 $em = $this->getAutoResponseRuleManager();
                 $em->remove($oldTemplate);
             }
             $rule->setTemplate(new EmailTemplate());
         }
     }
     return $this->update($rule);
 }
Пример #3
0
 /**
  * @param AutoResponseRule $rule
  * @param Email $email
  *
  * @return array
  */
 public function createRuleExpr(AutoResponseRule $rule, Email $email)
 {
     $configs = [];
     foreach ($rule->getConditions() as $condition) {
         $paths = $this->getFieldPaths($condition->getField(), $email);
         $args = [null];
         if (!in_array($condition->getFilterType(), [FilterUtility::TYPE_EMPTY, FilterUtility::TYPE_NOT_EMPTY])) {
             $args[] = $this->parseValue($condition->getFilterValue(), $condition->getFilterType());
         }
         foreach ($paths as $path) {
             $args[0] = $path;
             $configKey = sprintf('@%s', $this->filterToConditionMap[$condition->getFilterType()]);
             $configs[] = [$configKey => $args];
         }
     }
     return $configs ? ['@and' => $configs] : [];
 }
Пример #4
0
 protected function getAutoResponseRule()
 {
     $subjectCondition = new AutoResponseRuleCondition();
     $subjectCondition->setField('subject')->setFilterType(FilterUtility::TYPE_EMPTY);
     $offerCondition = new AutoResponseRuleCondition();
     $offerCondition->setField('emailBody.bodyContent')->setFilterType(TextFilterType::TYPE_CONTAINS)->setFilterValue('offer');
     $saleCondition = new AutoResponseRuleCondition();
     $saleCondition->setField('emailBody.bodyContent')->setFilterType(TextFilterType::TYPE_CONTAINS)->setFilterValue('sale');
     $wonCondition = new AutoResponseRuleCondition();
     $wonCondition->setField('emailBody.bodyContent')->setFilterType(TextFilterType::TYPE_CONTAINS)->setFilterValue('won');
     $autoResponseRule = new AutoResponseRule();
     $autoResponseRule->addConditions([$subjectCondition, $offerCondition, $saleCondition, $wonCondition]);
     $createdAt = new \DateTime('now', new \DateTimeZone('UTC'));
     $createdAt->sub(\DateInterval::createFromDateString('1 day'));
     $autoResponseRule->setCreatedAt($createdAt);
     return $autoResponseRule;
 }