51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
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<TimeBankCard> CreateTimeBankCard(TimeBankCard card)
|
|
{
|
|
card.TimeBankCardId = Guid.NewGuid();
|
|
card.CreatedAt = DateTime.UtcNow;
|
|
card.IsActive = true;
|
|
|
|
_context.TimeBankCards.Add(card);
|
|
return card;
|
|
}
|
|
|
|
public Task<TimeBankCard?> GetById(Guid timeBankCardId)
|
|
=> _context.TimeBankCards.FirstOrDefaultAsync(c => c.TimeBankCardId == timeBankCardId);
|
|
|
|
public Task<TimeBankCard?> GetByRfidTagId(string rfidTagId)
|
|
=> _context.TimeBankCards
|
|
.Include(c => c.ActiveSessionFacility)
|
|
.FirstOrDefaultAsync(c => c.RfidTagId == rfidTagId && c.IsActive);
|
|
|
|
public Task<List<TimeBankCard>> GetByCustomerId(Guid customerId)
|
|
=> _context.TimeBankCards
|
|
.Include(c => c.ActiveSessionFacility)
|
|
.Where(c => c.FKCustomerId == customerId)
|
|
.OrderByDescending(c => c.PurchasedAt)
|
|
.ToListAsync();
|
|
|
|
public async Task<TimeBankCardUsageLog> AddUsageLog(TimeBankCardUsageLog log)
|
|
{
|
|
log.TimeBankCardUsageLogId = Guid.NewGuid();
|
|
log.CreatedAt = DateTime.UtcNow;
|
|
|
|
_context.TimeBankCardUsageLogs.Add(log);
|
|
return log;
|
|
}
|
|
}
|
|
}
|