using Microsoft.Data.SqlClient; namespace Library.Models; public class RepositoryPageModel : BasePageModel { public BookListData Books { get; } = new( ); public CategoryItemData CategoryData { init; get; } = null!; public List CategoryPath { init; get; } = new( ); public PagingData PagingData { init; get; } = null!; public RepositoryPageModel( SqlConnection? db , int category_index , int page_index ) : base( db ) { CategoryData = LookupCategoryData( category_index ); BuildCategoryPath( CategoryTree.FindCategory( CategoryData.ParentID ) ); Books.LoadCategory( db! , CategoryData.ID , page_index , 20 ); int books_in_category = BookListData.GetCategoryCount( db! , category_index ); PagingData = new PagingData( "/Repository/" + category_index + "?page=" , page_index , books_in_category , 20 ); } private CategoryItemData LookupCategoryData( int category_index ) { CategoryItemData? category_data = CategoryTree.FindCategory( category_index ); if ( category_data != null ) return category_data!; return CategoryTree.FindCategory( CategoryTree.GetRootID( ) )!; } private void BuildCategoryPath( CategoryItemData? item ) { if ( item == null ) return; CategoryItemData? parent_item = CategoryTree.FindCategory( item!.ParentID ); if ( parent_item != null ) BuildCategoryPath( parent_item ); CategoryPath.Add( item! ); } }