예제 #1
0
 /**
  * Get the logged in customer
  *
  * @return \Magento\Customer\Api\Data\CustomerInterface|null
  */
 public function getCustomer()
 {
     try {
         return $this->currentCustomer->getCustomer();
     } catch (NoSuchEntityException $e) {
         return null;
     }
 }
예제 #2
0
 /**
  * {@inheritdoc}
  */
 public function getSectionData()
 {
     if (!$this->currentCustomer->getCustomerId()) {
         return [];
     }
     $customer = $this->currentCustomer->getCustomer();
     return ['fullname' => $this->customerViewHelper->getCustomerName($customer), 'firstname' => $customer->getFirstname()];
 }
 public function testGetConfigWithEmptyCustomer()
 {
     $customerId = 0;
     $expected = ['payment' => ['paypalBillingAgreement' => ['agreements' => [], 'transportName' => AbstractAgreement::TRANSPORT_BILLING_AGREEMENT_ID]]];
     $this->currentCustomerMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
     $this->agreementFactoryMock->expects($this->never())->method('create');
     $this->assertEquals($expected, $this->configProvider->getConfig());
 }
예제 #4
0
 /**
  * {@inheritdoc}
  */
 public function getSectionData()
 {
     $customerId = $this->currentCustomer->getCustomerId();
     if ($this->paypalData->shouldAskToCreateBillingAgreement($this->config, $customerId)) {
         return ['askToCreate' => true, 'confirmUrl' => $this->escaper->escapeUrl($this->urlBuilder->getUrl($this->startAction, [\Magento\Paypal\Model\Express\Checkout::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT => 1])), 'confirmMessage' => $this->escaper->escapeJsQuote(__('Would you like to sign a billing agreement to streamline further purchases with PayPal?'))];
     }
     return [];
 }
예제 #5
0
 /**
  * Return the full name of the customer currently logged in
  *
  * @return string|null
  */
 public function getCustomerName()
 {
     try {
         $customer = $this->customerRepository->getById($this->currentCustomer->getCustomerId());
         return $this->escapeHtml($this->_viewHelper->getCustomerName($customer));
     } catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
         return null;
     }
 }
예제 #6
0
파일: Recent.php 프로젝트: nja78/magento2
 /**
  * Return collection of reviews
  *
  * @return array|\Magento\Review\Model\Resource\Review\Product\Collection
  */
 public function getReviews()
 {
     if (!($customerId = $this->currentCustomer->getCustomerId())) {
         return [];
     }
     if (!$this->_collection) {
         $this->_collection = $this->_collectionFactory->create();
         $this->_collection->addStoreFilter($this->_storeManager->getStore()->getId())->addCustomerFilter($customerId)->setDateOrder()->setPageSize(5)->load()->addReviewSummary();
     }
     return $this->_collection;
 }
예제 #7
0
 public function testGetCollection()
 {
     $this->storeManager->expects($this->any())->method('getStore')->will($this->returnValue(new \Magento\Framework\Object(array('id' => 42))));
     $this->currentCustomer->expects($this->any())->method('getCustomerId')->will($this->returnValue(4242));
     $this->collection->expects($this->any())->method('addStoreFilter')->with(42)->will($this->returnValue($this->collection));
     $this->collection->expects($this->any())->method('addCustomerFilter')->with(4242)->will($this->returnValue($this->collection));
     $this->collection->expects($this->any())->method('setDateOrder')->with()->will($this->returnValue($this->collection));
     $this->collection->expects($this->any())->method('setPageSize')->with(5)->will($this->returnValue($this->collection));
     $this->collection->expects($this->any())->method('load')->with()->will($this->returnValue($this->collection));
     $this->collection->expects($this->any())->method('addReviewSummary')->with()->will($this->returnValue($this->collection));
     $this->assertSame($this->collection, $this->object->getCollection());
 }
 /**
  * Retrieve available customer billing agreements
  *
  * @return array
  */
 protected function getBillingAgreements()
 {
     $customerId = $this->currentCustomer->getCustomerId();
     $data = [];
     if (!$customerId) {
         return $data;
     }
     $collection = $this->agreementFactory->create()->getAvailableCustomerBillingAgreements($customerId);
     foreach ($collection as $item) {
         $data[] = ['id' => $item->getId(), 'referenceId' => $item->getReferenceId()];
     }
     return $data;
 }
예제 #9
0
파일: Success.php 프로젝트: aiesh/magento2
 /**
  * Return true if order(s) has one or more downloadable products
  *
  * @return bool
  */
 public function getOrderHasDownloadable()
 {
     $hasDownloadableFlag = $this->_checkoutSession->getHasDownloadableProducts(true);
     if (!$this->isOrderVisible()) {
         return false;
     }
     /**
      * if use guest checkout
      */
     if (!$this->currentCustomer->getCustomerId()) {
         return false;
     }
     return $hasDownloadableFlag;
 }
예제 #10
0
 /**
  * Class constructor
  *
  * @return void
  */
 protected function _construct()
 {
     parent::_construct();
     $purchased = $this->_linksFactory->create()->addFieldToFilter('customer_id', $this->currentCustomer->getCustomerId())->addOrder('created_at', 'desc');
     $this->setPurchased($purchased);
     $purchasedIds = [];
     foreach ($purchased as $_item) {
         $purchasedIds[] = $_item->getId();
     }
     if (empty($purchasedIds)) {
         $purchasedIds = [null];
     }
     $purchasedItems = $this->_itemsFactory->create()->addFieldToFilter('purchased_id', ['in' => $purchasedIds])->addFieldToFilter('status', ['nin' => [Item::LINK_STATUS_PENDING_PAYMENT, Item::LINK_STATUS_PAYMENT_REVIEW]])->setOrder('item_id', 'desc');
     $this->setItems($purchasedItems);
 }
예제 #11
0
 /**
  * @magentoDataFixture Magento/Customer/_files/customer.php
  * @magentoDataFixture Magento/Customer/_files/customer_two_addresses.php
  * @magentoDataFixture Magento/Customer/_files/customer_no_address.php
  * @dataProvider getDefaultShippingDataProvider
  */
 public function testGetDefaultShipping($customerId, $expected)
 {
     if (!empty($customerId)) {
         $this->currentCustomer->setCustomerId($customerId);
     }
     $this->assertEquals($expected, $this->_block->getDefaultShipping());
 }
예제 #12
0
 /**
  * @return \Magento\Framework\View\Element\AbstractBlock
  */
 protected function _beforeToHtml()
 {
     $result = parent::_beforeToHtml();
     /** @var \Magento\Paypal\Model\Config $config */
     $config = $this->_paypalConfigFactory->create();
     $config->setMethod($this->_paymentMethodCode);
     $isInCatalog = $this->getIsInCatalogProduct();
     if (!$this->_shortcutValidator->validate($this->_paymentMethodCode, $isInCatalog)) {
         $this->_shouldRender = false;
         return $result;
     }
     $quote = $isInCatalog || !$this->_checkoutSession ? null : $this->_checkoutSession->getQuote();
     // set misc data
     $this->setShortcutHtmlId($this->_mathRandom->getUniqueHash('ec_shortcut_'))->setCheckoutUrl($this->getUrl($this->_startAction));
     // use static image if in catalog
     if ($isInCatalog || null === $quote) {
         $this->setImageUrl($config->getExpressCheckoutShortcutImageUrl($this->_localeResolver->getLocale()));
     } else {
         /**@todo refactor checkout model. Move getCheckoutShortcutImageUrl to helper or separate model */
         $parameters = ['params' => ['quote' => $quote, 'config' => $config]];
         $checkoutModel = $this->_checkoutFactory->create($this->_checkoutType, $parameters);
         $this->setImageUrl($checkoutModel->getCheckoutShortcutImageUrl());
     }
     // ask whether to create a billing agreement
     $customerId = $this->currentCustomer->getCustomerId();
     // potential issue for caching
     if ($this->_paypalData->shouldAskToCreateBillingAgreement($config, $customerId)) {
         $this->setConfirmationUrl($this->getUrl($this->_startAction, [\Magento\Paypal\Model\Express\Checkout::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT => 1]));
         $this->setConfirmationMessage(__('Would you like to sign a billing agreement to streamline further purchases with PayPal?'));
     }
     return $result;
 }
 /**
  * test get customer method, method returns customer from service
  */
 public function testGetCustomerLoadCustomerFromService()
 {
     $this->moduleManagerMock->expects($this->once())->method('isEnabled')->with($this->equalTo('Magento_PageCache'))->will($this->returnValue(false));
     $this->customerSessionMock->expects($this->once())->method('getId')->will($this->returnValue($this->customerId));
     $this->customerRepositoryMock->expects($this->once())->method('getById')->with($this->equalTo($this->customerId))->will($this->returnValue($this->customerDataMock));
     $this->assertEquals($this->customerDataMock, $this->currentCustomer->getCustomer());
 }
예제 #14
0
 public function testSetLayoutWithoutAddress()
 {
     $addressId = 1;
     $customerPrefix = 'prefix';
     $customerFirstName = 'firstname';
     $customerMiddlename = 'middlename';
     $customerLastname = 'lastname';
     $customerSuffix = 'suffix';
     $title = 'title';
     $layoutMock = $this->getMockBuilder('Magento\\Framework\\View\\LayoutInterface')->getMock();
     $this->requestMock->expects($this->once())->method('getParam')->with('id', null)->willReturn($addressId);
     $this->addressRepositoryMock->expects($this->once())->method('getById')->with($addressId)->willThrowException(\Magento\Framework\Exception\NoSuchEntityException::singleField('addressId', $addressId));
     $newAddressMock = $this->getMockBuilder('Magento\\Customer\\Api\\Data\\AddressInterface')->getMock();
     $this->addressDataFactoryMock->expects($this->once())->method('create')->willReturn($newAddressMock);
     $customerMock = $this->getMockBuilder('Magento\\Customer\\Api\\Data\\CustomerInterface')->getMock();
     $this->currentCustomerMock->expects($this->once())->method('getCustomer')->willReturn($customerMock);
     $customerMock->expects($this->once())->method('getPrefix')->willReturn($customerPrefix);
     $customerMock->expects($this->once())->method('getFirstname')->willReturn($customerFirstName);
     $customerMock->expects($this->once())->method('getMiddlename')->willReturn($customerMiddlename);
     $customerMock->expects($this->once())->method('getLastname')->willReturn($customerLastname);
     $customerMock->expects($this->once())->method('getSuffix')->willReturn($customerSuffix);
     $newAddressMock->expects($this->once())->method('setPrefix')->with($customerPrefix)->willReturnSelf();
     $newAddressMock->expects($this->once())->method('setFirstname')->with($customerFirstName)->willReturnSelf();
     $newAddressMock->expects($this->once())->method('setMiddlename')->with($customerMiddlename)->willReturnSelf();
     $newAddressMock->expects($this->once())->method('setLastname')->with($customerLastname)->willReturnSelf();
     $newAddressMock->expects($this->once())->method('setSuffix')->with($customerSuffix)->willReturnSelf();
     $pageTitleMock = $this->getMockBuilder('Magento\\Framework\\View\\Page\\Title')->disableOriginalConstructor()->getMock();
     $this->pageConfigMock->expects($this->once())->method('getTitle')->willReturn($pageTitleMock);
     $this->model->setData('title', $title);
     $pageTitleMock->expects($this->once())->method('set')->with($title)->willReturnSelf();
     $this->assertEquals($this->model, $this->model->setLayout($layoutMock));
     $this->assertEquals($layoutMock, $this->model->getLayout());
 }
예제 #15
0
 /**
  * @return string
  */
 protected function _toHtml()
 {
     if ($this->currentCustomer->getCustomerId()) {
         return parent::_toHtml();
     } else {
         return '';
     }
 }
 /**
  * Return billing agreement code for method
  *
  * @param string $code
  * @return null|string
  */
 protected function getBillingAgreementCode($code)
 {
     $pre = __METHOD__ . ' : ';
     $this->_logger->debug($pre . 'bof');
     $customerId = $this->currentCustomer->getCustomerId();
     $this->config->setMethod($code);
     $this->_logger->debug($pre . 'eof');
     // always return null
     return $this->payfastHelper->shouldAskToCreateBillingAgreement($this->config, $customerId);
 }
예제 #17
0
 /**
  * Get all tax rates JSON for all product tax classes.
  *
  * @return string
  */
 public function getAllRatesByProductClassJson()
 {
     $result = [];
     foreach ($this->productTaxClassSource->getAllOptions() as $productTaxClass) {
         $taxClassId = $productTaxClass['value'];
         $taxRate = $this->calculationService->getDefaultCalculatedRate($taxClassId, $this->currentCustomer->getCustomerId(), $this->getStore()->getId());
         $result["value_{$taxClassId}"] = $taxRate;
     }
     return $this->jsonHelper->jsonEncode($result);
 }
예제 #18
0
 /**
  * @return int
  */
 public function getCompareItems()
 {
     if (!$this->_compareItems) {
         $this->_compareItems = $this->_createProductCompareCollection()->setStoreId($this->_storeManager->getStore()->getId());
         $this->_compareItems->setCustomerId($this->currentCustomer->getCustomerId());
         $this->_compareItems->setCustomerId($this->_customerSession->getCustomerId());
         $this->_compareItems->addAttributeToSelect('name')->useProductItem()->load();
     }
     return $this->_compareItems;
 }
예제 #19
0
파일: Book.php 프로젝트: aiesh/magento2
 /**
  * @return \Magento\Customer\Service\V1\Data\Customer|null
  */
 public function getCustomer()
 {
     $customer = $this->getData('customer');
     if (is_null($customer)) {
         try {
             $customer = $this->_customerAccountService->getCustomer($this->currentCustomer->getCustomerId());
         } catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
             return null;
         }
         $this->setData('customer', $customer);
     }
     return $customer;
 }
예제 #20
0
 /**
  * @return \Magento\Customer\Api\Data\CustomerInterface|null
  */
 public function getCustomer()
 {
     $customer = $this->getData('customer');
     if ($customer === null) {
         try {
             $customer = $this->customerRepository->getById($this->currentCustomer->getCustomerId());
         } catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
             return null;
         }
         $this->setData('customer', $customer);
     }
     return $customer;
 }
예제 #21
0
 /**
  * Retrieve Product Compare items collection
  *
  * @return \Magento\Catalog\Model\ResourceModel\Product\Compare\Item\Collection
  */
 public function getItems()
 {
     if ($this->_items === null) {
         $this->_compareProduct->setAllowUsedFlat(false);
         $this->_items = $this->_itemCollectionFactory->create();
         $this->_items->useProductItem(true)->setStoreId($this->_storeManager->getStore()->getId());
         if ($this->httpContext->getValue(Context::CONTEXT_AUTH)) {
             $this->_items->setCustomerId($this->currentCustomer->getCustomerId());
         } elseif ($this->_customerId) {
             $this->_items->setCustomerId($this->_customerId);
         } else {
             $this->_items->setVisitorId($this->_customerVisitor->getId());
         }
         $this->_items->addAttributeToSelect($this->_catalogConfig->getProductAttributes())->loadComparableAttributes()->addMinimalPrice()->addTaxPercents()->setVisibility($this->_catalogProductVisibility->getVisibleInSiteIds());
     }
     return $this->_items;
 }
예제 #22
0
 /**
  * Composes configuration for js
  *
  * @return string
  */
 public function getJsonConfig()
 {
     $store = $this->getCurrentStore();
     $currentProduct = $this->getProduct();
     /**
      * @var \Magento\ConfigurableProduct\Pricing\Price\AttributePrice $attributePrice
      */
     $attributePrice = $currentProduct->getPriceInfo()->getPrice('attribute_price');
     $options = $this->helper->getOptions($currentProduct, $this->getAllowProducts());
     $attributes = $attributePrice->prepareAttributes($options);
     $config = array('attributes' => $attributes['priceOptions'], 'template' => str_replace('%s', '#{price}', $store->getCurrentCurrency()->getOutputFormat()), 'basePrice' => $this->_registerJsPrice($this->_convertPrice($currentProduct->getFinalPrice())), 'oldPrice' => $this->_registerJsPrice($this->_convertPrice($currentProduct->getPrice())), 'productId' => $currentProduct->getId(), 'chooseText' => __('Choose an Option...'), 'taxConfig' => $attributePrice->getTaxConfig($this->currentCustomer->getCustomerId()), 'images' => $options['images'], 'baseImage' => $options['baseImage']);
     if ($currentProduct->hasPreconfiguredValues() && !empty($attributes['defaultValues'])) {
         $config['defaultValues'] = $attributes['defaultValues'];
     }
     $config = array_merge($config, $this->_getAdditionalConfig());
     return $this->jsonEncoder->encode($config);
 }
예제 #23
0
 /**
  * Returns default shipping address for current customer
  *
  * @return Address|null
  */
 public function getDefaultShippingAddress()
 {
     return $this->customerAddressService->getDefaultShippingAddress($this->currentCustomer->getCustomerId());
 }
예제 #24
0
 /**
  * test getDefaultShippingAddress
  */
 public function testGetDefaultShippingAddress()
 {
     $this->currentCustomerMock->expects($this->once())->method('getCustomerId')->will($this->returnValue($this->customerCurrentId));
     $this->customerAddressServiceMock->expects($this->once())->method('getDefaultShippingAddress')->will($this->returnValue($this->customerAddressDataMock));
     $this->assertEquals($this->customerAddressDataMock, $this->currentCustomerAddress->getDefaultShippingAddress());
 }
예제 #25
0
 /**
  * Initialize review collection
  *
  * @return $this
  */
 protected function _initCollection()
 {
     $this->_collection = $this->_collectionFactory->create();
     $this->_collection->addStoreFilter($this->_storeManager->getStore()->getId())->addCustomerFilter($this->currentCustomer->getCustomerId())->setDateOrder();
     return $this;
 }
예제 #26
0
파일: Edit.php 프로젝트: aiesh/magento2
 /**
  * Retrieve the Customer Data using the customer Id from the customer session.
  *
  * @return Customer
  */
 public function getCustomer()
 {
     return $this->currentCustomer->getCustomer();
 }
 /**
  * Returns default shipping address for current customer
  *
  * @return AddressInterface|null
  */
 public function getDefaultShippingAddress()
 {
     return $this->accountManagement->getDefaultShippingAddress($this->currentCustomer->getCustomerId());
 }
예제 #28
0
파일: Form.php 프로젝트: aiesh/magento2
 /**
  * Get billing agreement code
  *
  * @return string|null
  */
 public function getBillingAgreementCode()
 {
     $customerId = $this->currentCustomer->getCustomerId();
     return $this->_paypalData->shouldAskToCreateBillingAgreement($this->_config, $customerId) ? \Magento\Paypal\Model\Express\Checkout::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT : null;
 }
예제 #29
0
 /**
  * @return string
  */
 protected function _toHtml()
 {
     return $this->currentCustomer->getCustomerId() ? parent::_toHtml() : '';
 }
예제 #30
0
파일: View.php 프로젝트: aiesh/magento2
 /**
  * Check whether current customer is review owner
  *
  * @return bool
  */
 public function isReviewOwner()
 {
     return $this->getReviewData()->getCustomerId() == $this->currentCustomer->getCustomerId();
 }