diff --git a/appinfo/info.xml b/appinfo/info.xml
index 35155981..8e13dca9 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -3,7 +3,7 @@
cospend
Cospend
- 3.0.0
+ 3.0.1
agpl
Julien Veyssier
Cospend
diff --git a/lib/Command/DeleteBills.php b/lib/Command/DeleteBills.php
index e3e40cbb..c635ee9a 100644
--- a/lib/Command/DeleteBills.php
+++ b/lib/Command/DeleteBills.php
@@ -68,7 +68,7 @@ class DeleteBills extends Base {
foreach ($billsToDelete as $bill) {
$ts = $bill->getTimestamp();
$date = (new DateTime())->setTimestamp($ts)->format('c');
- $output->writeln('DELETE [' . $bill->getId() . '] ' . $bill->getWhat() . ' ; ' . $bill->getAmount() . ' ; ' . $date . ' ; ' . $bill->getPayerid());
+ $output->writeln('DELETE [' . $bill->getId() . '] ' . $bill->getWhat() . ' ; ' . $bill->getAmount() . ' ; ' . $date . ' ; ' . $bill->getPayerId());
}
if ($input->getOption('simulate')) {
diff --git a/lib/Db/Bill.php b/lib/Db/Bill.php
index 0dc52c1c..38838a5a 100644
--- a/lib/Db/Bill.php
+++ b/lib/Db/Bill.php
@@ -20,66 +20,66 @@ use OCP\AppFramework\Db\Entity;
* @method void setWhat(string $what)
* @method string|null getComment()
* @method void setComment(string|null $comment)
- * @method int getPayerid()
- * @method void setPayerid(int $payerid)
+ * @method int getPayerId()
+ * @method void setPayerId(int $payerId)
* @method float getAmount()
* @method void setAmount(float $amount)
* @method int getTimestamp()
* @method void setTimestamp(int $timestamp)
* @method string getRepeat()
* @method void setRepeat(string $repeat)
- * @method int getRepeatallactive()
- * @method void setRepeatallactive(int $repeatallactive)
- * @method string getRepeatuntil()
- * @method void setRepeatuntil(string $repeatuntil)
- * @method int getRepeatfreq()
- * @method void setRepeatfreq(int $repeatfreq)
- * @method string getProjectid()
- * @method void setProjectid(string $projectid)
- * @method int getCategoryid()
- * @method void setCategoryid(int $categoryid)
- * @method string getPaymentmode()
- * @method void setPaymentmode(string $paymentmode)
- * @method int getPaymentmodeid()
- * @method void setPaymentmodeid(int $paymentmodeid)
- * @method int getLastchanged()
- * @method void setLastchanged(int $lastchanged)
+ * @method int getRepeatAllActive()
+ * @method void setRepeatAllActive(int $repeatAllActive)
+ * @method string|null getRepeatUntil()
+ * @method void setRepeatUntil(string|null $repeatUntil)
+ * @method int getRepeatFrequency()
+ * @method void setRepeatFrequency(int $repeatFrequency)
+ * @method string getProjectId()
+ * @method void setProjectId(string $projectId)
+ * @method int|null getCategoryId()
+ * @method void setCategoryId(int|null $categoryId)
+ * @method string|null getPaymentMode()
+ * @method void setPaymentMode(string|null $paymentMode)
+ * @method int|null getPaymentModeId()
+ * @method void setPaymentModeId(int|null $paymentModeId)
+ * @method int getLastChanged()
+ * @method void setLastChanged(int $lastChanged)
* @method int getDeleted()
* @method void setDeleted(int $deleted) */
class Bill extends Entity implements \JsonSerializable {
- protected $what;
- protected $comment;
- protected $payerid;
- protected $amount;
- protected $timestamp;
- protected $repeat;
- protected $repeatallactive;
- protected $repeatuntil;
- protected $repeatfreq;
- protected $projectid;
- protected $categoryid;
- protected $paymentmode;
- protected $paymentmodeid;
- protected $lastchanged;
- protected $deleted;
+ protected string $what = '';
+ protected ?string $comment = null;
+ protected int $payerId = 0;
+ protected float $amount = 0;
+ protected int $timestamp = 0;
+ protected string $repeat = 'n';
+ protected int $repeatAllActive = 0;
+ protected ?string $repeatUntil = null;
+ protected int $repeatFrequency = 1;
+ protected string $projectId = '';
+ protected ?int $categoryId = null;
+ protected ?string $paymentMode = null;
+ protected ?int $paymentModeId = 0;
+ protected int $lastChanged = 0;
+ protected int $deleted = 0;
public function __construct() {
$this->addType('id', 'integer');
$this->addType('what', 'string');
$this->addType('comment', 'string');
- $this->addType('payerid', 'integer');
+ $this->addType('payer_id', 'integer');
$this->addType('timestamp', 'integer');
$this->addType('amount', 'float');
$this->addType('repeat', 'string');
- $this->addType('repeatallactive', 'integer');
- $this->addType('repeatuntil', 'string');
- $this->addType('repeatfreq', 'integer');
- $this->addType('projectid', 'string');
- $this->addType('categoryid', 'integer');
- $this->addType('paymentmode', 'string');
- $this->addType('paymentmodeid', 'integer');
- $this->addType('lastchanged', 'integer');
+ $this->addType('repeat_all_active', 'integer');
+ $this->addType('repeat_until', 'string');
+ $this->addType('repeat_frequency', 'integer');
+ $this->addType('project_id', 'string');
+ $this->addType('category_id', 'integer');
+ $this->addType('payment_mode', 'string');
+ $this->addType('payment_mode_id', 'integer');
+ $this->addType('last_changed', 'integer');
$this->addType('deleted', 'integer');
}
@@ -87,21 +87,22 @@ class Bill extends Entity implements \JsonSerializable {
public function jsonSerialize() {
return [
'id' => $this->getId(),
- 'projectid' => $this->getProjectid(),
+ 'projectid' => $this->getProjectId(),
'what' => $this->getWhat(),
'comment' => $this->getComment() ?? '',
- 'payer_id' => $this->getPayerid(),
+ 'payer_id' => $this->getPayerId(),
'timestamp' => $this->getTimestamp(),
'date' => DateTime::createFromFormat('U', (string)$this->getTimestamp())->format('Y-m-d'),
'amount' => $this->getAmount(),
'repeat' => $this->getRepeat(),
- 'repeatallactive' => $this->getRepeatallactive(),
- 'repeatuntil' => $this->getRepeatuntil(),
- 'repeatfreq' => $this->getRepeatfreq(),
- 'categoryid' => $this->getCategoryid(),
- 'paymentmode' => $this->getPaymentmode(),
- 'paymentmodeid' => $this->getPaymentmodeid(),
+ 'repeatallactive' => $this->getRepeatAllActive(),
+ 'repeatuntil' => $this->getRepeatUntil(),
+ 'repeatfreq' => $this->getRepeatFrequency(),
+ 'categoryid' => $this->getCategoryId(),
+ 'paymentmode' => $this->getPaymentMode(),
+ 'paymentmodeid' => $this->getPaymentModeId(),
'deleted' => $this->getDeleted(),
+ 'lastchanged' => $this->getLastChanged(),
];
}
}
diff --git a/lib/Db/BillMapper.php b/lib/Db/BillMapper.php
index 1f124154..b024f15a 100644
--- a/lib/Db/BillMapper.php
+++ b/lib/Db/BillMapper.php
@@ -25,10 +25,9 @@ use OCP\IDBConnection;
* @extends QBMapper
*/
class BillMapper extends QBMapper {
- public const TABLE_NAME = 'cospend_bills';
public function __construct(IDBConnection $db) {
- parent::__construct($db, self::TABLE_NAME, Bill::class);
+ parent::__construct($db, 'cospend_bills', Bill::class);
}
/**
@@ -52,22 +51,6 @@ class BillMapper extends QBMapper {
return $this->mapRowToEntity($row);
}
- public function findProjectId(int $id): string {
- $qb = $this->db->getQueryBuilder();
- $qb->select('projectid')
- ->from($this->getTableName())
- ->where($qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT)));
- $result = $qb->executeQuery();
- $row = $result->fetch();
- $result->closeCursor();
-
- if ($row === false) {
- throw new Exception('Bill ' . $id . ' not found');
- }
-
- return $row['projectid'];
- }
-
/**
* Delete bill owers of given bill
*
@@ -93,7 +76,7 @@ class BillMapper extends QBMapper {
$qb2->select('id')
->from($this->getTableName())
->where(
- $qb2->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb2->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
)
->andWhere(
$qb->expr()->eq('deleted', $qb->createNamedParameter(1, IQueryBuilder::PARAM_INT))
@@ -109,7 +92,7 @@ class BillMapper extends QBMapper {
$qb = $this->db->getQueryBuilder();
$qb->delete($this->getTableName())
->where(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
)
->andWhere(
$qb->expr()->eq('deleted', $qb->createNamedParameter(1, IQueryBuilder::PARAM_INT))
@@ -132,7 +115,7 @@ class BillMapper extends QBMapper {
$qb2->select('id')
->from($this->getTableName())
->where(
- $qb2->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb2->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
if ($what !== null) {
$qb2->andWhere(
@@ -156,7 +139,7 @@ class BillMapper extends QBMapper {
// delete the bills
$qb->delete($this->getTableName())
->where(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
if ($what !== null) {
$qb->andWhere(
@@ -187,7 +170,7 @@ class BillMapper extends QBMapper {
$qb->update($this->getTableName())
->set('deleted', $qb->createNamedParameter(1, IQueryBuilder::PARAM_INT))
->where(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
if ($what !== null) {
$qb->andWhere(
@@ -218,7 +201,7 @@ class BillMapper extends QBMapper {
$qb->select('*')
->from($this->getTableName())
->where(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
if ($what !== null) {
$qb->andWhere(
@@ -247,7 +230,7 @@ class BillMapper extends QBMapper {
$qb->expr()->eq('id', $qb->createNamedParameter($billId, IQueryBuilder::PARAM_INT))
)
->andWhere(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
try {
@@ -357,24 +340,24 @@ class BillMapper extends QBMapper {
bool $reverse = false, ?int $payerId = null, ?int $deleted = 0
): array {
$qb = $this->db->getQueryBuilder();
- $qb->select('bi.id', 'what', 'comment', 'timestamp', 'amount', 'payerid', 'repeat',
- 'paymentmode', 'paymentmodeid', 'categoryid', 'bi.lastchanged', 'repeatallactive', 'repeatuntil', 'repeatfreq',
+ $qb->select('bi.id', 'what', 'comment', 'timestamp', 'amount', 'payer_id', 'repeat',
+ 'payment_mode', 'payment_mode_id', 'category_id', 'bi.last_changed', 'repeat_all_active', 'repeat_until', 'repeat_frequency',
'deleted', 'memberid', 'm.name', 'm.weight', 'm.activated')
->from('cospend_bill_owers', 'bo')
->innerJoin('bo', 'cospend_bills', 'bi', $qb->expr()->eq('bo.billid', 'bi.id'))
->innerJoin('bo', 'cospend_members', 'm', $qb->expr()->eq('bo.memberid', 'm.id'))
->where(
- $qb->expr()->eq('bi.projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('bi.project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
// take bills that have changed after $lastchanged
if ($lastchanged !== null) {
$qb->andWhere(
- $qb->expr()->gt('bi.lastchanged', $qb->createNamedParameter($lastchanged, IQueryBuilder::PARAM_INT))
+ $qb->expr()->gt('bi.last_changed', $qb->createNamedParameter($lastchanged, IQueryBuilder::PARAM_INT))
);
}
if ($payerId !== null) {
$qb->andWhere(
- $qb->expr()->eq('bi.payerid', $qb->createNamedParameter($payerId, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('bi.payer_id', $qb->createNamedParameter($payerId, IQueryBuilder::PARAM_INT))
);
}
if ($tsMin !== null) {
@@ -394,22 +377,22 @@ class BillMapper extends QBMapper {
}
if ($paymentMode !== null && $paymentMode !== '' && $paymentMode !== 'n') {
$qb->andWhere(
- $qb->expr()->eq('paymentmode', $qb->createNamedParameter($paymentMode, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('payment_mode', $qb->createNamedParameter($paymentMode, IQueryBuilder::PARAM_STR))
);
} elseif (!is_null($paymentModeId)) {
$qb->andWhere(
- $qb->expr()->eq('paymentmodeid', $qb->createNamedParameter($paymentModeId, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('payment_mode_id', $qb->createNamedParameter($paymentModeId, IQueryBuilder::PARAM_INT))
);
}
if ($category !== null) {
if ($category === -100) {
$or = $qb->expr()->orx();
- $or->add($qb->expr()->isNull('categoryid'));
- $or->add($qb->expr()->neq('categoryid', $qb->createNamedParameter(Application::CATEGORY_REIMBURSEMENT, IQueryBuilder::PARAM_INT)));
+ $or->add($qb->expr()->isNull('category_id'));
+ $or->add($qb->expr()->neq('category_id', $qb->createNamedParameter(Application::CATEGORY_REIMBURSEMENT, IQueryBuilder::PARAM_INT)));
$qb->andWhere($or);
} else {
$qb->andWhere(
- $qb->expr()->eq('categoryid', $qb->createNamedParameter($category, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('category_id', $qb->createNamedParameter($category, IQueryBuilder::PARAM_INT))
);
}
}
@@ -502,17 +485,17 @@ class BillMapper extends QBMapper {
$qb->select('*')
->from($this->getTableName(), 'bi')
->where(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
// take bills that have changed after $lastchanged
if ($lastchanged !== null) {
$qb->andWhere(
- $qb->expr()->gt('lastchanged', $qb->createNamedParameter($lastchanged, IQueryBuilder::PARAM_INT))
+ $qb->expr()->gt('last_changed', $qb->createNamedParameter($lastchanged, IQueryBuilder::PARAM_INT))
);
}
if ($payerId !== null) {
$qb->andWhere(
- $qb->expr()->eq('payerid', $qb->createNamedParameter($payerId, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('payer_id', $qb->createNamedParameter($payerId, IQueryBuilder::PARAM_INT))
);
}
if ($tsMin !== null) {
@@ -532,22 +515,22 @@ class BillMapper extends QBMapper {
}
if ($paymentMode !== null && $paymentMode !== '' && $paymentMode !== 'n') {
$qb->andWhere(
- $qb->expr()->eq('paymentmode', $qb->createNamedParameter($paymentMode, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('payment_mode', $qb->createNamedParameter($paymentMode, IQueryBuilder::PARAM_STR))
);
} elseif (!is_null($paymentModeId)) {
$qb->andWhere(
- $qb->expr()->eq('paymentmodeid', $qb->createNamedParameter($paymentModeId, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('payment_mode_id', $qb->createNamedParameter($paymentModeId, IQueryBuilder::PARAM_INT))
);
}
if ($category !== null) {
if ($category === -100) {
$or = $qb->expr()->orx();
- $or->add($qb->expr()->isNull('categoryid'));
- $or->add($qb->expr()->neq('categoryid', $qb->createNamedParameter(Application::CATEGORY_REIMBURSEMENT, IQueryBuilder::PARAM_INT)));
+ $or->add($qb->expr()->isNull('category_id'));
+ $or->add($qb->expr()->neq('category_id', $qb->createNamedParameter(Application::CATEGORY_REIMBURSEMENT, IQueryBuilder::PARAM_INT)));
$qb->andWhere($or);
} else {
$qb->andWhere(
- $qb->expr()->eq('categoryid', $qb->createNamedParameter($category, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('category_id', $qb->createNamedParameter($category, IQueryBuilder::PARAM_INT))
);
}
}
@@ -657,14 +640,14 @@ class BillMapper extends QBMapper {
$dbTimestamp = (int) $row['timestamp'];
$dbDate = DateTime::createFromFormat('U', $row['timestamp']);
$dbRepeat = $row['repeat'];
- $dbPayerId = (int) $row['payerid'];
- $dbPaymentMode = $row['paymentmode'];
- $dbPaymentModeId = (int) $row['paymentmodeid'];
- $dbCategoryId = (int) $row['categoryid'];
- $dbLastchanged = (int) $row['lastchanged'];
- $dbRepeatAllActive = (int) $row['repeatallactive'];
- $dbRepeatUntil = $row['repeatuntil'];
- $dbRepeatFreq = (int) $row['repeatfreq'];
+ $dbPayerId = (int) $row['payer_id'];
+ $dbPaymentMode = $row['payment_mode'];
+ $dbPaymentModeId = (int) $row['payment_mode_id'];
+ $dbCategoryId = (int) $row['category_id'];
+ $dbLastchanged = (int) $row['last_changed'];
+ $dbRepeatAllActive = (int) $row['repeat_all_active'];
+ $dbRepeatUntil = $row['repeat_until'];
+ $dbRepeatFreq = (int) $row['repeat_frequency'];
$dbDeleted = (int) $row['deleted'];
return [
'id' => $dbBillId,
@@ -727,14 +710,14 @@ class BillMapper extends QBMapper {
$qb = $this->db->getQueryBuilder();
$qb->select(
'b.id', 'what', 'comment', 'amount', 'timestamp',
- 'paymentmode', 'paymentmodeid', 'categoryid',
+ 'payment_mode', 'payment_mode_id', 'category_id',
'pr.currency_name', 'me.name', 'me.userid'
)
->from($this->getTableName(), 'b')
->innerJoin('b', 'cospend_projects', 'pr', $qb->expr()->eq('b.projectid', 'pr.id'))
->innerJoin('b', 'cospend_members', 'me', $qb->expr()->eq('b.payerid', 'me.id'))
->where(
- $qb->expr()->eq('b.projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('b.project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
if ($deleted !== null) {
$qb->andWhere(
@@ -753,9 +736,9 @@ class BillMapper extends QBMapper {
$dbWhat = $row['what'];
$dbTimestamp = (int) $row['timestamp'];
$dbComment = $row['comment'];
- $dbPaymentMode = $row['paymentmode'];
- $dbPaymentModeId = (int) $row['paymentmodeid'];
- $dbCategoryId = (int) $row['categoryid'];
+ $dbPaymentMode = $row['payment_mode'];
+ $dbPaymentModeId = (int) $row['payment_mode_id'];
+ $dbCategoryId = (int) $row['category_id'];
$dbProjectCurrencyName = $row['currency_name'];
$dbPayerName = $row['name'];
$dbPayerUserId = $row['userid'];
@@ -795,7 +778,7 @@ class BillMapper extends QBMapper {
$qb->selectAlias($qb->createFunction('COUNT(*)'), 'count_bills')
->from($this->getTableName())
->where(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
if ($deleted !== null) {
$qb->andWhere(
@@ -804,17 +787,17 @@ class BillMapper extends QBMapper {
}
if ($payerId !== null) {
$qb->andWhere(
- $qb->expr()->eq('payerid', $qb->createNamedParameter($payerId, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('payer_id', $qb->createNamedParameter($payerId, IQueryBuilder::PARAM_INT))
);
}
if ($categoryId !== null) {
$qb->andWhere(
- $qb->expr()->eq('categoryid', $qb->createNamedParameter($categoryId, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('category_id', $qb->createNamedParameter($categoryId, IQueryBuilder::PARAM_INT))
);
}
if ($paymentModeId !== null) {
$qb->andWhere(
- $qb->expr()->eq('paymentmodeid', $qb->createNamedParameter($paymentModeId, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('payment_mode_id', $qb->createNamedParameter($paymentModeId, IQueryBuilder::PARAM_INT))
);
}
$req = $qb->executeQuery();
@@ -836,9 +819,9 @@ class BillMapper extends QBMapper {
$billIds = [];
$qb = $this->db->getQueryBuilder();
$qb->select('id')
- ->from(self::TABLE_NAME, 'b')
+ ->from($this->getTableName(), 'b')
->where(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
if ($deleted !== null) {
$qb->andWhere(
@@ -864,12 +847,12 @@ class BillMapper extends QBMapper {
public function removePaymentModeInProject(string $projectId, int $pmId): int {
$qb = $this->db->getQueryBuilder();
$qb->update($this->getTableName());
- $qb->set('paymentmodeid', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))
+ $qb->set('payment_mode_id', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))
->where(
- $qb->expr()->eq('paymentmodeid', $qb->createNamedParameter($pmId, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('payment_mode_id', $qb->createNamedParameter($pmId, IQueryBuilder::PARAM_INT))
)
->andWhere(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
return $qb->executeStatement();
}
@@ -883,12 +866,12 @@ class BillMapper extends QBMapper {
public function removeCategoryInProject(string $projectId, int $categoryId): int {
$qb = $this->db->getQueryBuilder();
$qb->update($this->getTableName());
- $qb->set('categoryid', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))
+ $qb->set('category_id', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))
->where(
- $qb->expr()->eq('categoryid', $qb->createNamedParameter($categoryId, IQueryBuilder::PARAM_INT))
+ $qb->expr()->eq('category_id', $qb->createNamedParameter($categoryId, IQueryBuilder::PARAM_INT))
)
->andWhere(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
return $qb->executeStatement();
}
diff --git a/lib/Db/BillOwer.php b/lib/Db/BillOwer.php
index 6784239c..c5a04258 100644
--- a/lib/Db/BillOwer.php
+++ b/lib/Db/BillOwer.php
@@ -22,8 +22,8 @@ use OCP\AppFramework\Db\Entity;
**/
class BillOwer extends Entity implements \JsonSerializable {
- protected int $billid;
- protected int $memberid;
+ protected int $billid = 0;
+ protected int $memberid = 0;
public function __construct() {
$this->addType('id', 'integer');
diff --git a/lib/Db/MemberMapper.php b/lib/Db/MemberMapper.php
index e85c67de..dbc4b45c 100644
--- a/lib/Db/MemberMapper.php
+++ b/lib/Db/MemberMapper.php
@@ -152,7 +152,7 @@ class MemberMapper extends QBMapper {
->innerJoin('bo', 'cospend_bills', 'bi', $qb->expr()->eq('bo.billid', 'bi.id'))
->innerJoin('bo', self::TABLE_NAME, 'm', $qb->expr()->eq('bo.memberid', 'm.id'));
$or = $qb->expr()->orx();
- $or->add($qb->expr()->eq('bi.payerid', $qb->createNamedParameter($memberId, IQueryBuilder::PARAM_INT)));
+ $or->add($qb->expr()->eq('bi.payer_id', $qb->createNamedParameter($memberId, IQueryBuilder::PARAM_INT)));
$or->add($qb->expr()->eq('bo.memberid', $qb->createNamedParameter($memberId, IQueryBuilder::PARAM_INT)));
$qb->where($or);
if ($deleted !== null) {
diff --git a/lib/Db/ProjectMapper.php b/lib/Db/ProjectMapper.php
index c622fa06..8d007928 100644
--- a/lib/Db/ProjectMapper.php
+++ b/lib/Db/ProjectMapper.php
@@ -70,7 +70,7 @@ class ProjectMapper extends QBMapper {
try {
return $this->findEntity($qb);
- } catch (DoesNotExistException | MultipleObjectsReturnedException |\OCP\DB\Exception $e) {
+ } catch (DoesNotExistException | MultipleObjectsReturnedException |Exception $e) {
return null;
}
}
@@ -135,7 +135,7 @@ class ProjectMapper extends QBMapper {
/**
* @param string $userId
* @return Project[]
- * @throws \OCP\DB\Exception
+ * @throws Exception
*/
public function getProjects(string $userId): array {
$qb = $this->db->getQueryBuilder();
@@ -152,14 +152,14 @@ class ProjectMapper extends QBMapper {
/**
* @param string $projectId
* @return void
- * @throws \OCP\DB\Exception
+ * @throws Exception
*/
public function deleteBillOwersOfProject(string $projectId): void {
// old style
/*
$query = 'DELETE FROM `*PREFIX*cospend_bill_owers`
WHERE `billid` IN (
- SELECT `id` FROM `*PREFIX*cospend_bills` WHERE `projectid` = ?
+ SELECT `id` FROM `*PREFIX*cospend_bills` WHERE `project_id` = ?
)';
$this->db->executeQuery($query, [$projectId]);
*/
@@ -171,7 +171,7 @@ class ProjectMapper extends QBMapper {
$qb2->select('id')
->from('cospend_bills')
->where(
- $qb2->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb2->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
$qb->delete('cospend_bill_owers')
@@ -187,12 +187,12 @@ class ProjectMapper extends QBMapper {
* @param string $projectId
* @param int $timestamp
* @return void
- * @throws \OCP\DB\Exception
+ * @throws Exception
*/
public function updateProjectLastChanged(string $projectId, int $timestamp): void {
$qb = $this->db->getQueryBuilder();
$qb->update($this->getTableName());
- $qb->set('lastchanged', $qb->createNamedParameter($timestamp, IQueryBuilder::PARAM_INT));
+ $qb->set('last_changed', $qb->createNamedParameter($timestamp, IQueryBuilder::PARAM_INT));
$qb->where(
$qb->expr()->eq('id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
);
diff --git a/lib/Migration/Version030000Date20240911230019.php b/lib/Migration/Version030000Date20240911230019.php
new file mode 100644
index 00000000..6198ce45
--- /dev/null
+++ b/lib/Migration/Version030000Date20240911230019.php
@@ -0,0 +1,128 @@
+hasTable('cospend_bills')) {
+ $table = $schema->getTable('cospend_bills');
+ // rename columns
+ if (!$table->hasColumn('project_id')) {
+ $table->addColumn('project_id', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 64,
+ ]);
+ $schemaChanged = true;
+ }
+ if (!$table->hasColumn('payer_id')) {
+ $table->addColumn('payer_id', Types::BIGINT, [
+ 'notnull' => true,
+ 'unsigned' => true,
+ ]);
+ $schemaChanged = true;
+ }
+ if (!$table->hasColumn('category_id')) {
+ $table->addColumn('category_id', Types::BIGINT, [
+ 'notnull' => false,
+ 'default' => null,
+ 'unsigned' => true,
+ ]);
+ $schemaChanged = true;
+ }
+ if (!$table->hasColumn('payment_mode_id')) {
+ $table->addColumn('payment_mode_id', Types::BIGINT, [
+ 'notnull' => false,
+ 'default' => 0,
+ 'unsigned' => true,
+ ]);
+ $schemaChanged = true;
+ }
+ if (!$table->hasColumn('payment_mode')) {
+ $table->addColumn('payment_mode', Types::STRING, [
+ 'notnull' => false,
+ 'length' => 1,
+ 'default' => null,
+ ]);
+ $schemaChanged = true;
+ }
+ if (!$table->hasColumn('last_changed')) {
+ $table->addColumn('last_changed', Types::BIGINT, [
+ 'notnull' => true,
+ 'unsigned' => true,
+ 'default' => 0,
+ ]);
+ $schemaChanged = true;
+ }
+ if (!$table->hasColumn('repeat_all_active')) {
+ $table->addColumn('repeat_all_active', Types::INTEGER, [
+ 'notnull' => true,
+ 'default' => 0,
+ ]);
+ $schemaChanged = true;
+ }
+ if (!$table->hasColumn('repeat_until')) {
+ $table->addColumn('repeat_until', Types::INTEGER, [
+ 'notnull' => false,
+ 'default' => null,
+ 'length' => 20,
+ ]);
+ $schemaChanged = true;
+ }
+ if (!$table->hasColumn('repeat_frequency')) {
+ $table->addColumn('repeat_frequency', Types::INTEGER, [
+ 'notnull' => true,
+ 'default' => 1,
+ ]);
+ $schemaChanged = true;
+ }
+ }
+
+ return $schemaChanged ? $schema : null;
+ }
+
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ */
+ public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
+ $qb = $this->connection->getQueryBuilder();
+ $qb->update('cospend_bills');
+ $qb->set('project_id', 'projectid');
+ $qb->set('payer_id', 'payerid');
+ $qb->set('category_id', 'categoryid');
+ $qb->set('payment_mode_id', 'paymentmodeid');
+ $qb->set('payment_mode', 'paymentmode');
+ $qb->set('last_changed', 'lastchanged');
+ $qb->set('repeat_all_active', 'repeatallactive');
+ $qb->set('repeat_until', 'repeatuntil');
+ $qb->set('repeat_frequency', 'repeatfreq');
+ $qb->executeStatement();
+ }
+}
diff --git a/lib/Migration/Version030000Date20240911230034.php b/lib/Migration/Version030000Date20240911230034.php
new file mode 100644
index 00000000..a8d0f0ba
--- /dev/null
+++ b/lib/Migration/Version030000Date20240911230034.php
@@ -0,0 +1,74 @@
+hasTable('cospend_bills')) {
+ $table = $schema->getTable('cospend_bills');
+ // drop columns that have been renamed
+ if ($table->hasColumn('project_id') && $table->hasColumn('projectid')) {
+ $table->dropColumn('projectid');
+ $schemaChanged = true;
+ }
+ if ($table->hasColumn('payer_id') && $table->hasColumn('payerid')) {
+ $table->dropColumn('payerid');
+ $schemaChanged = true;
+ }
+ if ($table->hasColumn('category_id') && $table->hasColumn('categoryid')) {
+ $table->dropColumn('categoryid');
+ $schemaChanged = true;
+ }
+ if ($table->hasColumn('payment_mode_id') && $table->hasColumn('paymentmodeid')) {
+ $table->dropColumn('paymentmodeid');
+ $schemaChanged = true;
+ }
+ if ($table->hasColumn('payment_mode') && $table->hasColumn('paymentmode')) {
+ $table->dropColumn('paymentmode');
+ $schemaChanged = true;
+ }
+ if ($table->hasColumn('repeat_all_active') && $table->hasColumn('repeatallactive')) {
+ $table->dropColumn('repeatallactive');
+ $schemaChanged = true;
+ }
+ if ($table->hasColumn('repeat_until') && $table->hasColumn('repeatuntil')) {
+ $table->dropColumn('repeatuntil');
+ $schemaChanged = true;
+ }
+ if ($table->hasColumn('repeat_frequency') && $table->hasColumn('repeatfreq')) {
+ $table->dropColumn('repeatfreq');
+ $schemaChanged = true;
+ }
+ if ($table->hasColumn('last_changed') && $table->hasColumn('lastchanged')) {
+ $table->dropColumn('lastchanged');
+ $schemaChanged = true;
+ }
+ }
+
+ return $schemaChanged ? $schema : null;
+ }
+}
diff --git a/lib/Service/LocalProjectService.php b/lib/Service/LocalProjectService.php
index dbc7ba78..dc92d1c8 100644
--- a/lib/Service/LocalProjectService.php
+++ b/lib/Service/LocalProjectService.php
@@ -293,7 +293,7 @@ class LocalProjectService implements IProjectService {
$this->projectMapper->deleteBillOwersOfProject($projectId);
$associatedTableNames = [
- 'cospend_bills',
+ // 'cospend_bills',
'cospend_members',
'cospend_shares',
'cospend_currencies',
@@ -310,6 +310,11 @@ class LocalProjectService implements IProjectService {
$qb->executeStatement();
$qb = $this->db->getQueryBuilder();
}
+ $qb->delete('cospend_bills')
+ ->where(
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ );
+ $qb->executeStatement();
$this->projectMapper->delete($dbProjectToDelete);
}
@@ -396,7 +401,7 @@ class LocalProjectService implements IProjectService {
$qb->selectAlias($qb->createFunction('SUM(amount)'), 'sum_amount')
->from('cospend_bills')
->where(
- $qb->expr()->eq('projectid', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
+ $qb->expr()->eq('project_id', $qb->createNamedParameter($projectId, IQueryBuilder::PARAM_STR))
)
->andWhere(
$qb->expr()->eq('deleted', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))
@@ -975,22 +980,22 @@ class LocalProjectService implements IProjectService {
$ts = (new DateTime())->getTimestamp();
$newBill = new Bill();
- $newBill->setProjectid($projectId);
+ $newBill->setProjectId($projectId);
$newBill->setWhat($what);
if ($comment !== null) {
$newBill->setComment($comment);
}
$newBill->setTimestamp($dateTs);
$newBill->setAmount($amount);
- $newBill->setPayerid($payer);
+ $newBill->setPayerId($payer);
$newBill->setRepeat($repeat);
- $newBill->setRepeatallactive($repeatAllActive);
- $newBill->setRepeatuntil($repeatUntil);
- $newBill->setRepeatfreq($repeatFreq ?? 1);
- $newBill->setCategoryid($categoryId ?? 0);
- $newBill->setPaymentmode($paymentMode ?? 'n');
- $newBill->setPaymentmodeid($paymentModeId ?? 0);
- $newBill->setLastchanged($ts);
+ $newBill->setRepeatAllActive($repeatAllActive);
+ $newBill->setRepeatUntil($repeatUntil);
+ $newBill->setRepeatFrequency($repeatFreq ?? 1);
+ $newBill->setCategoryId($categoryId ?? 0);
+ $newBill->setPaymentMode($paymentMode ?? 'n');
+ $newBill->setPaymentModeId($paymentModeId ?? 0);
+ $newBill->setLastChanged($ts);
$newBill->setDeleted($deleted);
$createdBill = $this->billMapper->insert($newBill);
@@ -1796,11 +1801,11 @@ class LocalProjectService implements IProjectService {
$jsonElementsById = [];
if ($getCategories) {
- $billTableField = 'categoryid';
+ $billTableField = 'category_id';
$dbTable = 'cospend_categories';
$alias = 'cat';
} else {
- $billTableField = 'paymentmodeid';
+ $billTableField = 'payment_mode_id';
$dbTable = 'cospend_paymentmodes';
$alias = 'pm';
}
@@ -2178,7 +2183,7 @@ class LocalProjectService implements IProjectService {
// UPDATE
// set last modification timestamp
$ts = (new DateTime())->getTimestamp();
- $dbBill->setLastchanged($ts);
+ $dbBill->setLastChanged($ts);
if ($what !== null) {
$dbBill->setWhat($what);
}
@@ -2194,13 +2199,13 @@ class LocalProjectService implements IProjectService {
}
}
if ($repeatFreq !== null) {
- $dbBill->setRepeatfreq($repeatFreq);
+ $dbBill->setRepeatFrequency($repeatFreq);
}
if ($repeatUntil !== null) {
- $dbBill->setRepeatuntil($repeatUntil === '' ? null : $repeatUntil);
+ $dbBill->setRepeatUntil($repeatUntil === '' ? null : $repeatUntil);
}
if ($repeatAllActive !== null) {
- $dbBill->setRepeatallactive($repeatAllActive);
+ $dbBill->setRepeatAllActive($repeatAllActive);
}
// payment mode
if ($paymentModeId !== null) {
@@ -2212,8 +2217,8 @@ class LocalProjectService implements IProjectService {
) {
$paymentMode = $this->paymentModes[$paymentModeId]['old_id'];
}
- $dbBill->setPaymentmodeid($paymentModeId);
- $dbBill->setPaymentmode($paymentMode);
+ $dbBill->setPaymentModeId($paymentModeId);
+ $dbBill->setPaymentMode($paymentMode);
} elseif ($paymentMode !== null) {
// is there a pm with this old id? if yes, use it for new id
$paymentModeId = 0;
@@ -2223,11 +2228,11 @@ class LocalProjectService implements IProjectService {
break;
}
}
- $dbBill->setPaymentmodeid($paymentModeId);
- $dbBill->setPaymentmode($paymentMode);
+ $dbBill->setPaymentModeId($paymentModeId);
+ $dbBill->setPaymentMode($paymentMode);
}
if ($categoryId !== null) {
- $dbBill->setCategoryid($categoryId);
+ $dbBill->setCategoryId($categoryId);
}
// priority to timestamp (moneybuster might send both for a moment)
if ($timestamp !== null) {
@@ -2243,7 +2248,7 @@ class LocalProjectService implements IProjectService {
$dbBill->setAmount($amount);
}
if ($payer !== null) {
- $dbBill->setPayerid($payer);
+ $dbBill->setPayerId($payer);
}
$this->billMapper->update($dbBill);
@@ -2357,8 +2362,8 @@ class LocalProjectService implements IProjectService {
// get bills with repetition flag
$bills = $this->billMapper->getBillsToRepeat($billId);
foreach ($bills as $bill) {
- if (!isset($timezoneByProjectId[$bill->getProjectid()])) {
- $timezoneByProjectId[$bill->getProjectid()] = $this->getProjectTimeZone($bill->getProjectid());
+ if (!isset($timezoneByProjectId[$bill->getProjectId()])) {
+ $timezoneByProjectId[$bill->getProjectId()] = $this->getProjectTimeZone($bill->getProjectId());
}
}
$jsonBills = array_map(function (Bill $bill) {