58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
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<ClientTerms?> GetActiveByClientIdAsync(Guid clientId)
|
|
{
|
|
return await _context.ClientTerms
|
|
.AsNoTracking()
|
|
.Where(t => t.FKClientId == clientId && t.IsActive)
|
|
.OrderByDescending(t => t.Version)
|
|
.FirstOrDefaultAsync();
|
|
}
|
|
|
|
public Task<List<ClientTerms>> GetActiveForUpdateAsync(Guid clientId)
|
|
{
|
|
return _context.ClientTerms
|
|
.Where(t => t.FKClientId == clientId && t.IsActive)
|
|
.ToListAsync();
|
|
}
|
|
|
|
public async Task<int> 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<CustomerTermsAcceptance?> GetAcceptanceAsync(Guid cusId, Guid clientId, int version)
|
|
{
|
|
return await _context.CustomerTermsAcceptances
|
|
.AsNoTracking()
|
|
.FirstOrDefaultAsync(a => a.FKCusId == cusId && a.FKClientId == clientId && a.Version == version);
|
|
}
|
|
}
|
|
}
|