FlowAPI / FlowAPI.Infrastructure /Repositories /HabitRecordRepository.cs
danylokhodus's picture
feat(habits): support custom checked date in backend DTO, repository, and service
03ee889
Raw
History Blame Contribute Delete
1.44 kB
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);
}
}
}