From 7219eead2da29e31892bb0f73f479a2e0c2b8121 Mon Sep 17 00:00:00 2001 From: Daniel Seifert Date: Fri, 5 Aug 2022 00:43:08 +0200 Subject: [PATCH] initial --- .../d3linkmobility_ordermanager_action.php | 45 ++++++-- .../d3linkmobility_ordermanager_sender.php | 100 ++++++++++++++++++ .../d3linkmobility_ordermanager_action.tpl | 31 +++++- 3 files changed, 165 insertions(+), 11 deletions(-) create mode 100644 src/Application/Model/d3linkmobility_ordermanager_sender.php diff --git a/src/Application/Model/d3linkmobility_ordermanager_action.php b/src/Application/Model/d3linkmobility_ordermanager_action.php index 0f5e58b..940f470 100644 --- a/src/Application/Model/d3linkmobility_ordermanager_action.php +++ b/src/Application/Model/d3linkmobility_ordermanager_action.php @@ -15,12 +15,16 @@ declare(strict_types=1); namespace D3\Linkmobility4Ordermanager\Application\Model; +use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception; +use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException; use D3\Ordermanager\Application\Model\Actions\d3ordermanager_action_abstract; use D3\Ordermanager\Application\Model\d3ordermanager_conf; use Doctrine\DBAL\DBALException; use OxidEsales\Eshop\Application\Model\Content; use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException; use OxidEsales\Eshop\Core\Exception\DatabaseErrorException; +use OxidEsales\Eshop\Core\Exception\DatabaseException; +use OxidEsales\Eshop\Core\Exception\StandardException; class d3linkmobility_ordermanager_action extends d3ordermanager_action_abstract { @@ -99,18 +103,14 @@ class d3linkmobility_ordermanager_action extends d3ordermanager_action_abstract $aMailDesc = []; $aEditedValues ? - ($aEditedValues['blSendMailToCustomer'] ? $aMailDesc[] = 'Customer' : '') : - ($this->getManager()->getValue('blSendMailToCustomer') ? $aMailDesc[] = 'Customer' : ''); + ($aEditedValues['blLinkMobilityMessageToCustomer'] ? $aMailDesc[] = 'Customer' : '') : + ($this->getManager()->getValue('blLinkMobilityMessageToCustomer') ? $aMailDesc[] = 'Customer' : ''); $aEditedValues ? - ($aEditedValues['blSendMailToOwner'] ? $aMailDesc[] = 'Owner' : '') : - ($this->getManager()->getValue('blSendMailToOwner') ? $aMailDesc[] = 'Owner' : ''); - $aEditedValues ? - ($aEditedValues['blSendMailToCustom'] ? $aMailDesc[] = 'Custom: ' . $aEditedValues['sSendMailToCustomAddress'] : '') : - ($this->getManager()->getValue('blSendMailToCustom') ? - $aMailDesc[] = 'Custom: ' . $this->getManager()->getValue('sSendMailToCustomAddress') : + ($aEditedValues['blLinkMobilityMessageToCustom'] ? $aMailDesc[] = 'Custom: ' . $aEditedValues['sLinkMobilityMessageToCustomAddress'] : '') : + ($this->getManager()->getValue('blLinkMobilityMessageToCustom') ? + $aMailDesc[] = 'Custom: ' . $this->getManager()->getValue('sLinkMobilityMessageToCustomAddress') : '' ); - } return implode(', ', $aMailDesc); } @@ -177,6 +177,33 @@ class d3linkmobility_ordermanager_action extends d3ordermanager_action_abstract return $this->getManager()->getExecMode(); } + /** + * @throws DBALException + * @throws DatabaseConnectionException + * @throws DatabaseErrorException + * @throws DatabaseException + * @throws StandardException + * @throws d3ShopCompatibilityAdapterException + * @throws d3_cfg_mod_exception + */ + public function startExecution() + { + if ($this->canExecuteMethod() && $this->hasRequiredValues()) { + $this->getSendClass()->sendOrderManagerSms($this->getManager(), $this->getItem()); + } + } + + /** + * @return d3linkmobility_ordermanager_sender + */ + public function getSendClass() + { + /** @var d3linkmobility_ordermanager_sender $mailer */ + $sender = oxNew(d3linkmobility_ordermanager_sender::class); + + return $sender; + } + /** * @return string */ diff --git a/src/Application/Model/d3linkmobility_ordermanager_sender.php b/src/Application/Model/d3linkmobility_ordermanager_sender.php new file mode 100644 index 0000000..33281dc --- /dev/null +++ b/src/Application/Model/d3linkmobility_ordermanager_sender.php @@ -0,0 +1,100 @@ + + * @link https://www.oxidmodule.com + */ + +declare(strict_types=1); + +namespace D3\Linkmobility4Ordermanager\Application\Model; + +use D3\Linkmobility4OXID\Application\Model\MessageTypes\Sms; +use D3\Linkmobility4OXID\Application\Model\OrderRecipients; +use D3\LinkmobilityClient\ValueObject\Recipient; +use D3\Ordermanager\Application\Model\d3ordermanager; +use OxidEsales\Eshop\Application\Model\Order; + +class d3linkmobility_ordermanager_sender +{ + /** @var d3ordermanager */ + protected $manager; + + /** @var Order */ + protected $item; + + public function sendOrderManagerSms(d3ordermanager $manager, Order $item) + { + $this->setManager($manager); + $this->setItem($item); + + $sms = oxNew(Sms::class, $this->getMessageBody()); + $sms->sendCustomRecipientMessage($this->getRecipients()); + } + + /** + * @return string + */ + protected function getMessageBody(): string + { + return ''; + } + + /** + * @return array + * @throws \D3\Linkmobility4OXID\Application\Model\Exceptions\noRecipientFoundException + * @throws \D3\ModCfg\Application\Model\Exception\d3ParameterNotFoundException + */ + protected function getRecipients(): array + { + $aEditedValues = $this->getManager()->getEditedValues(); + + $recipients = []; + if ($aEditedValues && $aEditedValues['blLinkMobilityMessageToCustomer']) { + $recipients[] = oxNew(OrderRecipients::class, $this->getItem())->getSmsRecipient(); + } + if ($aEditedValues && $aEditedValues['blLinkMobilityMessageToCustom']) { + $recipients[] = oxNew(Recipient::class, 'number', 'DE'); + } + + return $recipients; + } + + /** + * @return Order + */ + public function getItem(): Order + { + return $this->item; + } + + /** + * @param Order $item + */ + public function setItem(Order $item): void + { + $this->item = $item; + } + + /** + * @param d3ordermanager $manager + */ + public function setManager(d3ordermanager $manager): void + { + $this->manager = $manager; + } + + /** + * @return d3ordermanager + */ + public function getManager(): d3ordermanager + { + return $this->manager; + } +} \ No newline at end of file diff --git a/src/Application/views/admin/tpl/d3linkmobility_ordermanager_action.tpl b/src/Application/views/admin/tpl/d3linkmobility_ordermanager_action.tpl index 2bd714e..4cb7cd7 100644 --- a/src/Application/views/admin/tpl/d3linkmobility_ordermanager_action.tpl +++ b/src/Application/views/admin/tpl/d3linkmobility_ordermanager_action.tpl @@ -13,7 +13,7 @@ getValue('sLinkMobilityMessageFromTheme') == 'frontend'}]checked[{/if}] [{$blActionRestriction}] [{$readonly}]>
getValue('sLinkMobilityMessageFromTheme') == 'module'}]checked[{/if}] [{$blActionRestriction}] [{$readonly}]> - +

+ + [{oxmultilang ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_FROM2"}]
+ + + getValue('blLinkMobilityMessageToCustomer') == 1}]checked[{/if}] [{$blActionRestriction}] [{$readonly}]> + + [{oxinputhelp ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_TOCUSTOMER_DESC"}]
+ + getValue('blLinkMobilityMessageToCustom') == 1}]checked[{/if}] [{$blActionRestriction}] [{$readonly}]> + + + + [{oxinputhelp ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_TOMAIL_DESC"}] + [{oxmultilang ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_ToUseLMSettings"}] [{oxinputhelp ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_ToUseLMSettings_DESC"}]
[{/block}] [{else}] - [{block name="ordermanager_admin_action_sendmail_viewer"}] + [{block name="ordermanager_admin_action_LinkMobilityMessage_viewer"}] [{oxmultilang ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_FROM1"}]
[{if $edit->getValue('sLinkMobilityMessageFromSource') == 'template'}] [{oxmultilang ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_FROMTEMPLATE"}] @@ -57,6 +71,19 @@ [{/foreach}] [{/if}]
+ + [{oxmultilang ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_FROM2"}]
+ + [{if $edit->getValue('blLinkMobilityMessageToCustomer') == 1}] + [{oxmultilang ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_TOCUSTOMER"}] + [{oxinputhelp ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_TOCUSTOMER_DESC"}], + [{/if}] + [{if $edit->getValue('blLinkMobilityMessageToCustom') == 1}] + [{oxmultilang ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_TOMAIL"}] + "[{$edit->getValue('sLinkMobilityMessageToCustomAddress')}]" + [{oxinputhelp ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_TOMAIL_DESC"}] + [{/if}] + [{oxmultilang ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_ToUseLMSettings"}] [{oxinputhelp ident="D3_ORDERMANAGER_ACTION_LINKMOBILITYMESSAGE_ToUseLMSettings_DESC"}]
[{/block}] [{/if}]