Spaces:
Running
Running
| using FlowAPI.Application.Interfaces; | |
| using FlowAPI.Domain.Entities; | |
| using FlowAPI.Infrastructure.Data; | |
| using Microsoft.EntityFrameworkCore; | |
| namespace FlowAPI.Infrastructure.Repositories | |
| { | |
| public class HabitRecordRepository : GenericRepository<HabitRecord>, IHabitRecordRepository | |
| { | |
| public HabitRecordRepository(AppDbContext context) : base(context) { } | |
| public async Task<IEnumerable<HabitRecord>> GetAllByUserIdAsync(Guid userId) | |
| { | |
| return await _dbSet | |
| .Where(r => r.UserId == userId) | |
| .OrderByDescending(r => r.CheckedDate) | |
| .AsNoTracking() | |
| .ToListAsync(); | |
| } | |
| public async Task<HabitRecord?> GetTodayRecordAsync(Guid userId, string habitName) | |
| { | |
| var today = DateTime.UtcNow.Date; | |
| return await _dbSet | |
| .FirstOrDefaultAsync(r => | |
| r.UserId == userId && | |
| r.HabitName == habitName && | |
| r.CheckedDate.Date == today); | |
| } | |
| public async Task<HabitRecord?> GetRecordForDateAsync(Guid userId, string habitName, DateTime date) | |
| { | |
| var targetDate = date.Date; | |
| return await _dbSet | |
| .FirstOrDefaultAsync(r => | |
| r.UserId == userId && | |
| r.HabitName == habitName && | |
| r.CheckedDate.Date == targetDate); | |
| } | |
| } | |
| } | |