Added a function to get the latest loan extension.

Broke receipt queueing into a function.
Changed $this->id to $this->get_id() for the sake of consistency.
This commit is contained in:
Erik Thuning 2022-07-27 11:04:09 +02:00
parent b967c7dde2
commit 4e9e5b93af

@ -13,19 +13,7 @@ class Loan extends Event {
bind($insert, 'iii', $event_id, $user->get_id(), strtotime($endtime));
execute($insert);
$loan = new Loan($event_id);
$now = time();
$pending = prepare('select * from `pending_receipt` where `user` = ?
and `since_time` < ? and `send_time` > ?');
bind($pending, 'iii', $user->get_id(), $now, $now);
execute($pending);
if(result_single($pending) === null) {
$add = prepare('insert into `pending_receipt`
(`user`, `since_time`, `send_time`)
values(?, ?, ?)');
bind($add, 'iii', $user->get_id(), $now, $now + 3600);
execute($add);
}
$loan->queue_receipt($user);
commit_trans();
return $loan;
}
@ -45,13 +33,28 @@ class Loan extends Event {
protected function update_fields() {
parent::update_fields();
$get = prepare('select * from `loan` where `event`=?');
bind($get, 'i', $this->id);
bind($get, 'i', $this->get_id());
execute($get);
$loan = result_single($get);
$this->user = $loan['user'];
$this->endtime = $loan['endtime'];
}
protected function queue_receipt($user) {
$now = time();
$pending = prepare('select * from `pending_receipt` where `user` = ?
and `since_time` < ? and `send_time` > ?');
bind($pending, 'iii', $user->get_id(), $now, $now);
execute($pending);
if(result_single($pending) === null) {
$add = prepare('insert into `pending_receipt`
(`user`, `since_time`, `send_time`)
values(?, ?, ?)');
bind($add, 'iii', $user->get_id(), $now, $now + 3600);
execute($add);
}
}
public function get_user() {
return new User($this->user);
}
@ -61,18 +64,40 @@ class Loan extends Event {
}
public function extend($time) {
$oldend = $this->get_endtime();
$now = time();
$ts = strtotime($time . ' 13:00');
$query = prepare('update `loan` set `endtime`=? where `event`=?');
bind($query, 'ii', $ts, $this->id);
execute($query);
begin_trans();
$extend = prepare('update `loan` set `endtime`=? where `event`=?');
bind($extend, 'ii', $ts, $this->get_id());
execute($extend);
$log = prepare('insert into `loan_extension`
(`loan`, `extend_time`, `old_end`, `new_end`)
values (?, ?, ?, ?)');
bind($log, 'iiii', $this->get_id(), $now, $oldend, $ts);
execute($log);
$this->queue_receipt($this->get_user());
$this->endtime = $ts;
commit_trans();
return true;
}
public function get_last_extension() {
$select = prepare('select max(`extend_time`) as `extend_time`
from `loan_extension` where `loan`=?');
bind($select, 'i', $this->get_id());
execute($select);
return result_single($select)['max(`extend_time`)'];
}
public function end() {
$now = time();
$query = prepare('update `event` set `returntime`=? where `id`=?');
bind($query, 'ii', $now, $this->id);
bind($query, 'ii', $now, $this->get_id());
execute($query);
$this->returntime = $now;
return true;