Passed
Pull Request — master (#74)
by oleksandr
04:26
created

AbstractPayoneSubForm::getTemplatePath()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
/**
4
 * MIT License
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Yves\Payone\Form;
9
10
use Spryker\Yves\StepEngine\Dependency\Form\AbstractSubFormType;
11
use Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface;
12
use Spryker\Yves\StepEngine\Dependency\Form\SubFormProviderNameInterface;
13
use SprykerEco\Shared\Payone\PayoneConstants;
14
use SprykerEco\Yves\Payone\Form\Constraint\BankAccount;
15
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
16
use Symfony\Component\Form\FormBuilderInterface;
17
use Symfony\Component\Validator\Constraint;
18
use Symfony\Component\Validator\Constraints\NotBlank;
19
20
/**
21
 * @method \SprykerEco\Client\Payone\PayoneClientInterface getClient()
22
 */
23
abstract class AbstractPayoneSubForm extends AbstractSubFormType implements SubFormInterface, SubFormProviderNameInterface
24
{
25
    /**
26
     * @var string
27
     */
28
    public const PAYMENT_METHOD = '';
29
30
    /**
31
     * @var string
32
     */
33
    public const PAYMENT_PROVIDER = PayoneConstants::PROVIDER_NAME;
34
35
    /**
36
     * @var string
37
     */
38
    public const FIELD_PAYMENT_METHOD = 'paymentMethod';
39
40
    /**
41
     * @var string
42
     */
43
    public const FIELD_PAYONE_CREDENTIALS_MID = 'payone_mid';
44
45
    /**
46
     * @var string
47
     */
48
    public const FIELD_PAYONE_CREDENTIALS_AID = 'payone_aid';
49
50
    /**
51
     * @var string
52
     */
53
    public const FIELD_PAYONE_CREDENTIALS_PORTAL_ID = 'payone_portal_id';
54
55
    /**
56
     * @var string
57
     */
58
    public const FIELD_PAYONE_HASH = 'payone_hash';
59
60
    /**
61
     * @var string
62
     */
63
    public const FIELD_CLIENT_API_CONFIG = 'payone_client_api_config';
64
65
    /**
66
     * @var string
67
     */
68
    public const FIELD_CLIENT_LANG_CODE = 'payone_client_lang_code';
69
70
    /**
71
     * @return string
72
     */
73
    public function getProviderName(): string
74
    {
75
        return static::PAYMENT_PROVIDER;
76
    }
77
78
    /**
79
     * @return string
80
     */
81
    public function getTemplatePath(): string
82
    {
83
        return PayoneConstants::PROVIDER_NAME . '/' . static::PAYMENT_METHOD;
84
    }
85
86
    /**
87
     * @param \Symfony\Component\Form\FormBuilderInterface $builder
88
     *
89
     * @return $this
90
     */
91
    protected function addHiddenInputs(FormBuilderInterface $builder)
92
    {
93
        $formData = $this->getClient()->getCreditCardCheckRequest();
94
        $builder->add(
95
            static::FIELD_CLIENT_API_CONFIG,
96
            HiddenType::class,
97
            [
98
                'label' => false,
99
                'data' => $formData->toJson(),
100
            ],
101
        );
102
103
        return $this;
104
    }
105
106
    /**
107
     * @return \Symfony\Component\Validator\Constraint
108
     */
109
    protected function createNotBlankConstraint(): Constraint
110
    {
111
        return new NotBlank(['groups' => $this->getPropertyPath()]);
112
    }
113
114
    /**
115
     * @return \SprykerEco\Yves\Payone\Form\Constraint\BankAccount
116
     */
117
    protected function createBankAccountConstraint(): BankAccount
118
    {
119
        return new BankAccount([BankAccount::OPTION_PAYONE_CLIENT => $this->getClient()]);
120
    }
121
}
122