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 ApplicationService : BaseService<Application>, IApplicationService
    {
        private readonly DataContext dataContext;
        private readonly ILogger<ApplicationService> logger;

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

        protected override DbSet<Application> EntitySet => dataContext.Applications;

        protected override DataContext EntitiContext => dataContext;

        public async Task<Application?> GetByNameAsync(string appName, Guid typeId)
        {
            return await EntitySet.FirstOrDefaultAsync(t => t.Name.ToLower() == appName.Trim().ToLower() && t.ApplicationTypeId == typeId);
        }
    }
}
