Completed
Push — master ( 05297f...b8a6a6 )
by Vragov
03:04
created

CalculateApi   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 1
lcom 0
cbo 3
dl 0
loc 30
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A calculate() 0 23 1
1
<?php
2
3
namespace SafeCrow\Api;
4
5
use SafeCrow\DataTransformer\CalculateDataTransformer;
6
use SafeCrow\Model\Calculate;
7
use SafeCrow\Model\Order;
8
use Symfony\Component\OptionsResolver\OptionsResolver;
9
10
/**
11
 * Class CalculateApi
12
 * @package SafeCrow\Api
13
 */
14
class CalculateApi extends AbstractApi
15
{
16
    /**
17
     * @param array $params
18
     * @return Calculate
19
     */
20
    public function calculate(array $params): Calculate
21
    {
22
        $resolver = new OptionsResolver();
23
        $resolver
24
            ->setRequired([
25
                'price',
26
                'service_cost_payer',
27
                'consumer_cancellation_cost',
28
            ])
29
            ->setDefaults([
30
                'consumer_cancellation_cost' => null,
31
            ])
32
            ->setAllowedTypes('price', 'int')
33
            ->setAllowedTypes('service_cost_payer', 'string')
34
            ->setAllowedTypes('consumer_cancellation_cost', ['int', 'null'])
35
            ->setAllowedValues('service_cost_payer', [Order::PAYER_HALF, Order::PAYER_CONSUMER, Order::PAYER_SUPPLIER]);
36
37
        $params = $resolver->resolve($params);
38
39
        $response = $this->post('/calculate', $params);
40
41
        return $this->getResult($response, new CalculateDataTransformer());
42
    }
43
}
44