public IActionResult Index(int?page)
        {
            var pageNumber = page == null || page <= 0 ? 1 : page.Value;
            var photos     = _photoRepo.GetAllPhotos()
                             .Select(photo => new PhotosIndexViewModel
            {
                Id            = photo.Id,
                Name          = photo.Name,
                Description   = photo.Description,
                Category      = photo.Category,
                PhotoUrl      = photo.PhotoUrl,
                DateCreated   = photo.DateCreated.ToLongDateString(),
                FaceBookLink  = photo.FaceBookLink,
                InstagramLink = photo.InstagramLink,
                TwitterLink   = photo.TwitterLink
            });

            //var model = new PagedList<PhotosIndexViewModel>(photos, pageNumber, 12);

            var model = new PhotosListViewModel
            {
                Photos = new PagedList <PhotosIndexViewModel>(photos, pageNumber, 12)
            };

            return(View(model));
        }
示例#2
0
        public IActionResult Search([FromQuery] string Search, [FromQuery] int?page)
        {
            var pageNumber = page == null || page <= 0 ? 1 : page.Value;

            if (String.IsNullOrWhiteSpace(Search))
            {
                return(RedirectToAction(nameof(Index)));
            }
            var photos = _photoRepo.SearchPhotos(Search)
                         .Select(photo => new PhotosIndexViewModel
            {
                Id            = photo.Id,
                Name          = photo.Name,
                Description   = photo.Description,
                Category      = photo.Category,
                PhotoUrl      = photo.PhotoUrl,
                DateCreated   = photo.DateCreated.ToLongDateString(),
                FaceBookLink  = photo.FaceBookLink,
                InstagramLink = photo.InstagramLink,
                TwitterLink   = photo.TwitterLink
            });

            var model = new PhotosListViewModel
            {
                Search = Search,
                Photos = new PagedList <PhotosIndexViewModel>(photos, pageNumber, 12)
            };

            return(View(model));
        }
示例#3
0
        public void Can_Send_Pagination_View_Model()
        {
            // Организация (arrange)
            Mock <IPhotoRepository> mock = new Mock <IPhotoRepository>();

            mock.Setup(m => m.Photos).Returns(new List <Photo>
            {
                new Photo {
                    PhotoId = 1, Name = "Фото1"
                },
                new Photo {
                    PhotoId = 2, Name = "Фото2"
                },
                new Photo {
                    PhotoId = 3, Name = "Фото3"
                },
                new Photo {
                    PhotoId = 4, Name = "Фото4"
                },
                new Photo {
                    PhotoId = 5, Name = "Фото5"
                },
                new Photo {
                    PhotoId = 6, Name = "Фото6"
                },
                new Photo {
                    PhotoId = 7, Name = "Фото7"
                },
                new Photo {
                    PhotoId = 8, Name = "Фото8"
                },
                new Photo {
                    PhotoId = 9, Name = "Фото9"
                },
                new Photo {
                    PhotoId = 10, Name = "Фото10"
                },
                new Photo {
                    PhotoId = 11, Name = "Фото11"
                },
            });
            PhotoController controller = new PhotoController(mock.Object);

            controller.pageSize = 9;

            // Act
            PhotosListViewModel result
                = (PhotosListViewModel)controller.List(null, 2).Model;

            // Assert
            PagingInfo pageInfo = result.PagingInfo;

            Assert.AreEqual(pageInfo.CurrentPage, 2);
            Assert.AreEqual(pageInfo.ItemsPerPage, 3);
            Assert.AreEqual(pageInfo.TotalItems, 5);
            Assert.AreEqual(pageInfo.TotalPages, 2);
        }
示例#4
0
        public void Can_Paginate()
        {
            // Организация (arrange)
            Mock <IPhotoRepository> mock = new Mock <IPhotoRepository>();

            mock.Setup(m => m.Photos).Returns(new List <Photo>
            {
                new Photo {
                    PhotoId = 1, Name = "Фото1"
                },
                new Photo {
                    PhotoId = 2, Name = "Фото2"
                },
                new Photo {
                    PhotoId = 3, Name = "Фото3"
                },
                new Photo {
                    PhotoId = 4, Name = "Фото4"
                },
                new Photo {
                    PhotoId = 5, Name = "Фото5"
                },
                new Photo {
                    PhotoId = 6, Name = "Фото6"
                },
                new Photo {
                    PhotoId = 7, Name = "Фото7"
                },
                new Photo {
                    PhotoId = 8, Name = "Фото8"
                },
                new Photo {
                    PhotoId = 9, Name = "Фото9"
                },
                new Photo {
                    PhotoId = 10, Name = "Фото10"
                },
                new Photo {
                    PhotoId = 11, Name = "Фото11"
                },
            });
            PhotoController controller = new PhotoController(mock.Object);

            controller.pageSize = 9;

            // Действие (act)
            PhotosListViewModel result = (PhotosListViewModel)controller.List(null, 2).Model;

            // Утверждение
            List <Photo> photos = result.Photos.ToList();

            Assert.IsTrue(photos.Count == 2);
            Assert.AreEqual(photos[0].Name, "Фото12");
            Assert.AreEqual(photos[1].Name, "Фото13");
        }
示例#5
0
        public PhotosListPage(Citizen citizen)
        {
            InitializeComponent();
            Title = citizen.Name;

            _viewModel         = BindingContext as PhotosListViewModel;
            _viewModel.Citizen = citizen;

            _photosListView.ItemTapped += (sender, e) => {
                Device.OpenUri(new Uri((e.Item as Photo).Url));
            };
        }
示例#6
0
        public ViewResult List(string category, int page = 1)
        {
            PhotosListViewModel model = new PhotosListViewModel
            {
                Photos = repository.Photos
                         .Where(p => category == null || p.Category == category)
                         .OrderBy(photo => photo.PhotoId)
                         .Skip((page - 1) * pageSize)
                         .Take(pageSize),
                PagingInfo = new PagingInfo
                {
                    CurrentPage  = page,
                    ItemsPerPage = pageSize,
                    TotalItems   = category == null?
                                   repository.Photos.Count() :
                                       repository.Photos.Where(photo => photo.Category == category).Count()
                },
                CurrentCategory = category
            };

            return(View(model));
        }