using Microsoft.EntityFrameworkCore; using SchotzIadKmTracker.Api.Data; using SchotzIadKmTracker.Api.Models.Entities; namespace SchotzIadKmTracker.Api.Repositories; /// public class VehiculeRepository : IVehiculeRepository { private readonly AppDbContext _context; public VehiculeRepository(AppDbContext context) { _context = context; } /// public async Task> GetHistoriqueAsync(CancellationToken cancellationToken = default) { return await _context.Vehicules .OrderByDescending(v => v.DateEffet) .ThenByDescending(v => v.Id) .ToListAsync(cancellationToken); } /// public async Task GetByIdAsync(int id, CancellationToken cancellationToken = default) { return await _context.Vehicules .FirstOrDefaultAsync(v => v.Id == id, cancellationToken); } /// public async Task GetVehiculeCourantAsync(DateOnly date, CancellationToken cancellationToken = default) { // Design SQL : SELECT * FROM Vehicules WHERE DateEffet <= date ORDER BY DateEffet DESC, Id DESC LIMIT 1 return await _context.Vehicules .Where(v => v.DateEffet <= date) .OrderByDescending(v => v.DateEffet) .ThenByDescending(v => v.Id) .FirstOrDefaultAsync(cancellationToken); } /// public Task AddAsync(Vehicule vehicule, CancellationToken cancellationToken = default) { _context.Vehicules.Add(vehicule); return Task.CompletedTask; } /// public async Task> GetTrajetsAReaffecterAsync( DateOnly dateEffet, int puissanceFiscale, CancellationToken cancellationToken = default) { return await _context.Trajets .Where(t => t.Date >= dateEffet && t.PuissanceFiscale != puissanceFiscale) .ToListAsync(cancellationToken); } }