Trial   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 128
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 33
c 1
b 0
f 0
dl 0
loc 128
rs 10
wmc 14

11 Methods

Rating   Name   Duplication   Size   Complexity  
A frequency() 0 9 2
A getCycles() 0 3 1
A __construct() 0 3 1
A setAmount() 0 4 1
A amount() 0 9 2
A getFrequency() 0 3 1
A getAmount() 0 3 1
A setFrequency() 0 4 1
A schema() 0 7 1
A setCycles() 0 4 1
A cycles() 0 9 2
1
<?php
2
3
namespace Ipag\Sdk\Model;
4
5
use Ipag\Sdk\Model\Schema\Mutator;
6
use Ipag\Sdk\Model\Schema\Schema;
7
use Ipag\Sdk\Model\Schema\SchemaBuilder;
8
use Kubinyete\Assertation\Assert;
9
10
/**
11
 * Trial Class
12
 *
13
 * Classe responsável por representar o recurso Trial.
14
 */
15
class Trial extends Model
16
{
17
    /**
18
     *  @param array $data
19
     *  array de dados do Trial.
20
     *
21
     *  + [`'amount'`] float (opcional).
22
     *  + [`'cycles'`] int (opcional).
23
     *  + [`'frequency'`] int (opcional).
24
     */
25
    public function __construct(?array $data = [])
26
    {
27
        parent::__construct($data);
28
    }
29
30
    protected function schema(SchemaBuilder $schema): Schema
31
    {
32
        $schema->float('amount')->nullable();
33
        $schema->int('cycles')->nullable();
34
        $schema->int('frequency')->nullable();
35
36
        return $schema->build();
37
    }
38
39
    protected function amount(): Mutator
40
    {
41
        return new Mutator(
42
            null,
43
            fn($value, $ctx) =>
44
            is_null($value) ? $value :
45
            (
46
                Assert::value(floatval($value))->gte(0)->get()
47
                ?? $ctx->raise('inválido')
48
            )
49
        );
50
    }
51
52
    protected function cycles(): Mutator
53
    {
54
        return new Mutator(
55
            null,
56
            fn($value, $ctx) =>
57
            is_null($value) ? $value :
58
            (
59
                Assert::value(intval($value))->gte(0)->get()
60
                ?? $ctx->raise('inválido (informe um valor de 0 à 120)')
61
            )
62
        );
63
    }
64
65
    protected function frequency(): Mutator
66
    {
67
        return new Mutator(
68
            null,
69
            fn($value, $ctx) =>
70
            is_null($value) ? $value :
71
            (
72
                Assert::value(intval($value))->gt(0)->get()
73
                ?? $ctx->raise('inválido (informe um valor de 1 à 12)')
74
            )
75
        );
76
    }
77
78
    /**
79
     * Retorna o valor da propriedade amount.
80
     *
81
     * @param float|null $amount
82
     * @return Trial
83
     */
84
    public function getAmount(): ?float
85
    {
86
        return $this->get('amount');
87
    }
88
89
    /**
90
     * Seta o valor da propriedade amount.
91
     *
92
     * @param float|null $amount
93
     * @return Trial
94
     */
95
    public function setAmount(?float $amount = null): Trial
96
    {
97
        $this->set('amount', $amount);
98
        return $this;
99
    }
100
101
    /**
102
     * Retorna o valor da propriedade cycles.
103
     *
104
     * @return int|null
105
     */
106
    public function getCycles(): ?int
107
    {
108
        return $this->get('cycles');
109
    }
110
111
    /**
112
     * Seta o valor da propriedade cycles.
113
     *
114
     * @param int|null $cycles
115
     * @return Trial
116
     */
117
    public function setCycles(?int $cycles): Trial
118
    {
119
        $this->set('cycles', $cycles);
120
        return $this;
121
    }
122
123
    /**
124
     * Retorna o valor da propriedade frequency.
125
     *
126
     * @return integer|null
127
     */
128
    public function getFrequency(): ?int
129
    {
130
        return $this->get('frequency');
131
    }
132
133
    /**
134
     * Seta o valor da propriedade frequency.
135
     *
136
     * @param integer|null $frequency
137
     * @return Trial
138
     */
139
    public function setFrequency(?int $frequency = null): Trial
140
    {
141
        $this->set('frequency', $frequency);
142
        return $this;
143
    }
144
145
}