| 1234567891011121314151617181920212223 |
- using Application.Abstractions.Data;
- using Microsoft.EntityFrameworkCore;
- namespace Infrastructure.StockData;
- /// <summary>영업일 판정 — 주말 + MarketHoliday 제외</summary>
- internal static class MarketCalendar
- {
- /// <summary>fromExclusive 직전 영업일 (주말/휴장일 제외)</summary>
- public static async Task<DateOnly> GetPreviousBusinessDayAsync(IAppDbContext db, DateOnly fromExclusive, CancellationToken ct)
- {
- var date = fromExclusive.AddDays(-1);
- var floor = date.AddDays(-30);
- var holidays = await db.MarketHoliday.AsNoTracking().Where(c => c.Date >= floor && c.Date <= date).Select(c => c.Date).ToListAsync(ct);
- while (date.DayOfWeek is DayOfWeek.Saturday or DayOfWeek.Sunday || holidays.Contains(date))
- {
- date = date.AddDays(-1);
- }
- return date;
- }
- }
|