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

namespace PARR.DAL.Services.Implementations.Unit
{
    internal class UnitService : BaseService<Models.Unit.Unit>, IUnitService
    {
        private readonly DataContext dataContext;

        protected override DbSet<Models.Unit.Unit> EntitySet => dataContext.Units;

        protected override DataContext EntitiContext => dataContext;

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


        public IQueryable<Models.Unit.Unit> GetWithIncludes()
        {
            return Get()
                    .Include(t => t.UnitValues)
                        .ThenInclude(t => t.Field)
                    .Include(t => t.UnitValues)
                        .ThenInclude(t => t.Value);
        }
    }
}
