using Fitness_core_BE.Interfaces; using Fitness_core_BE.Models; using Microsoft.EntityFrameworkCore; namespace Fitness_core_BE.Repos { public class TimeBankCardRepository : ITimeBankCardRepository { private readonly TenantDbContext _context; public TimeBankCardRepository(TenantDbContext context) { _context = context; } public async Task CreateTimeBankCard(TimeBankCard card) { card.TimeBankCardId = Guid.NewGuid(); card.CreatedAt = DateTime.UtcNow; card.IsActive = true; _context.TimeBankCards.Add(card); return card; } public Task GetById(Guid timeBankCardId) => _context.TimeBankCards.FirstOrDefaultAsync(c => c.TimeBankCardId == timeBankCardId); public Task GetByRfidTagId(string rfidTagId) => _context.TimeBankCards .Include(c => c.ActiveSessionFacility) .FirstOrDefaultAsync(c => c.RfidTagId == rfidTagId && c.IsActive); public Task> GetByCustomerId(Guid customerId) => _context.TimeBankCards .Include(c => c.ActiveSessionFacility) .Where(c => c.FKCustomerId == customerId) .OrderByDescending(c => c.PurchasedAt) .ToListAsync(); public async Task AddUsageLog(TimeBankCardUsageLog log) { log.TimeBankCardUsageLogId = Guid.NewGuid(); log.CreatedAt = DateTime.UtcNow; _context.TimeBankCardUsageLogs.Add(log); return log; } } }