mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-12 15:35:15 +00:00
Expand API, add new migration.
This commit is contained in:
@@ -190,7 +190,10 @@ class BillRepository implements BillRepositoryInterface
|
||||
public function getBills(): Collection
|
||||
{
|
||||
/** @var Collection $set */
|
||||
return $this->user->bills()->orderBy('active', 'DESC')->orderBy('name', 'ASC')->get();
|
||||
return $this->user->bills()
|
||||
->orderBy('order', 'ASC')
|
||||
->orderBy('active', 'DESC')
|
||||
->orderBy('name', 'ASC')->get();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -711,4 +714,20 @@ class BillRepository implements BillRepositoryInterface
|
||||
{
|
||||
$this->user->transactionJournals()->where('bill_id', $bill->id)->update(['bill_id' => null]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct order of piggies in case of issues.
|
||||
*/
|
||||
public function correctOrder(): void
|
||||
{
|
||||
$set = $this->user->bills()->orderBy('order', 'ASC')->get();
|
||||
$current = 1;
|
||||
foreach ($set as $bill) {
|
||||
if ((int) $bill->order !== $current) {
|
||||
$bill->order = $current;
|
||||
$bill->save();
|
||||
}
|
||||
$current++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -40,6 +40,11 @@ interface BillRepositoryInterface
|
||||
*/
|
||||
public function unlinkAll(Bill $bill): void;
|
||||
|
||||
/**
|
||||
* Add correct order to bills.
|
||||
*/
|
||||
public function correctOrder(): void;
|
||||
|
||||
/**
|
||||
* @param Bill $bill
|
||||
*
|
||||
|
@@ -26,6 +26,7 @@ namespace FireflyIII\Repositories\PiggyBank;
|
||||
|
||||
|
||||
use Carbon\Carbon;
|
||||
use DB;
|
||||
use Exception;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Models\Note;
|
||||
@@ -34,6 +35,7 @@ use FireflyIII\Models\PiggyBankEvent;
|
||||
use FireflyIII\Models\PiggyBankRepetition;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\ObjectGroup\CreatesObjectGroups;
|
||||
use FireflyIII\User;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Log;
|
||||
|
||||
@@ -351,6 +353,14 @@ trait ModifiesPiggyBanks
|
||||
|
||||
$this->updateNote($piggyBank, $data['notes'] ?? '');
|
||||
|
||||
// update the order of the piggy bank:
|
||||
$oldOrder = (int) $piggyBank->order;
|
||||
$newOrder = (int) ($data['order'] ?? $oldOrder);
|
||||
if ($oldOrder !== $newOrder) {
|
||||
$this->updateOrder($piggyBank, $oldOrder, $newOrder);
|
||||
}
|
||||
|
||||
|
||||
// if the piggy bank is now smaller than the current relevant rep,
|
||||
// remove money from the rep.
|
||||
$repetition = $this->getRepetition($piggyBank);
|
||||
@@ -415,4 +425,38 @@ trait ModifiesPiggyBanks
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PiggyBank $piggyBank
|
||||
* @param int $oldOrder
|
||||
* @param int $newOrder
|
||||
*/
|
||||
private function updateOrder(PiggyBank $piggyBank, int $oldOrder, int $newOrder): void
|
||||
{
|
||||
if ($newOrder > $oldOrder) {
|
||||
// Iedereen [7 en lager] [hoger dan 3] behalve piggy zelf, puntje er af:
|
||||
//piggy zelf naar 7
|
||||
/** @var User $user */
|
||||
$user = $this->user;
|
||||
$user->piggyBanks()->where('order', '<=', $newOrder)->where('order', '>', $oldOrder)
|
||||
->where('piggy_banks.id', '!=', $piggyBank->id)
|
||||
->update(['order' => DB::raw('piggy_banks.order-1')]);
|
||||
$piggyBank->order = $newOrder;
|
||||
$piggyBank->save();
|
||||
}
|
||||
if ($newOrder < $oldOrder) {
|
||||
//
|
||||
//Van 8 naar 2
|
||||
// iedereen [2 of hoger] en [kleiner dan 8] puntje er bij.
|
||||
// 8 naar 2
|
||||
/** @var User $user */
|
||||
$user = $this->user;
|
||||
$user->piggyBanks()->where('order', '>=', $newOrder)->where('order', '<', $oldOrder)
|
||||
->where('piggy_banks.id', '!=', $piggyBank->id)
|
||||
->update(['order' => DB::raw('piggy_banks.order+1')]);
|
||||
$piggyBank->order = $newOrder;
|
||||
$piggyBank->save();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user