using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using PARR.DAL.Context;
using PARR.DAL.Models;
using PARR.DAL.Services.Abstracts;
using PARR.DAL.Services.Interfaces;

namespace PARR.DAL.Services.Implementations
{
    internal class UserService : BaseService<User>, IUserService
    {
        private readonly DataContext dataContext;

        public UserService(DataContext dataContext, ILogger<UserService> logger) : base(logger)
        {
            this.dataContext = dataContext;
        }

        protected override DbSet<User> EntitySet => dataContext.Users;

        protected override DataContext EntitiContext => dataContext;

        public async Task<User?> GetByIpWithRolesAsync(string ipAddress)
        {
            return await EntitySet
                    .Include(t => t.Roles).ThenInclude(t => t.Role)
                    .FirstOrDefaultAsync(t => t.Ip == ipAddress);
        }
    }
}
