using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Reflection; using MTWorkHR.Application.Services.Interfaces; using MTWorkHR.Core.UnitOfWork; using MTWorkHR.Core.IRepositories.Base; using MTWorkHR.Application.Models; using MTWorkHR.Core.Entities; namespace MTWorkHR.Application.Services { public class LogService : ILogService where TEntity : class { private readonly IUnitOfWorkLog unitOfWork; private readonly IRepositoryLog repository; public LogService(IUnitOfWorkLog _unitOfWork) { unitOfWork = _unitOfWork; //this.repository = repository; repository = (IRepositoryLog)unitOfWork.GetRepositoryByName(typeof(TEntity).Name); } public virtual async Task Create(TEntity input) { IRepositoryLog repository = (IRepositoryLog)unitOfWork.GetRepositoryByName(input.GetType().Name); //var repository = (IRepository)value; await repository.AddAsync(input); await unitOfWork.CompleteAsync(); } public virtual async Task> GetAll(PagingInputDto pagingInputDto) { var result = await repository.GetAllAsync(pagingInputDto); var list = Mapper.MapperObject.Mapper.Map>(result.Item1); var response = new PagingResultDto { Result = list, Total = result.Item2 }; return response; } } }