-
Notifications
You must be signed in to change notification settings - Fork 1
/
BillingGateway.php
executable file
·128 lines (112 loc) · 3.5 KB
/
BillingGateway.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
namespace Vespolina\Billing\Gateway;
use Molino\MolinoInterface;
use Molino\SelectQueryInterface;
use Vespolina\Entity\Billing\BillingAgreementInterface;
use Vespolina\Exception\InvalidInterfaceException;
use Vespolina\Entity\Billing\BillingRequestInterface;
class BillingGateway implements BillingGatewayInterface
{
protected $molino;
protected $billingAgreementClass;
/**
* @param \Molino\MolinoInterface $molino
* @param string $managedClass
*/
public function __construct(MolinoInterface $molino, $billingAgreementClass)
{
if (!class_exists($billingAgreementClass) ||
!in_array('Vespolina\Entity\Billing\BillingAgreementInterface', class_implements($billingAgreementClass))) {
throw new InvalidInterfaceException('Please have your BillingAgreement class implement Vespolina\Entity\Billing\BillingAgreementInterface');
}
$this->molino = $molino;
$this->billingAgreementClass = $billingAgreementClass;
}
/**
* @inheritdoc
*/
public function createQuery($type, $queryClass = null)
{
$type = ucfirst(strtolower($type));
if (!in_array($type, array('Delete', 'Select', 'Update'))) {
throw new InvalidArgumentException($type . ' is not a valid Query type');
}
$queryFunction = 'create' . $type . 'Query';
if (!$queryClass) {
$queryClass = $this->billingAgreementClass;
}
return $this->molino->$queryFunction($queryClass);
}
/**
* @inheritdoc
*/
public function deleteBillingAgreement(BillingAgreementInterface $billingAgreement)
{
$this->molino->delete($billingAgreement);
}
/**
* @inheritdoc
*/
public function findBillingAgreement(SelectQueryInterface $query)
{
return $query->one();
}
/**
* @inheritdoc
*/
public function findBillingAgreements(SelectQueryInterface $query)
{
return $query->all();
}
/**
* @inheritdoc
*/
public function persistBillingAgreement(BillingAgreementInterface $billingAgreement)
{
$this->molino->save($billingAgreement);
}
/**
* @inheritdoc
*/
public function updateBillingAgreement(BillingAgreementInterface $billingAgreement)
{
$this->molino->save($billingAgreement);
}
/**
* @param \Vespolina\Entity\Billing\BillingRequestInterface $billingRequest
*/
public function deleteBillingRequest(BillingRequestInterface $billingRequest)
{
$this->molino->delete($billingRequest);
}
/**
* @param \Molino\SelectQueryInterface $query
* @return \Vespolina\Entity\Billing\BillingRequestInterface
*/
public function findBillingRequest(SelectQueryInterface $query)
{
return $query->one();
}
/**
* @param \Molino\SelectQueryInterface $query
* @return \Vespolina\Entity\Billing\BillingRequestInterface
*/
public function findBillingRequests(SelectQueryInterface $query)
{
return $query->all();
}
/**
* @param \Vespolina\Entity\Billing\BillingRequestInterface $billingRequest
*/
public function persistBillingRequest(BillingRequestInterface $billingRequest)
{
$this->molino->save($billingRequest);
}
/**
* @param \Vespolina\Entity\Billing\BillingRequestInterface $billingRequest
*/
public function updateBillingRequest(BillingRequestInterface $billingRequest)
{
$this->molino->save($billingRequest);
}
}