32 lines
912 B
C#
32 lines
912 B
C#
using System;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using FinancialApi.Application;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace FinancialApi.Infrastructure;
|
|
|
|
public class ReversalQuery(AccountDbContext db, TimeProvider timeProvider) : IReversalQuery
|
|
{
|
|
public async Task<ReversalData?> GetReversalDataAsync(Guid journalEntryId)
|
|
{
|
|
var entry = await db.JournalEntries
|
|
.Include(x => x.Lines)
|
|
.AsNoTracking()
|
|
.FirstOrDefaultAsync(x => x.Id == journalEntryId);
|
|
|
|
if (entry == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var accountIds = entry.Lines.Select(l => l.AccountId).Distinct().ToList();
|
|
|
|
var accounts = await db.Accounts
|
|
.AsNoTracking()
|
|
.Where(a => accountIds.Contains(a.Id))
|
|
.ToListAsync();
|
|
|
|
return new ReversalData(entry, accounts, timeProvider.GetUtcNow());
|
|
}
|
|
} |