using Azure.Core; using Diligent.WebAPI.Contracts.DTOs.File; using Diligent.WebAPI.Contracts.DTOs.Files; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Diligent.WebAPI.Business.Services { public class FileEntityService : IFileEntityService { private readonly ILogger _logger; private readonly DatabaseContext _context; private readonly IMapper _mapper; public FileEntityService(DatabaseContext context, ILogger logger, IMapper mapper) { _context = context; _logger = logger; _mapper = mapper; } public async Task> GetAllAsync() => _mapper.Map>(await _context.Files.Include(x => x.Tags).ToListAsync()); public async Task UploadPdfAsync(FileEntity file) { await _context.Files.AddAsync(file); await _context.SaveChangesAsync(); } public async Task> GetAll() { return await _context.Files.ToListAsync(); } public async Task GetAllFiltered(FileFilter filters) { var filtered = await _context.Files .Include(n => n.Tags) .Include(n => n.Category) .FilterFiles(filters) .ToListAsync(); return new { Data = filtered.ApplyPagging(filters) .Select(n => new { n.Id, n.Name, n.Size, n.Extension}), Total = filtered.Count }; } } }