From 49a4509f67518b8d57c38f3f98ec7e8e71c74683 Mon Sep 17 00:00:00 2001 From: gonzalo Date: Thu, 16 Mar 2017 11:05:03 -0300 Subject: [PATCH] add monkey mark in orders grid add controller to retrieve the cart --- Block/Loadquote.php | 21 +++ Controller/Cart/Loadquote.php | 154 ++++++++++++++++++ Helper/Data.php | 1 + Model/Api/Cart.php | 5 +- Model/Api/Product.php | 8 +- Observer/Sales/Order/SubmitBefore.php | 37 +++++ Setup/InstallSchema.php | 20 +++ Ui/Component/Listing/Column/Monkey.php | 102 ++++++++++++ etc/events.xml | 17 ++ etc/fieldset.xml | 22 +++ etc/frontend/routes.xml | 16 ++ .../ui_component/sales_order_grid.xml | 17 ++ .../web/images/logo-freddie-monocolor-200.png | Bin 0 -> 14266 bytes .../layout/mailchimp_cart_loadquote.xml | 16 ++ view/frontend/templates/loadquote.phtml | 22 +++ 15 files changed, 452 insertions(+), 6 deletions(-) create mode 100644 Block/Loadquote.php create mode 100644 Controller/Cart/Loadquote.php create mode 100644 Observer/Sales/Order/SubmitBefore.php create mode 100644 Ui/Component/Listing/Column/Monkey.php create mode 100644 etc/events.xml create mode 100644 etc/fieldset.xml create mode 100644 etc/frontend/routes.xml create mode 100644 view/adminhtml/ui_component/sales_order_grid.xml create mode 100644 view/adminhtml/web/images/logo-freddie-monocolor-200.png create mode 100644 view/frontend/layout/mailchimp_cart_loadquote.xml create mode 100644 view/frontend/templates/loadquote.phtml diff --git a/Block/Loadquote.php b/Block/Loadquote.php new file mode 100644 index 00000000..373d0fc5 --- /dev/null +++ b/Block/Loadquote.php @@ -0,0 +1,21 @@ +pageFactory = $pageFactory; + $this->_quote = $quote; + $this->_customerSession = $customerSession; + $this->_helper = $helper; + $this->_urlHelper = $urlHelper; + $this->_message = $message; + $this->_customerUrl = $customerUrl; + parent::__construct($context); + } + + /** + * Index Action + * + * @return \Magento\Framework\View\Result\Page + */ + public function execute() + { + /** @var \Magento\Framework\View\Result\Page $resultPage */ + $resultPage = $this->pageFactory->create(); + $params = $this->getRequest()->getParams(); + if(isset($params['id'])) { + $quote = $this->_quote->create(); + $quote->getResource()->load($quote,$params['id']); + $magentoStoreId = $quote->getStoreId(); + $mailchimpStoreId = $this->_helper->getConfigValue( + \Ebizmarts\MailChimp\Helper\Data::XML_PATH_STORE, + $magentoStoreId + ); + $syncCommerce = $this->_helper->getChimpSyncEcommerce( + $mailchimpStoreId, + $params['id'], + \Ebizmarts\MailChimp\Helper\Data::IS_QUOTE + ); + if (!isset($params['token']) || $params['token'] != $syncCommerce->getMailchimpToken()) { + // @error + $this->_message->addErrorMessage(__("You can't access this cart")); + $url = $this->_urlHelper->getUrl( + $this->_helper->getConfigValue(\Ebizmarts\MailChimp\Helper\Data::XML_ABANDONEDCART_PAGE, + $magentoStoreId + ) + ); + $this->_redirect($url); + } else { + if (isset($params['mc_cid'])) { + $url = $this->_urlHelper->getUrl( + $this->_helper->getConfigValue( + \Ebizmarts\MailChimp\Helper\Data::XML_ABANDONEDCART_PAGE, + $magentoStoreId, + array('mc_cid'=> $params['mc_cid']) + ) + ); + } + else { + $url = $this->_urlHelper->getUrl( + $this->_helper->getConfigValue(\Ebizmarts\MailChimp\Helper\Data::XML_ABANDONEDCART_PAGE, + $magentoStoreId + ) + ); + } + $quote->setData('mailchimp_abandonedcart_flag', true); + $quote->getResource()->save($quote); + if (!$quote->getCustomerId()) { + $this->_customerSession->setQuoteId($quote->getId()); + $this->_redirect($url); + } else { + if ($this->_customerSession->isLoggedIn()) { + $this->_redirect($url); + } else { + $this->_message->addNoticeMessage(__("Login to complete your order")); + if (isset($params['mc_cid'])) { + $url = $this->_urlHelper->getUrl( + $this->_customerUrl->getLoginUrl(), + array('mc_cid'=>$params['mc_cid']) + ); + } + else { + $url = $this->_customerUrl->getLoginUrl(); + } + $this->_redirect($url); + } + } + } + } + return $resultPage; + } +} diff --git a/Helper/Data.php b/Helper/Data.php index 1a2038f9..cac5f789 100644 --- a/Helper/Data.php +++ b/Helper/Data.php @@ -31,6 +31,7 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper const XML_ECOMMERCE_FIRSTDATE = 'mailchimp/ecommerce/firstdate'; const XML_ABANDONEDCART_ACTIVE = 'mailchimp/abandonedcart/active'; const XML_ABANDONEDCART_FIRSTDATE = 'mailchimp/abandonedcart/firstdate'; + const XML_ABANDONEDCART_PAGE = 'mailchimp/abandonedcart/page'; const ORDER_STATE_OK = 'complete'; diff --git a/Model/Api/Cart.php b/Model/Api/Cart.php index d04f43a6..74bb832a 100644 --- a/Model/Api/Cart.php +++ b/Model/Api/Cart.php @@ -227,11 +227,8 @@ protected function _getModifiedQuotes($mailchimpStoreId, $magentoStoreId) /** * @var $customer \Magento\Customer\Model\Customer */ -// $customer = Mage::getModel("customer/customer"); -// $customer->setWebsiteId(Mage::getModel('core/store')->load($magentoStoreId)->getWebsiteId()); -// $customer->loadByEmail($cart->getCustomerEmail()); $customer = $this->_customerFactory->create(); - $customer->setWebsiteId(); + $customer->setWebsiteId($magentoStoreId); $customer->loadByEmail($cart->getCustomerEmail()); if ($customer->getEmail() != $cart->getCustomerEmail()) { diff --git a/Model/Api/Product.php b/Model/Api/Product.php index 44d60bd0..1d923851 100644 --- a/Model/Api/Product.php +++ b/Model/Api/Product.php @@ -247,8 +247,12 @@ protected function _buildProductData(\Magento\Catalog\Model\Product $product, $ $stock =$this->_stockItemRepository->get($product->getId()); $data["inventory_quantity"] = (int)$stock->getQty(); $data["backorders"] = (string)$stock->getBackorders(); - - $data["visibility"] = $product->getVisibility(); + if ($product->getVisibility() != \Magento\Catalog\Model\Product\Visibility::VISIBILITY_NOT_VISIBLE) { + $data["visibility"] = 'true'; + } + else { + $data["visibility"] = false; + } } else { //this is for a root product diff --git a/Observer/Sales/Order/SubmitBefore.php b/Observer/Sales/Order/SubmitBefore.php new file mode 100644 index 00000000..34ffff81 --- /dev/null +++ b/Observer/Sales/Order/SubmitBefore.php @@ -0,0 +1,37 @@ + + * @copyright Ebizmarts (http://ebizmarts.com) + * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) + * @date: 3/14/17 11:26 PM + * @file: SaveBefore.php + */ +namespace Ebizmarts\MailChimp\Observer\Sales\Order; + +use Magento\Framework\Event\Observer; + +class SubmitBefore implements \Magento\Framework\Event\ObserverInterface +{ + private $attributes = [ + 'mailchimp_abandonedcart_flag' + ]; + public function execute(\Magento\Framework\Event\Observer $observer) + { + /* @var \Magento\Sales\Model\Order $order */ + $order = $observer->getEvent()->getData('order'); + /* @var \Magento\Quote\Model\Quote $quote */ + $quote = $observer->getEvent()->getData('quote'); + + foreach ($this->attributes as $attribute) { + if ($quote->hasData($attribute)) { + $order->setData($attribute, $quote->getData($attribute)); + } + } + + return $this; + } +} \ No newline at end of file diff --git a/Setup/InstallSchema.php b/Setup/InstallSchema.php index a6ad21c6..c0435a83 100644 --- a/Setup/InstallSchema.php +++ b/Setup/InstallSchema.php @@ -195,6 +195,26 @@ public function install(SchemaSetupInterface $setup, ModuleContextInterface $con ] ); + $connection->addColumn( + $installer->getTable('quote'), + 'mailchimp_abandonedcart_flag', + [ + 'type' => \Magento\Framework\DB\Ddl\Table::TYPE_BOOLEAN, + 'default' => 0, + 'comment' => 'Retrieved from Mailchimp' + ] + ); + + $connection->addColumn( + $installer->getTable('sales_order'), + 'mailchimp_abandonedcart_flag', + [ + 'type' => \Magento\Framework\DB\Ddl\Table::TYPE_BOOLEAN, + 'default' => 0, + 'comment' => 'Retrieved from Mailchimp' + ] + ); + $path = $this->_helper->getBaseDir() . DIRECTORY_SEPARATOR . 'var' . DIRECTORY_SEPARATOR . 'Mailchimp'; try { if (!is_dir($path)) { diff --git a/Ui/Component/Listing/Column/Monkey.php b/Ui/Component/Listing/Column/Monkey.php new file mode 100644 index 00000000..e4bed59d --- /dev/null +++ b/Ui/Component/Listing/Column/Monkey.php @@ -0,0 +1,102 @@ + + * @copyright Ebizmarts (http://ebizmarts.com) + * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) + * @date: 3/15/17 1:23 AM + * @file: Monkey.php + */ +namespace Ebizmarts\MailChimp\Ui\Component\Listing\Column; + +use \Magento\Sales\Api\OrderRepositoryInterface; +use \Magento\Framework\View\Element\UiComponent\ContextInterface; +use \Magento\Framework\View\Element\UiComponentFactory; +use \Magento\Ui\Component\Listing\Columns\Column; +use \Magento\Framework\Api\SearchCriteriaBuilder; +use \Magento\Store\Model\StoreManagerInterface; + +class Monkey extends Column +{ + /** + * @var OrderRepositoryInterface + */ + protected $_orderRepository; + /** + * @var SearchCriteriaBuilder + */ + protected $_searchCriteria; + /** + * @var \Magento\Framework\View\Asset\Repository + */ + protected $_assetRepository; + /** + * @var \Magento\Framework\App\RequestInterface + */ + protected $_requestInterfase; + + /** + * Monkey constructor. + * @param ContextInterface $context + * @param UiComponentFactory $uiComponentFactory + * @param OrderRepositoryInterface $orderRepository + * @param \Magento\Framework\View\Asset\Repository $assetRepository + * @param \Magento\Framework\App\RequestInterface $requestInterface + * @param SearchCriteriaBuilder $criteria + * @param array $components + * @param array $data + */ + public function __construct( + ContextInterface $context, + UiComponentFactory $uiComponentFactory, + OrderRepositoryInterface $orderRepository, + \Magento\Framework\View\Asset\Repository $assetRepository, + \Magento\Framework\App\RequestInterface $requestInterface, + SearchCriteriaBuilder $criteria, + array $components = [], + array $data = [] + ) + { + $this->_orderRepository = $orderRepository; + $this->_searchCriteria = $criteria; + $this->_assetRepository = $assetRepository; + $this->_requestInterfase= $requestInterface; + parent::__construct($context, $uiComponentFactory, $components, $data); + } + + public function prepareDataSource(array $dataSource) + { + if (isset($dataSource['data']['items'])) { + foreach ($dataSource['data']['items'] as & $item) { + + $order = $this->_orderRepository->get($item["entity_id"]); + $status = $order->getData("mailchimp_abandonedcart_flag"); + $fieldName = $this->getData('name'); + + switch ($status) { + case "0": + $item[$fieldName . '_src'] = ''; + $item[$fieldName . '_alt'] = ''; + $item[$fieldName . '_link'] = ''; + $item[$fieldName . '_orig_src'] = ''; + $item[$fieldName . '_class'] = ''; + break; + case "1": + $params = array('_secure' => $this->_requestInterfase->isSecure()); + $url = $this->_assetRepository->getUrlWithParams('Ebizmarts_MailChimp::images/logo-freddie-monocolor-200.png', $params); + $item[$fieldName . '_src'] = $url; + $item[$fieldName . '_alt'] = 'hep hep thanks MailChimp'; + $item[$fieldName . '_link'] = ''; +// $item[$fieldName . '_orig_src'] = $url; + break; + + } + } + } + + return $dataSource; + } +} \ No newline at end of file diff --git a/etc/events.xml b/etc/events.xml new file mode 100644 index 00000000..7abc804e --- /dev/null +++ b/etc/events.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/etc/fieldset.xml b/etc/fieldset.xml new file mode 100644 index 00000000..ee5b2515 --- /dev/null +++ b/etc/fieldset.xml @@ -0,0 +1,22 @@ + + + + +
+ + + +
+
+
\ No newline at end of file diff --git a/etc/frontend/routes.xml b/etc/frontend/routes.xml new file mode 100644 index 00000000..85d02197 --- /dev/null +++ b/etc/frontend/routes.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/view/adminhtml/ui_component/sales_order_grid.xml b/view/adminhtml/ui_component/sales_order_grid.xml new file mode 100644 index 00000000..d239eae0 --- /dev/null +++ b/view/adminhtml/ui_component/sales_order_grid.xml @@ -0,0 +1,17 @@ + ++ + + + + Magento_Ui/js/grid/columns/thumbnail + false + hep hep thanks MailChimp + 1 + Mailchimp + 20 + + + + + \ No newline at end of file diff --git a/view/adminhtml/web/images/logo-freddie-monocolor-200.png b/view/adminhtml/web/images/logo-freddie-monocolor-200.png new file mode 100644 index 0000000000000000000000000000000000000000..75dd16d43596bcda003ad34e792f92754acc64fb GIT binary patch literal 14266 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 literal 0 HcmV?d00001 diff --git a/view/frontend/layout/mailchimp_cart_loadquote.xml b/view/frontend/layout/mailchimp_cart_loadquote.xml new file mode 100644 index 00000000..c09d00c1 --- /dev/null +++ b/view/frontend/layout/mailchimp_cart_loadquote.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/view/frontend/templates/loadquote.phtml b/view/frontend/templates/loadquote.phtml new file mode 100644 index 00000000..f3bf93b1 --- /dev/null +++ b/view/frontend/templates/loadquote.phtml @@ -0,0 +1,22 @@ + + + + + + + + + +