FileAppService.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using FileStorage.FileManagement.Dto;
  2. using FileStorage.Models;
  3. using Microsoft.EntityFrameworkCore;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Linq.Dynamic.Core;
  8. using System.Threading.Tasks;
  9. using Volo.Abp.Application.Dtos;
  10. using Volo.Abp.Application.Services;
  11. using Volo.Abp.Domain.Repositories;
  12. namespace FileStorage.FileManagement
  13. {
  14. public class FileAppService : ApplicationService, IFileAppService
  15. {
  16. private readonly IRepository<FileInfo, Guid> _repository;
  17. public FileAppService(IRepository<FileInfo, Guid> repository)
  18. {
  19. _repository = repository;
  20. }
  21. public async Task<PagedResultDto<FileInfoDto>> GetAll(GetFileInputDto input)
  22. {
  23. var query = (await _repository.GetQueryableAsync()).WhereIf(!string.IsNullOrWhiteSpace(input.Filter), _ => _.Name.Contains(input.Filter));
  24. var totalCount = await query.CountAsync();
  25. var items = await query.OrderBy(input.Sorting ?? "Name")
  26. .Skip(input.SkipCount)
  27. .Take(input.MaxResultCount)
  28. .ToListAsync();
  29. var dtos = ObjectMapper.Map<List<FileInfo>, List<FileInfoDto>>(items);
  30. return new PagedResultDto<FileInfoDto>(totalCount, dtos);
  31. }
  32. }
  33. }