Skip to content

Commit

Permalink
Merge branch 'master' into fix/HasBackgroundImageValidator
Browse files Browse the repository at this point in the history
  • Loading branch information
Sabrine FERCHICHI authored Sep 9, 2020
2 parents 08b539d + 2d60379 commit 57ad79e
Show file tree
Hide file tree
Showing 19 changed files with 192 additions and 37 deletions.
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,32 @@ class Order extends BaseOrder implements SetonoSyliusGiftCardPluginOrderInterfac
}
}
```

**Extend `OrderItemUnit`**

```php
<?php
# src/Entity/Order/OrderItemUnit.php
declare(strict_types=1);
namespace App\Entity\Order;
use Doctrine\ORM\Mapping as ORM;
use Setono\SyliusGiftCardPlugin\Model\OrderItemUnitInterface as SetonoSyliusGiftCardOrderItemUnitInterface;
use Setono\SyliusGiftCardPlugin\Model\OrderItemUnitTrait as SetonoSyliusGiftCardOrderItemUnitTrait;
use Sylius\Component\Core\Model\OrderItemUnit as BaseOrderItemUnit;
/**
* @ORM\Entity
* @ORM\Table(name="sylius_order_item_unit")
*/
class OrderItemUnit extends BaseOrderItemUnit implements SetonoSyliusGiftCardOrderItemUnitInterface
{
use SetonoSyliusGiftCardOrderItemUnitTrait;
}
```

**Extend `OrderRepository`:**

Expand Down Expand Up @@ -205,6 +231,9 @@ sylius_order:
classes:
model: App\Entity\Order\Order
repository: App\Doctrine\ORM\OrderRepository
order_item_unit:
classes:
model: App\Entity\Order\OrderItemUnit
sylius_product:
resources:
Expand Down
2 changes: 1 addition & 1 deletion spec/Model/GiftCardSpec.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
use PhpSpec\ObjectBehavior;
use Setono\SyliusGiftCardPlugin\Model\GiftCard;
use Setono\SyliusGiftCardPlugin\Model\GiftCardInterface;
use Setono\SyliusGiftCardPlugin\Model\OrderItemUnitInterface;
use Sylius\Component\Core\Model\ChannelInterface;
use Sylius\Component\Core\Model\OrderInterface;
use Sylius\Component\Core\Model\OrderItemUnitInterface;
use Sylius\Component\Resource\Model\ResourceInterface;

class GiftCardSpec extends ObjectBehavior
Expand Down
2 changes: 1 addition & 1 deletion spec/Operator/OrderGiftCardOperatorSpec.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
use Setono\SyliusGiftCardPlugin\Factory\GiftCardFactoryInterface;
use Setono\SyliusGiftCardPlugin\Model\GiftCardInterface;
use Setono\SyliusGiftCardPlugin\Model\OrderInterface;
use Setono\SyliusGiftCardPlugin\Model\OrderItemUnitInterface;
use Setono\SyliusGiftCardPlugin\Model\ProductInterface;
use Setono\SyliusGiftCardPlugin\Operator\OrderGiftCardOperator;
use Setono\SyliusGiftCardPlugin\Operator\OrderGiftCardOperatorInterface;
use Setono\SyliusGiftCardPlugin\Repository\GiftCardRepositoryInterface;
use Sylius\Component\Core\Model\OrderItemInterface;
use Sylius\Component\Core\Model\OrderItemUnitInterface;

class OrderGiftCardOperatorSpec extends ObjectBehavior
{
Expand Down
2 changes: 1 addition & 1 deletion src/Factory/GiftCardFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@

use Setono\SyliusGiftCardPlugin\Generator\GiftCardCodeGeneratorInterface;
use Setono\SyliusGiftCardPlugin\Model\GiftCardInterface;
use Setono\SyliusGiftCardPlugin\Model\OrderItemUnitInterface;
use Sylius\Component\Core\Model\ChannelInterface;
use Sylius\Component\Core\Model\CustomerInterface;
use Sylius\Component\Core\Model\OrderInterface;
use Sylius\Component\Core\Model\OrderItemUnitInterface;
use Sylius\Component\Resource\Factory\FactoryInterface;
use Webmozart\Assert\Assert;

Expand Down
2 changes: 1 addition & 1 deletion src/Factory/GiftCardFactoryInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
namespace Setono\SyliusGiftCardPlugin\Factory;

use Setono\SyliusGiftCardPlugin\Model\GiftCardInterface;
use Setono\SyliusGiftCardPlugin\Model\OrderItemUnitInterface;
use Sylius\Component\Core\Model\ChannelInterface;
use Sylius\Component\Core\Model\OrderItemUnitInterface;
use Sylius\Component\Resource\Factory\FactoryInterface;

interface GiftCardFactoryInterface extends FactoryInterface
Expand Down
2 changes: 1 addition & 1 deletion src/Model/GiftCard.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
use Sylius\Component\Core\Model\ChannelInterface;
use Sylius\Component\Core\Model\CustomerInterface;
use Sylius\Component\Core\Model\OrderInterface;
use Sylius\Component\Core\Model\OrderItemUnitInterface;
use Sylius\Component\Resource\Model\TimestampableTrait;
use Sylius\Component\Resource\Model\ToggleableTrait;

Expand Down Expand Up @@ -84,6 +83,7 @@ public function getOrderItemUnit(): ?OrderItemUnitInterface
public function setOrderItemUnit(OrderItemUnitInterface $orderItem): void
{
$this->orderItemUnit = $orderItem;
$orderItem->setGiftCard($this);
}

public function getOrder(): ?OrderInterface
Expand Down
1 change: 0 additions & 1 deletion src/Model/GiftCardInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
use Sylius\Component\Core\Model\ChannelInterface;
use Sylius\Component\Core\Model\CustomerInterface;
use Sylius\Component\Core\Model\OrderInterface;
use Sylius\Component\Core\Model\OrderItemUnitInterface;
use Sylius\Component\Resource\Model\CodeAwareInterface;
use Sylius\Component\Resource\Model\ResourceInterface;
use Sylius\Component\Resource\Model\TimestampableInterface;
Expand Down
14 changes: 14 additions & 0 deletions src/Model/OrderItemUnitInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Setono\SyliusGiftCardPlugin\Model;

use Sylius\Component\Core\Model\OrderItemUnitInterface as BaseOrderItemUnitInterface;

interface OrderItemUnitInterface extends BaseOrderItemUnitInterface
{
public function getGiftCard(): ?GiftCardInterface;

public function setGiftCard(GiftCardInterface $giftCard): void;
}
27 changes: 27 additions & 0 deletions src/Model/OrderItemUnitTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

declare(strict_types=1);

namespace Setono\SyliusGiftCardPlugin\Model;

use Doctrine\ORM\Mapping as ORM;

trait OrderItemUnitTrait
{
/**
* @var GiftCardInterface|null
*
* @ORM\OneToOne (targetEntity="Setono\SyliusGiftCardPlugin\Model\GiftCardInterface", mappedBy="orderItemUnit")
*/
protected $giftCard;

public function getGiftCard(): ?GiftCardInterface
{
return $this->giftCard;
}

public function setGiftCard(GiftCardInterface $giftCard): void
{
$this->giftCard = $giftCard;
}
}
9 changes: 9 additions & 0 deletions src/Model/OrderTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@

namespace Setono\SyliusGiftCardPlugin\Model;

use function assert;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Sylius\Component\Core\Model\Order;

/**
* @mixin Order
*/
trait OrderTrait
{
/**
Expand Down Expand Up @@ -38,6 +43,8 @@ public function hasGiftCards(): bool

public function addGiftCard(GiftCardInterface $giftCard): void
{
assert($this instanceof OrderInterface);

if (!$this->hasGiftCard($giftCard)) {
$this->giftCards->add($giftCard);
$giftCard->addAppliedOrder($this);
Expand All @@ -46,6 +53,8 @@ public function addGiftCard(GiftCardInterface $giftCard): void

public function removeGiftCard(GiftCardInterface $giftCard): void
{
assert($this instanceof OrderInterface);

if ($this->hasGiftCard($giftCard)) {
$this->giftCards->removeElement($giftCard);
$giftCard->removeAppliedOrder($this);
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/OrderGiftCardOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
use Setono\SyliusGiftCardPlugin\EmailManager\GiftCardEmailManagerInterface;
use Setono\SyliusGiftCardPlugin\Factory\GiftCardFactoryInterface;
use Setono\SyliusGiftCardPlugin\Model\GiftCardInterface;
use Setono\SyliusGiftCardPlugin\Model\OrderItemUnitInterface;
use Setono\SyliusGiftCardPlugin\Model\ProductInterface;
use Setono\SyliusGiftCardPlugin\Repository\GiftCardRepositoryInterface;
use Sylius\Component\Core\Model\OrderInterface;
use Sylius\Component\Core\Model\OrderItemInterface;
use Sylius\Component\Core\Model\OrderItemUnitInterface;
use Webmozart\Assert\Assert;

/**
Expand Down
5 changes: 2 additions & 3 deletions src/Resources/config/app/fixtures.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,17 @@ sylius_fixtures:
code: '1USD'
channel: 'FASHION_WEB'
currency: 'USD'
initial_amount: 2.00
amount: 1.00
gift_card_two_usd:
code: '2USD'
channel: 'FASHION_WEB'
initial_amount: 2.00
amount: 2.00

setono_gift_card_configuration:
options:
custom:
default_configuration:
code: 'default_configuration'
background_image: '@SetonoSyliusGiftCardPlugin/Resources/fixtures/default_background.jpg'
background_image: '@SetonoSyliusGiftCardPlugin/Resources/fixtures/default_background.png'
enabled: true
default: true
10 changes: 5 additions & 5 deletions src/Resources/config/doctrine/model/GiftCard.orm.xml
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
<doctrine-mapping xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping"
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping">

<mapped-superclass name="Setono\SyliusGiftCardPlugin\Model\GiftCard" table="setono_sylius_gift_card__gift_card">
<id name="id" column="id" type="integer">
<generator strategy="AUTO"/>
</id>

<field name="code" unique="true"/>
<field name="enabled" type="boolean"/>
<field name="initialAmount" type="integer"/>
<field name="amount" type="integer"/>
<field name="initialAmount" type="integer"/>
<field name="currencyCode" length="3"/>

<field name="createdAt" column="created_at" type="datetime">
Expand All @@ -28,12 +27,13 @@
<join-column name="channel_id" referenced-column-name="id" nullable="false"/>
</many-to-one>

<many-to-one field="orderItemUnit" target-entity="Sylius\Component\Order\Model\OrderItemUnitInterface">
<!-- Refers to the order item unit where this gift card was bought -->
<one-to-one field="orderItemUnit" target-entity="Sylius\Component\Order\Model\OrderItemUnitInterface" inversed-by="giftCard">
<join-column name="order_item_unit_id" referenced-column-name="id" on-delete="SET NULL"/>
</many-to-one>
</one-to-one>

<!-- A list of orders where this gift card was applied / used -->
<many-to-many field="appliedOrders" target-entity="Sylius\Component\Order\Model\OrderInterface"
mapped-by="giftCards"/>
</mapped-superclass>

</doctrine-mapping>
Binary file removed src/Resources/fixtures/default_background.jpg
Binary file not shown.
Binary file added src/Resources/fixtures/default_background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 20 additions & 20 deletions src/Resources/views/Shop/GiftCard/pdf.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,25 @@
{% endif %}

<html lang="{{ sylius_base_locale }}">
<head>
<title>Gift card: {{ giftCard.code }}</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/normalize.css@8.0.1/normalize.min.css">
<style>
body {
font-family: sans-serif;
font-size: 3rem;
background: transparent url("{{ path }}") no-repeat left bottom;
background-size: 100px;
}
<head>
<title>Gift card: {{ giftCard.code }}</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/normalize.css@8.0.1/normalize.min.css">
<style>
body {
font-family: sans-serif;
font-size: 3rem;
background: transparent url("{{ path }}") no-repeat left bottom;
background-size: 100px;
}
img {
display: block;
}
</style>
</head>
<body>
{{- giftCard.code -}}<br>
{{- giftCard.amount|sylius_format_money(giftCard.currencyCode, sylius_base_locale) -}}
</body>
img {
display: block;
}
</style>
</head>
<body>
{{- giftCard.code -}}<br>
{{- giftCard.amount|sylius_format_money(giftCard.currencyCode, sylius_base_locale) -}}
</body>
</html>
19 changes: 19 additions & 0 deletions tests/Application/Model/OrderItemUnit.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

declare(strict_types=1);

namespace Tests\Setono\SyliusGiftCardPlugin\Application\Model;

use Doctrine\ORM\Mapping as ORM;
use Setono\SyliusGiftCardPlugin\Model\OrderItemUnitInterface as SetonoSyliusGiftCardOrderItemUnitInterface;
use Setono\SyliusGiftCardPlugin\Model\OrderItemUnitTrait as SetonoSyliusGiftCardOrderItemUnitTrait;
use Sylius\Component\Core\Model\OrderItemUnit as BaseOrderItemUnit;

/**
* @ORM\Entity
* @ORM\Table(name="sylius_order_item_unit")
*/
class OrderItemUnit extends BaseOrderItemUnit implements SetonoSyliusGiftCardOrderItemUnitInterface
{
use SetonoSyliusGiftCardOrderItemUnitTrait;
}
5 changes: 3 additions & 2 deletions tests/Application/config/packages/_sylius.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
imports:
- { resource: "@SyliusCoreBundle/Resources/config/app/config.yml" }

- { resource: "@SyliusAdminBundle/Resources/config/app/config.yml" }
- { resource: "@SyliusAdminApiBundle/Resources/config/app/config.yml" }

- { resource: "@SyliusShopBundle/Resources/config/app/config.yml" }

parameters:
Expand All @@ -25,6 +23,9 @@ sylius_order:
classes:
model: Tests\Setono\SyliusGiftCardPlugin\Application\Model\Order
repository: Tests\Setono\SyliusGiftCardPlugin\Application\Doctrine\ORM\OrderRepository
order_item_unit:
classes:
model: Tests\Setono\SyliusGiftCardPlugin\Application\Model\OrderItemUnit

sylius_product:
resources:
Expand Down
Loading

0 comments on commit 57ad79e

Please sign in to comment.