using Distribution.Data; using Microsoft.EntityFrameworkCore; namespace Distribution.Features.Route; public class RouteRepository(AppDBContext context) : IRouteRepository { public async Task GetByIdAsync(Guid id) => await context.Routes.FindAsync(id); public async Task> GetAllAsync() => await context.Routes.ToListAsync(); public async Task AddAsync(Models.Route entity) => await context.Routes.AddAsync(entity); public void Update(Models.Route entity) => context.Routes.Update(entity); public void Remove(Models.Route entity) { entity.IsActive = false; context.Routes.Update(entity); } public async Task GetActiveUserAsync(Guid userId) => await context.Users.FirstOrDefaultAsync(u => u.Id == userId && u.IsActive); public async Task> GetStoresByIdsAsync(List storeIds) => await context.Stores.Where(s => storeIds.Contains(s.Id)).ToListAsync(); public async Task GetStoreByIdAsync(Guid storeId) => await context.Stores.FindAsync(storeId); public void UpdateStore(Models.Store store) => context.Stores.Update(store); public async Task GetOpenVisitAsync(Guid routeId, Guid storeId) => await context.RouteVisitLogs .Where(v => v.FK_RouteId == routeId && v.FK_StoreId == storeId && v.CheckOutAt == null) .OrderByDescending(v => v.CheckInAt) .FirstOrDefaultAsync(); public async Task AddVisitLogAsync(Models.RouteVisitLog log) => await context.RouteVisitLogs.AddAsync(log); public void UpdateVisitLog(Models.RouteVisitLog log) => context.RouteVisitLogs.Update(log); public async Task> GetVisitsByStoreIdAsync(Guid storeId) => await context.RouteVisitLogs.Where(v => v.FK_StoreId == storeId).ToListAsync(); }