コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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);
     }
 }
コード例 #4
0
        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));
            }
        }