From 4e9e5b93af0bac7343e37854402112dfef8c0fe4 Mon Sep 17 00:00:00 2001 From: Erik Thuning <boooink@gmail.com> Date: Wed, 27 Jul 2022 11:04:09 +0200 Subject: [PATCH] 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. --- include/Loan.php | 61 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/include/Loan.php b/include/Loan.php index cb7f0ae..2640d73 100644 --- a/include/Loan.php +++ b/include/Loan.php @@ -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;