private CaruselImageDto GetImage(FilterIdDto filter, out List <CaruselImageDto> sortedImages, out int indexOfImage, int?userId = null) { using (var context = ContextFactory.CreateDbContext(ConnectionString)) { IEnumerable <ImageDto> images = context.Images .Include(image => image.UserToImageScores) .ThenInclude(image => image.Score) .Include(image => image.UserToImageTags) .ThenInclude(image => image.Tag) .Select(image => new ImageDto(image, userId)); if (images.Count() == 0) { throw new ImageRepositoryException("Недостаточно файлов для вывода страницы"); } sortedImages = SortImages(images, filter).Select(image => new CaruselImageDto(image)).ToList(); CaruselImageDto currentImage = sortedImages.FirstOrDefault(i => i.Id == filter.Id); if (currentImage == null) { throw new ImageRepositoryException("Изображение не найдено"); } indexOfImage = sortedImages.IndexOf(currentImage); return(currentImage); } }
public CaruselImageDto Get(FilterIdDto filter, int?userId = null) { var currentImage = GetImage(filter, out List <CaruselImageDto> sortedImages, out int indexOfImage, userId); currentImage.IsFirst = indexOfImage == 0; currentImage.IsLast = indexOfImage == sortedImages.Count() - 1; return(currentImage); }
public CaruselImageDto GetPrev(FilterIdDto filter, int?userId = null) { using (var context = ContextFactory.CreateDbContext(ConnectionString)) { var currentImage = GetImage(filter, out List <CaruselImageDto> sortedImages, out int indexOfImage, userId); if (indexOfImage - 1 < 0) { throw new ImageRepositoryException("Вне гранниц данных"); } indexOfImage--; currentImage = sortedImages[indexOfImage]; currentImage.IsFirst = indexOfImage == 0; currentImage.IsLast = indexOfImage == sortedImages.Count() - 1; return(currentImage); } }
public IActionResult GetPrev(FilterIdDto imageData) { int?userId = null; if (User.Identity.IsAuthenticated) { userId = int.Parse(User.Claims.FirstOrDefault(claim => claim.Type == ClaimTypes.NameIdentifier).Value); } try { return(Ok(_imageRepository.GetPrev(imageData, userId))); } catch (ImageRepositoryException e) { return(BadRequest(e.Message)); } }