Failed Conditions
Push — experimental/sf ( 267a6e...28d741 )
by Ryo
1408:20 queued 1400:20
created

SaleLimitOneValidator::handle()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 4
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 2
dl 4
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
/*
4
 * This file is part of EC-CUBE
5
 *
6
 * Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
7
 *
8
 * http://www.lockon.co.jp/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Plugin\PurchaseProcessors\Service\PurchaseFlow\Processor;
15
16
use Eccube\Annotation\CartFlow;
17
use Eccube\Annotation\OrderFlow;
18
use Eccube\Annotation\ShoppingFlow;
19
use Eccube\Entity\ItemInterface;
20
use Eccube\Service\PurchaseFlow\InvalidItemException;
21
use Eccube\Service\PurchaseFlow\PurchaseContext;
22
use Eccube\Service\PurchaseFlow\ItemValidator;
23
24
/**
25
 * 商品を1個のみしか購入できないようにするサンプル
26
 *
27
 * # 使い方
28
 * PurchaseFlowに新しいProcessorを追加する
29
 *
30
 * ## 追加できるプロセッサ
31
 * 以下のクラスまたはインタフェースを継承または実装している必要がある
32
 * * ItemPreprocessor
33
 * * ItemValidator
34
 * * ItemHolderPreprocessor
35
 * * ItemHolderValidator
36
 * * PurchaseProcessor
37
 *
38
 * ## 追加対象のフローの指定方法
39
 * * カートのPurchaseFlowにProcessorを追加する場合はCartFlowアノテーションを追加
40
 * * 購入フローのPurchaseFlowにProcessorを追加する場合はShoppingFlowアノテーションを追加
41
 * * 管理画面でのPurchaseFlowにProcessorを追加する場合はOrderFlowアノテーションを追加
42
 *
43
 * @CartFlow
44
 * @ShoppingFlow
45
 * @OrderFlow
46
 */
47 View Code Duplication
class SaleLimitOneValidator extends ItemValidator
0 ignored issues
show
Duplication introduced by
This class seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
48
{
49
    /**
50
     * @param ItemInterface $item
51
     * @param PurchaseContext $context
52
     *
53
     * @throws InvalidItemException
54
     */
55
    protected function validate(ItemInterface $item, PurchaseContext $context)
56
    {
57
        if (!$item->isProduct()) {
58
            return;
59
        }
60
61
        $quantity = $item->getQuantity();
62
        if (1 < $quantity) {
63
            $this->throwInvalidItemException('商品は1個しか購入できません。');
64
        }
65
    }
66
67
    protected function handle(ItemInterface $item, PurchaseContext $context)
68
    {
69
        $item->setQuantity(1);
70
    }
71
}
72