using Fitness_core_BE.Interfaces; using Fitness_core_BE.Models; using Microsoft.EntityFrameworkCore; namespace Fitness_core_BE.Repos { public class TermsRepository : ITermsRepository { private readonly TenantDbContext _context; public TermsRepository(TenantDbContext context) { _context = context; } public async Task GetActiveByClientIdAsync(Guid clientId) { return await _context.ClientTerms .AsNoTracking() .Where(t => t.FKClientId == clientId && t.IsActive) .OrderByDescending(t => t.Version) .FirstOrDefaultAsync(); } public Task> GetActiveForUpdateAsync(Guid clientId) { return _context.ClientTerms .Where(t => t.FKClientId == clientId && t.IsActive) .ToListAsync(); } public async Task GetLatestVersionAsync(Guid clientId) { return (await _context.ClientTerms .Where(t => t.FKClientId == clientId) .Select(t => (int?)t.Version) .MaxAsync()) ?? 0; } public async Task AddTermsAsync(ClientTerms terms) { await _context.ClientTerms.AddAsync(terms); } public async Task AddAcceptanceAsync(CustomerTermsAcceptance acceptance) { await _context.CustomerTermsAcceptances.AddAsync(acceptance); } public async Task GetAcceptanceAsync(Guid cusId, Guid clientId, int version) { return await _context.CustomerTermsAcceptances .AsNoTracking() .FirstOrDefaultAsync(a => a.FKCusId == cusId && a.FKClientId == clientId && a.Version == version); } } }