-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbank.php
151 lines (131 loc) · 5.93 KB
/
bank.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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<?php
/*
* MIT Licence
* Copyright (c) 2023 Simon Frankenberger
*
* Please see LICENCE.md for complete licence text.
*/
require_once __DIR__ . '/../include/functions.inc.php';
require_once __DIR__ . '/../include/database.class.php';
ob_start();
requireLogin();
restrictSitter('Bank');
$art = getOrDefault($_POST, 'art', 0);
$betrag = getOrDefault($_POST, 'betrag', .0);
if ($betrag <= 0) {
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 110, __LINE__);
}
$data = Database::getInstance()->getPlayerNameAndBankAndMoneyAndGroupById($_SESSION['blm_user']);
if ($data === null) {
redirectTo('/?p=bank', 112, __LINE__);
}
$depositLimit = calculateDepositLimit($data['Gebaeude' . building_bank]);
$creditLimit = calculateCreditLimit($data['Gebaeude' . building_bank]);
switch ($art) {
// deposit money
case 1:
if ($betrag > $data['Geld'] || $data['Bank'] + $betrag > $depositLimit) {
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 110, __LINE__);
}
Database::getInstance()->begin();
if (Database::getInstance()->updateTableEntryCalculate(Database::TABLE_USERS, $_SESSION['blm_user'], array(
'Geld' => -$betrag,
'Bank' => +$betrag
), array(
'Geld >= :whr0' => $betrag
)) == 0) {
Database::getInstance()->rollBack();
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 142, __LINE__);
}
if (Database::getInstance()->createTableEntry(Database::TABLE_LOG_BANK, array(
'playerId' => $_SESSION['blm_user'],
'playerName' => $data['Name'],
'amount' => $betrag,
'target' => 'BANK'
)) == 0) {
Database::getInstance()->rollBack();
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 141, __LINE__);
}
Database::getInstance()->commit();
redirectTo('/?p=bank', 207);
break;
// withdraw money
case 2:
if ($data['Bank'] - $betrag < $creditLimit) {
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 109, __LINE__);
}
Database::getInstance()->begin();
if (Database::getInstance()->updateTableEntryCalculate(Database::TABLE_USERS, $_SESSION['blm_user'], array(
'Geld' => +$betrag,
'Bank' => -$betrag
), array(
'Bank - ' . $betrag . ' >= :whr0' => $creditLimit
)) == 0) {
Database::getInstance()->rollBack();
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 142, __LINE__);
}
if (Database::getInstance()->createTableEntry(Database::TABLE_LOG_BANK, array(
'playerId' => $_SESSION['blm_user'],
'playerName' => $data['Name'],
'amount' => $betrag,
'target' => 'HAND'
)) == 0) {
Database::getInstance()->rollBack();
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 141, __LINE__);
}
Database::getInstance()->commit();
redirectTo('/?p=bank', 207);
break;
// deposit group account
case 3:
$group = Database::getInstance()->getGroupIdAndNameById($data['Gruppe']);
requireEntryFound($group, sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), __LINE__);
if ($betrag > $data['Geld']) {
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 110, __LINE__);
}
if ($data['Gruppe'] === null) {
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 112, __LINE__);
}
Database::getInstance()->begin();
if (Database::getInstance()->updateTableEntryCalculate(Database::TABLE_USERS, $_SESSION['blm_user'],
array('Geld' => -$betrag,), array('Geld >= :whr0' => $betrag)) !== 1) {
Database::getInstance()->rollBack();
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 142, __LINE__);
}
if (Database::getInstance()->updateTableEntryCalculate(Database::TABLE_GROUP_CASH, null,
array('amount' => +$betrag), array('user_id = :whr0' => $_SESSION['blm_user'], 'group_id = :whr1' => $data['Gruppe'])) !== 1) {
Database::getInstance()->rollBack();
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 142, __LINE__);
}
if (Database::getInstance()->updateTableEntryCalculate(Database::TABLE_GROUP, $data['Gruppe'], array('Kasse' => +$betrag)) !== 1) {
Database::getInstance()->rollBack();
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 142, __LINE__);
}
if (Database::getInstance()->createTableEntry(Database::TABLE_GROUP_LOG, array(
'Gruppe' => $data['Gruppe'],
'Spieler' => $_SESSION['blm_user'],
'Text' => createBBProfileLink($_SESSION['blm_user'], $data['Name'])
. ' hat ' . formatCurrency($betrag)
. ' in die Gruppenkasse eingezahlt.'
)) !== 1) {
Database::getInstance()->rollBack();
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 141, __LINE__);
}
if (Database::getInstance()->createTableEntry(Database::TABLE_LOG_GROUP_CASH, array(
'senderId' => $_SESSION['blm_user'],
'senderName' => $data['Name'],
'groupId' => $group['ID'],
'groupName' => $group['Name'],
'amount' => $betrag
)) !== 1) {
Database::getInstance()->rollBack();
redirectTo(sprintf('/?p=bank&art=%d&betrag=%f', $art, $betrag), 141, __LINE__);
}
Database::getInstance()->commit();
redirectTo('/?p=bank', 235);
break;
// unknown action
default:
redirectTo('/?p=bank', 112, __LINE__);
break;
}