Files
silver-octo-spoon/wolverine/a-frame-architecture/FinancialApi.Infrastructure/ReversalQuery.cs
T

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());
}
}