KycDocumentQuery   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 10

Importance

Changes 0
Metric Value
wmc 9
c 0
b 0
f 0
lcom 1
cbo 10
dl 0
loc 56
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 1
A create() 0 19 4
A submit() 0 5 1
A get() 0 13 3
1
<?php
2
/**
3
 * Created by Carl Owens ([email protected])
4
 * Company: PartFire Ltd (www.partfire.co.uk)
5
 * Copyright © 2016 PartFire Ltd. All rights reserved.
6
 *
7
 * User:    Carl Owens
8
 * Date:    02/12/2016
9
 * Time:    15:50
10
 * File:    KycDocumentQuery.php
11
 **/
12
13
namespace PartFire\MangoPayBundle\Models\Adapters;
14
15
use MangoPay\MangoPayApi;
16
use PartFire\MangoPayBundle\Models\DTOs\KycDocument;
17
use PartFire\MangoPayBundle\Models\DTOs\Translators\KycDocumentTranslator;
18
use PartFire\MangoPayBundle\Models\KycDocumentQueryInterface;
19
use Symfony\Bridge\Monolog\Logger;
20
use MangoPay\Libraries\ResponseException;
21
use MangoPay\Libraries\Exception;
22
use PartFire\MangoPayBundle\Models\Exception as PartFireException;
23
24
class KycDocumentQuery extends AbstractQuery implements KycDocumentQueryInterface
25
{
26
    protected $kycDocumentTranslator;
27
28
    public function __construct(
29
        $clientId,
30
        $clientPassword,
31
        $baseUrl,
32
        MangoPayApi $mangoPayApi,
33
        Logger $logger,
34
        KycDocumentTranslator $kycDocumentTranslator
35
    ) {
36
        $this->kycDocumentTranslator = $kycDocumentTranslator;
37
        parent::__construct($clientId, $clientPassword, $baseUrl, $mangoPayApi, $logger);
38
    }
39
40
    public function create(KycDocument $kycDocumentDto, $shouldSubmit = false)
41
    {
42
        $mangoKycDocument = $this->kycDocumentTranslator->convertDTOToMangoKycDocument($kycDocumentDto);
43
        try {
44
            $UserId = $kycDocumentDto->getOwnerId();
45
            if ($shouldSubmit) {
46
                $mangoKycDocument->Status = "VALIDATION_ASKED";
47
            }
48
            $mangoKycDocument = $this->mangoPayApi->Users->CreateKycDocument($UserId, $mangoKycDocument);
49
50
        } catch (ResponseException $e) {
51
            $this->logger->addCritical($e->getMessage(), ['code' => $e->getCode(), 'details' => $e->GetErrorDetails()]);
52
            throw new PartFireException($e->getMessage(), $e->getCode(), $e);
53
        } catch (Exception $e) {
54
            $this->logger->addError($e->getMessage());
55
            throw new PartFireException($e->getMessage(), $e->getCode(), $e);
56
        }
57
        return $this->kycDocumentTranslator->convertMangoPayKycDocumentToDTO($mangoKycDocument);
58
    }
59
60
    public function submit(KycDocument $kycDocumentDto)
61
    {
62
        $mangoKycDocument = $this->kycDocumentTranslator->convertDTOToMangoKycDocument($kycDocumentDto);
63
        return $this->mangoPayApi->Users->UpdateKycDocument($kycDocumentDto->getOwnerId(), $mangoKycDocument);
64
    }
65
66
    public function get(string $kycDocumentId) : KycDocument
67
    {
68
        try {
69
            $mangoKycDocument = $this->mangoPayApi->KycDocuments->Get($kycDocumentId);
70
        } catch (ResponseException $e) {
71
            $this->logger->addCritical($e->getMessage(), ['code' => $e->getCode(), 'details' => $e->GetErrorDetails()]);
72
            throw new PartFireException($e->getMessage(), $e->getCode(), $e);
73
        } catch (Exception $e) {
74
            $this->logger->addError($e->getMessage());
75
            throw new PartFireException($e->getMessage(), $e->getCode(), $e);
76
        }
77
        return $this->kycDocumentTranslator->convertMangoPayKycDocumentToDTO($mangoKycDocument);
78
    }
79
}
80