Improve tests, models and views.

This commit is contained in:
James Cole
2019-04-16 16:20:46 +02:00
parent 5ac39dbdef
commit 66c55b7bbe
44 changed files with 13710 additions and 5067 deletions

View File

@@ -29,11 +29,14 @@ use DB;
use Exception;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Factory\TransactionGroupFactory;
use FireflyIII\Models\Attachment;
use FireflyIII\Models\Note;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionJournalLink;
use FireflyIII\Services\Internal\Update\GroupUpdateService;
use FireflyIII\Support\NullArrayObject;
use Illuminate\Database\Eloquent\Builder;
/**
* Class TransactionGroupRepository
@@ -52,6 +55,80 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface
}
}
/**
* Return all attachments for all journals in the group.
*
* @param TransactionGroup $group
*
* @return array
*/
public function getAttachments(TransactionGroup $group): array
{
$journals = $group->transactionJournals->pluck('id')->toArray();
$set = Attachment::whereIn('attachable_id', $journals)
->where('attachable_type', TransactionJournal::class)
->whereNull('deleted_at')->get();
$result = [];
/** @var Attachment $attachment */
foreach ($set as $attachment) {
$current = $attachment->toArray();
$current['file_exists'] = true;
$current['journal_title'] = $attachment->attachable->description;
$result[] = $current;
}
//$result = $set->toArray();
return $result;
}
/**
* Return all journal links for all journals in the group.
*
* @param TransactionGroup $group
*
* @return array
*/
public function getLinks(TransactionGroup $group): array
{
$return = [];
$journals = $group->transactionJournals->pluck('id')->toArray();
$set = TransactionJournalLink
::where(
static function (Builder $q) use ($journals) {
$q->whereIn('source_id', $journals);
$q->orWhereIn('destination_id', $journals);
}
)
->with(['source', 'destination'])
->leftJoin('link_types', 'link_types.id', '=', 'journal_links.link_type_id')
->get(['journal_links.*', 'link_types.inward', 'link_types.outward']);
/** @var TransactionJournalLink $entry */
foreach ($set as $entry) {
$journalId = in_array($entry->source_id, $journals, true) ? $entry->source_id : $entry->destination_id;
$return[$journalId] = $return[$journalId] ?? [];
if ($journalId === $entry->source_id) {
$return[$journalId][] = [
'link' => $entry->outward,
'group' => $entry->destination->transaction_group_id,
'description' => $entry->destination->description,
];
}
if ($journalId === $entry->destination_id) {
$return[$journalId][] = [
'link' => $entry->inward,
'group' => $entry->source->transaction_group_id,
'description' => $entry->source->description,
];
}
}
return $return;
}
/**
* Return object with all found meta field things as Carbon objects.
*
@@ -124,6 +201,18 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface
return $note->text;
}
/**
* Return all piggy bank events for all journals in the group.
*
* @param TransactionGroup $group
*
* @return array
*/
public function getPiggyEvents(TransactionGroup $group): array
{
return [];
}
/**
* Get the tags for a journal (by ID).
*

View File

@@ -33,6 +33,25 @@ use FireflyIII\User;
*/
interface TransactionGroupRepositoryInterface
{
/**
* Return all attachments for all journals in the group.
*
* @param TransactionGroup $group
*
* @return array
*/
public function getAttachments(TransactionGroup $group): array;
/**
* Return all journal links for all journals in the group.
*
* @param TransactionGroup $group
*
* @return array
*/
public function getLinks(TransactionGroup $group): array;
/**
* Return object with all found meta field things as Carbon objects.
*
@@ -62,6 +81,15 @@ interface TransactionGroupRepositoryInterface
*/
public function getNoteText(int $journalId): ?string;
/**
* Return all piggy bank events for all journals in the group.
*
* @param TransactionGroup $group
*
* @return array
*/
public function getPiggyEvents(TransactionGroup $group): array;
/**
* Get the tags for a journal (by ID).
*