-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.php
More file actions
85 lines (67 loc) · 2.62 KB
/
App.php
File metadata and controls
85 lines (67 loc) · 2.62 KB
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
<?php
namespace App;
use \SpaceWeb\Quest\QuestAbstract;
class App extends QuestAbstract
{
private $_sourceOptions = [];
private $_dateStart;
private $_dateFinish;
public function setSourceOptions(array $sourceOptions)
{
$this->_sourceOptions = $sourceOptions;
}
private function _checkdate($date)
{
$dateParsed = date_parse_from_format('Y-m-d', $date);
if (!checkdate($dateParsed['month'], $dateParsed['day'], $dateParsed['year'])) {
return false;
}
return true;
}
public function setDateStart($date)
{
return $this->_checkdate($date) && ($this->_dateStart = $date);
}
public function setDateFinish($date)
{
return $this->_checkdate($date) && ($this->_dateFinish = $date);
}
public function getPayments()
{
$arrPayments = [];
foreach ($this->_sourceOptions as $sourceOption => $val) {
switch ($sourceOption) {
case 'with-documents': {
$sth = $this->getDb()->prepare('
SELECT COUNT(`payments`.`id`) AS `count`, SUM(`payments`.`amount`) AS `amount`
FROM `documents`
LEFT JOIN `payments` ON `payments`.`id` = `documents`.`entity_id`
WHERE `documents`.`id` IS NOT NULL
AND `payments`.`create_ts` >= :dateStart
AND `payments`.`finish_time` <= :dateFinish
');
$sth->execute([':dateStart' => $this->_dateStart, ':dateFinish' => $this->_dateFinish]);
array_push($arrPayments, $sth->fetch(\PDO::FETCH_ASSOC));
unset($sth);
break;
}
case 'without-documents': {
$sth = $this->getDb()->prepare('
SELECT COUNT(`payments`.`id`) AS `count`, SUM(`payments`.`amount`) AS `amount`
FROM `payments`
LEFT JOIN `documents` ON `documents`.`entity_id` = `payments`.`id`
WHERE `documents`.`entity_id` IS NULL
AND `payments`.`create_ts` >= :dateStart
AND `payments`.`finish_time` <= :dateFinish
');
$sth->execute([':dateStart' => $this->_dateStart, ':dateFinish' => $this->_dateFinish]);
array_push($arrPayments, $sth->fetch(\PDO::FETCH_ASSOC));
unset($sth);
break;
}
default: break;
}
}
return $arrPayments;
}
}