/**
  * Pay the rent of tenant's premises for a specified period
  * @param object $rentObj
  * @param string $start The start period of the month
  * @param string $end The end period of the month
  * @return boolean
  */
 public function payRent(Rent $rentObj, $start, $end)
 {
     $db = Database::getInstance();
     $mysqli = $db->getConnection();
     $monthly_rent = Room::findByTenantId($this->id)->getRent();
     $monthly_rent = $this->_sanitizeMoneyString($monthly_rent);
     $rent_paid = $rentObj->getPaymentAmount();
     $rent_paid = $this->_sanitizeMoneyString($rent_paid);
     if ($monthly_rent == $rent_paid) {
         // No outstanding arrears
         $pst = new PaymentStatus();
         $pst->setTenantId($this->id);
         $pst->setStartPeriod($start);
         $pst->setEndPeriod($end);
         $pst->setStatus(1);
         $mysqli->autocommit(false);
         $rentObj->save();
         $pst->save();
         if (!$mysqli->commit()) {
             $mysqli->rollback();
             $mysqli->autocommit(true);
             return false;
         } else {
             $mysqli->autocommit(true);
             return true;
         }
     } elseif ($rent_paid < $monthly_rent) {
         // Tenant has arrears
         $bal = $monthly_rent - $rent_paid;
         $arrears = new Arrears();
         $arrears->setTenantId($this->id);
         $arrears->setAmountOwed($bal);
         $arrears->setStartPeriod($start);
         $arrears->setEndPeriod($end);
         // Payment Status set to 0 - denoting incompletion
         $pst = new PaymentStatus();
         $pst->setTenantId($this->id);
         $pst->setStartPeriod($start);
         $pst->setEndPeriod($end);
         $pst->setStatus(0);
         // Save changes to database
         $mysqli->autocommit(false);
         $rentObj->save();
         $arrears->save();
         $pst->save();
         if (!$mysqli->commit()) {
             $mysqli->rollback();
             $mysqli->autocommit(true);
             return false;
         } else {
             $mysqli->autocommit(true);
             return true;
         }
     }
 }