using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using PARR.DAL.Context; using PARR.DAL.Models; using PARR.DAL.Repositories.Base; using PARR.DAL.Services.Interfaces; namespace PARR.DAL.Services.Implementations { internal class HostService : BaseRepository, IHostService { public HostService(DataContext dataContext, ILogger logger) : base(logger, dataContext) { } public async Task GetHostWithAppsByIpAsync(string ip) { return await GetHostWithIncludeApps() .AsSplitQuery() .FirstOrDefaultAsync(h => h.IP == ip); } public async Task GetHostWithAppsByEkAsync(string ek) { return await GetHostWithIncludeApps() .AsSplitQuery() .FirstOrDefaultAsync(h => h.Ek.ToLower() == ek.ToLower()); } private IQueryable GetHostWithIncludeApps() { return EntitySet .Include(t => t.ApplicationsInHosts) .ThenInclude(a => a.Application) .ThenInclude(t => t!.ApplicationType) .Include(t => t.WorkGroup); } public async Task GetByIpAsync(string ip) { return await EntitySet.FirstOrDefaultAsync(t => t.IP == ip); } public async Task GetByEkAsync(string ek) { return await EntitySet.FirstOrDefaultAsync(t => t.Ek.ToLower() == ek.ToLower()); } } }