namespace MyOffice.Data.Repositories.Currency; using Microsoft.EntityFrameworkCore; using Models.Currencies; public class CurrencyRateRepository : AppRepository, ICurrencyRateRepository { public List GetLastRates(Guid currencyId, DateTime? before = null, int count = 1) { before = before ?? DateTime.UtcNow; return _context.CurrencyRates .Where(x => x.CurrencyId == currencyId) .Where(x => x.DateTime <= before) .OrderByDescending(x => x.DateTime) .ThenByDescending(x => x.Id) .Take(count) .ToList(); } public List GetLastRates(List currencyIds) { return _context.CurrencyRates .Include(x => x.Currency) .Where(x => currencyIds.Contains(x.Currency!.CurrencyGlobalId)) .GroupBy(x => new { x.CurrencyId, //x.Currency!.Name, //x.Currency!.CurrencyGlobalId, }, (key, g) => g.OrderByDescending(x => x.DateTime).First()) .ToList(); } public bool AddRate(CurrencyRate currencyRate) { return this.AddBase(currencyRate) > 0; } public List GetAtDate(Guid currencyId, DateTime date) { return _context.CurrencyRates .Where(x => x.CurrencyId == currencyId && x.DateTime == date) .ToList(); } }