Skip to content
This repository has been archived by the owner on Jan 19, 2021. It is now read-only.

Checkout voucher #7

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions current/data/import/glossary.csv
Original file line number Diff line number Diff line change
Expand Up @@ -1744,3 +1744,7 @@ customer.account.print_shopping_list.title.shopping_list_name,Shopping List Name
customer.account.print_shopping_list.title.shopping_list_name,Name der Einkaufsliste,de_DE
customer.order.canceledTotal,Canceled amount,en_US
customer.order.canceledTotal,Stornierter Betrag,de_DE
checkout.step.voucher.title,Gutschein,de_DE
checkout.step.voucher.title,Voucher,en_US
checkout.step.voucher,Weiter zur Gutschein-Eingabe,de_DE
checkout.step.voucher,Go to Voucher,en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<transfers xmlns="spryker:transfer-01"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="spryker:transfer-01 http://static.spryker.com/transfer-01.xsd">

<transfer name="Quote">
<property name="checkoutVoucher" type="string" />
</transfer>
</transfers>
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,22 @@

class CheckoutPageDependencyProvider extends SprykerShopCheckoutPageDependencyProvider
{
const PLUGIN_VOUCHER_PAGE_WIDGETS = 'PLUGIN_VOUCHER_PAGE_WIDGETS';

/**
* @param \Spryker\Yves\Kernel\Container $container
*
* @return \Spryker\Yves\Kernel\Container
*/
public function provideDependencies(Container $container)
{
$container = parent::provideDependencies($container);

$container = $this->addVoucherStepHandlerPlugin($container);

return $container;
}

/**
* @return string[]
*/
Expand Down Expand Up @@ -101,4 +117,27 @@ protected function getAddressStepFormDataProvider(Container $container)
{
return new CheckoutAddressFormDataProvider($this->getCustomerClient($container), $this->getStore());
}


/**
* @param \Spryker\Yves\Kernel\Container $container
*
* @return \Spryker\Yves\Kernel\Container
*/
protected function addVoucherStepHandlerPlugin(Container $container): Container
{
$container[self::PLUGIN_VOUCHER_PAGE_WIDGETS] = function () {
return $this->getVoucherPageWidgetPlugins();
};

return $container;
}

/**
* @return string[]
*/
protected function getVoucherPageWidgetPlugins(): array
{
return [];
}
}
39 changes: 39 additions & 0 deletions current/src/Pyz/Yves/CheckoutPage/CheckoutPageFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

/**
* Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
* Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
*/

namespace Pyz\Yves\CheckoutPage;

use Pyz\Yves\CheckoutPage\Form\FormFactory;
use Pyz\Yves\CheckoutPage\Process\StepFactory;
use SprykerShop\Yves\CheckoutPage\CheckoutPageFactory as SprykerCheckoutPageFactory;

class CheckoutPageFactory extends SprykerCheckoutPageFactory
{
/**
* @return \Pyz\Yves\CheckoutPage\Process\StepFactory
*/
public function createStepFactory()
{
return new StepFactory();
}

/**
* @return \Pyz\Yves\CheckoutPage\Form\FormFactory
*/
public function createCheckoutFormFactory()
{
return new FormFactory();
}

/**
* @return string[]
*/
public function getVoucherPageWidgetPlugins(): array
{
return $this->getProvidedDependency(CheckoutPageDependencyProvider::PLUGIN_VOUCHER_PAGE_WIDGETS);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace Pyz\Yves\CheckoutPage\Controller;

use SprykerShop\Yves\CheckoutPage\Controller\CheckoutController as SprykerCheckoutController;
use Symfony\Component\HttpFoundation\Request;

/**
* @method \Pyz\Yves\CheckoutPage\CheckoutPageFactory getFactory()
*/
class CheckoutController extends SprykerCheckoutController
{
/**
* @param \Symfony\Component\HttpFoundation\Request $request
*
* @return mixed
*/
public function voucherAction(Request $request)
{
$response = $this->createStepProcess()->process(
$request,
$this->getFactory()
->createCheckoutFormFactory()
->createVoucherFormCollection()
);

if (!is_array($response)) {
return $response;
}

return $this->view(
$response,
$this->getFactory()->getCustomerPageWidgetPlugins(),
'@CheckoutPage/views/checkout/voucher/voucher.twig'
);
}
}
43 changes: 43 additions & 0 deletions current/src/Pyz/Yves/CheckoutPage/Form/FormFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

/**
* Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
* Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
*/

namespace Pyz\Yves\CheckoutPage\Form;

use Pyz\Yves\CheckoutPage\Form\Steps\VoucherForm;
use SprykerShop\Yves\CheckoutPage\Form\FormFactory as SprykerFormFactory;

class FormFactory extends SprykerFormFactory
{

/**
* @return \Spryker\Yves\StepEngine\Form\FormCollectionHandlerInterface
*/
public function createVoucherFormCollection()
{
return $this->createFormCollection($this->getVoucherFormTypes());
}

/**
* @return string[]
*/
public function getVoucherFormTypes()
{
return [
$this->getVoucherForm(),
];
}

/**
* @return string
*/
public function getVoucherForm()
{
return VoucherForm::class;
}


}
56 changes: 56 additions & 0 deletions current/src/Pyz/Yves/CheckoutPage/Form/Steps/VoucherForm.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

/**
* Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
* Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
*/

namespace Pyz\Yves\CheckoutPage\Form\Steps;

use Generated\Shared\Transfer\QuoteTransfer;
use Spryker\Yves\Kernel\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;

/**
* @method \SprykerShop\Yves\CheckoutPage\CheckoutPageFactory getFactory()
*/
class VoucherForm extends AbstractType
{
const FIELD_ID_VOUCHER_METHOD = 'voucherCode';

/**
* @return string
*/
public function getBlockPrefix()
{
return 'voucherForm';
}


/**
* @param \Symfony\Component\Form\FormBuilderInterface $builder
* @param array $options
*
* @return void
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$this->addVoucherMethods($builder, $options);
}

/**
* @param \Symfony\Component\Form\FormBuilderInterface $builder
* @param array $options
*
* @return $this
*/
protected function addVoucherMethods(FormBuilderInterface $builder, array $options)
{
$builder->add(self::FIELD_ID_VOUCHER_METHOD, TextType::class, [
'attr' => array('class' => 'voucher')
]);

return $this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

/**
* Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
* Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
*/

namespace Pyz\Yves\CheckoutPage\Plugin\Provider;

use Silex\Application;
use SprykerShop\Yves\CheckoutPage\Plugin\Provider\CheckoutPageControllerProvider as SprykerCheckoutPageControllerProvider;

class CheckoutPageControllerProvider extends SprykerCheckoutPageControllerProvider
{
const CHECKOUT_VOUCHER = 'checkout-voucher';

/**
* @param \Silex\Application $app
*
* @return void
*/
protected function defineControllers(Application $app)
{
parent::defineControllers($app);
$this->addVoucherStepRoute();
}

/**
* @return $this
*/
protected function addVoucherStepRoute(): self
{
$this->createController('/{checkout}/voucher', self::CHECKOUT_VOUCHER, 'CheckoutPage', 'Checkout', 'voucher')
->assert('checkout', $this->getAllowedLocalesPattern() . 'checkout|checkout')
->value('checkout', 'checkout')
->method('GET|POST');

return $this;
}

}
67 changes: 67 additions & 0 deletions current/src/Pyz/Yves/CheckoutPage/Process/StepFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<?php

/**
* Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
* Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
*/

namespace Pyz\Yves\CheckoutPage\Process;

use Pyz\Yves\CheckoutPage\CheckoutPageDependencyProvider;
use Pyz\Yves\CheckoutPage\Plugin\Provider\CheckoutPageControllerProvider;
use Pyz\Yves\CheckoutPage\Process\Steps\VoucherStep;
use Spryker\Yves\StepEngine\Process\StepCollection;
use Spryker\Yves\StepEngine\Process\StepCollectionInterface;
use SprykerShop\Yves\CheckoutPage\Process\StepFactory as SprykerStepFactory;
use SprykerShop\Yves\HomePage\Plugin\Provider\HomePageControllerProvider;

/**
* @method \SprykerShop\Yves\CheckoutPage\CheckoutPageConfig getConfig()
*/
class StepFactory extends SprykerStepFactory
{
/**
* @return \Spryker\Yves\StepEngine\Process\StepCollectionInterface
*/
public function createStepCollection(): StepCollectionInterface
{
$stepCollection = new StepCollection(
$this->getUrlGenerator(),
CheckoutPageControllerProvider::CHECKOUT_ERROR
);

$stepCollection
->addStep($this->createEntryStep())
->addStep($this->createCustomerStep())
->addStep($this->createAddressStep())
->addStep($this->createShipmentStep())
->addStep($this->createVoucherStep())
->addStep($this->createPaymentStep())
->addStep($this->createSummaryStep())
->addStep($this->createPlaceOrderStep())
->addStep($this->createSuccessStep());

return $stepCollection;
}

/**
* @return \Pyz\Yves\CheckoutPage\Process\Steps\VoucherStep
*/
public function createVoucherStep(): VoucherStep
{
return new VoucherStep(
CheckoutPageControllerProvider::CHECKOUT_VOUCHER,
HomePageControllerProvider::ROUTE_HOME,
$this->getFlashMessenger(),
$this->getCalculationClient()
);
}

/**
* @return mixed
*/
public function getVoucherMethodHandler()
{
return $this->getProvidedDependency(CheckoutPageDependencyProvider::PLUGIN_VOUCHER_PAGE_WIDGETS);
}
}
Loading