-
Notifications
You must be signed in to change notification settings - Fork 0
/
Operation.php
127 lines (106 loc) · 4.14 KB
/
Operation.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
<?php
require_once("OperationModel.php");
require_once("OperationDbModel.php");
class Operation
{
// POST -- /operations/create
public function CreateOperation($paramsArray)
{
$userID = $paramsArray[0];
$data = json_decode(file_get_contents('php://input'), true);
$operation = new OperationModel($userID, $data);
return OperationDbModel::AddOperation($operation);
}
// GET -- /operations/history/:skip
public function history($paramsArray)
{
$userID = $paramsArray[0];
$skip = (int)$paramsArray[1];
$history = OperationDbModel::GetOperations($userID, $skip);
return $history;
}
// GET -- /operations/historyWithFilters/:skip/:amountFrom/:amountTo/:description/:dateSince/:dateTo/:type
public function historyWithFilters($paramsArray)
{
return OperationDbModel::GetOperationsWithFilters($paramsArray);
}
// GET -- /operations/details/:id
public function details($paramsArray)
{
$userID = $paramsArray[0];
$id = (int)$paramsArray[1];
return OperationDbModel::FindOperationById($id, $userID);
}
// DELETE -- /operations/delete/:id
public function delete($paramsArray)
{
$userID = $paramsArray[0];
$id = $paramsArray[1];
return OperationDbModel::DeleteOperationById($id, $userID);
}
// PUT -- /operations/update
public function update($paramsArray)
{
$data = json_decode(file_get_contents('php://input'), true);
$operation = new OperationModel($paramsArray[0], $data);
$oldOperation = OperationDbModel::FindOperationById($operation->id, $paramsArray[0]);
$oldOperation['description'] = $operation->description;
$oldOperation['date'] = $operation->date;
$oldOperation['createDate'] = $operation->createDate;
$oldOperation['amount'] = $operation->amount;
$oldOperation['income'] = $operation->income;
return OperationDbModel::UpdateOperation($oldOperation);
}
// GET -- /operations/cycles/:skip
public function cycles($paramsArray)
{
$userID = $paramsArray[0];
$skip = (int)$paramsArray[1];
$history = OperationDbModel::GetCycles($userID, $skip);
return $history;
}
// GET -- /operations/cycle/:id
public function cycle($paramsArray)
{
$userID = $paramsArray[0];
$cycleId = (int)$paramsArray[1];
$history = OperationDbModel::GetCycleOperations($userID, $cycleId);
return $history;
}
// GET -- /operations/summary
public function summary($paramsArray)
{
$userId = $paramsArray[0];
$history = OperationDbModel::GetAllOperations($userId);
$currentMonthBillsHistory = OperationDbModel::GetMonthOperations($userId, date('Y-m-d'), FALSE);
$currentMonthIncomeHistory = OperationDbModel::GetMonthOperations($userId, date('Y-m-d'), TRUE);
$lastMonth = new DateTime("last day of last month");
$lastMonthBillsHistory = OperationDbModel::GetMonthOperations($userId, $lastMonth->format('Y-m-d'), FALSE);
$lastMonthIncomeHistory = OperationDbModel::GetMonthOperations($userId, $lastMonth->format('Y-m-d'), TRUE);
$keys = array('amount', 'bills', 'income', 'lastMonthBills', 'lastMonthIncome',);
$values = array(
$this->calculateAmount($history, TRUE),
$this->calculateAmount($currentMonthBillsHistory, FALSE),
$this->calculateAmount($currentMonthIncomeHistory, FALSE),
$this->calculateAmount($lastMonthBillsHistory, FALSE),
$this->calculateAmount($lastMonthIncomeHistory, FALSE)
);
return array_combine($keys, $values);
}
private function calculateAmount($history, $checkIncome)
{
$amount = 0;
foreach ($history as &$value) {
if (!$checkIncome) {
$amount += $value['amount'];
} else {
if ($value['income'] == '1') {
$amount += $value['amount'];
} else {
$amount -= $value['amount'];
}
}
}
return $amount;
}
}