/** * Load customer by email * * @param \Magento\Customer\Model\Customer $customer * @param string $email * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ public function loadByEmail(\Magento\Customer\Model\Customer $customer, $email) { $adapter = $this->_getReadAdapter(); $bind = ['customer_email' => $email]; $select = $adapter->select()->from($this->getEntityTable(), [$this->getEntityIdField()])->where('email = :customer_email'); if ($customer->getSharingConfig()->isWebsiteScope()) { if (!$customer->hasData('website_id')) { throw new \Magento\Framework\Exception\LocalizedException(__('Customer website ID must be specified when using the website scope')); } $bind['website_id'] = (int) $customer->getWebsiteId(); $select->where('website_id = :website_id'); } $customerId = $adapter->fetchOne($select, $bind); if ($customerId) { $this->load($customer, $customerId); } else { $customer->setData([]); } return $this; }
/** * get customer last quote id * */ public function getCustomerLastQuoteId(\Magento\Customer\Model\Customer $customer) { $storeIds = $this->_storeManager->getWebsite($customer->getWebsiteId())->getStoreIds(); $collection = $this->_quoteCollection->create()->addFieldToFilter('customer_id', $customer->getId())->addFieldToFilter('store_id', array('in' => $storeIds))->setPageSize(1)->setOrder('entity_id'); if ($collection->count()) { return $collection->getFirstItem(); } else { return false; } }
/** * Replace existing customer model with a new one. * * @param Customer $customer * @return $this */ public function push(Customer $customer) { $this->customerRegistryById[$customer->getId()] = $customer; $emailKey = $this->getEmailKey($customer->getEmail(), $customer->getWebsiteId()); $this->customerRegistryByEmail[$emailKey] = $customer; return $this; }
/** * Get customer last quote id. * * @param \Magento\Customer\Model\Customer $customer * * @return bool|mixed */ public function getCustomerLastQuoteId(\Magento\Customer\Model\Customer $customer) { $storeIds = $this->storeManager->getWebsite($customer->getWebsiteId())->getStoreIds(); $collection = $this->quoteCollection->create()->addFieldToFilter('customer_id', $customer->getId())->addFieldToFilter('store_id', ['in' => $storeIds])->setPageSize(1)->setOrder('entity_id'); if ($collection->getSize()) { //@codingStandardsIgnoreStart return $collection->getFirstItem(); //@codingStandardsIgnoreEnd } else { return false; } }