/** * @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); }
/** * @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] : []; }
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; }