public async Task <GalleryPagedItemsList> GetGalleryItemsPagedAsync(int pageNumber, int pageSize) { var galleryPagedItemsList = new GalleryPagedItemsList(pageNumber, pageSize); using (NpgsqlConnection connection = new NpgsqlConnection(base.connectionString)) { string sql = @"SELECT COUNT(1) OVER() AS ""ResultsCount"", ""Id"", ""ImageId"", ""SmallPreviewFileId"", ""ArticleId"", ""Title"", ""Description"", ""Timestamp"" FROM ""Gallery"" LIMIT :PageSize OFFSET(:PageNumber - 1) * :PageSize; "; using (NpgsqlCommand command = new NpgsqlCommand(sql, connection)) { command.Parameters.AddWithValue("PageNumber", pageNumber); command.Parameters.AddWithValue("PageSize", pageSize); await connection.OpenAsync(); using (NpgsqlDataReader dataReader = await command.ExecuteReaderAsync()) { while (dataReader.Read()) { if (galleryPagedItemsList.TotalResultsCount == 0) { galleryPagedItemsList.TotalResultsCount = Convert.ToInt32(dataReader["ResultsCount"]); } var galleryItem = new GalleryItem(dataReader); galleryPagedItemsList.AddItem(galleryItem); } } } } return(galleryPagedItemsList); }
public PhotoGalleryViewModel(GalleryPagedItemsList galleryPagedItemsList) : this(galleryPagedItemsList.Items) { this.TotalPagesCount = galleryPagedItemsList.TotalPagesCount; this.PageNumber = galleryPagedItemsList.PageNumber; }