using System.Linq; using Application.Domain.Entities; using Application.Models; using Infrastructure.Data; using Infrastructure.Extensions; using Infrastructure.Web; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace StudyCenter.Controllers { public class CourseController : BaseController { private readonly IRepository _courseCategoryRepo; private readonly IRepository _courseRepo; public CourseController(IRepository courseCategoryRepo, IRepository courseRepo) { this._courseCategoryRepo = courseCategoryRepo; this._courseRepo = courseRepo; } public IActionResult Index(CourseModel model) { var categoyies = this._courseCategoryRepo.ReadOnlyTable().Include(o => o.Parent).ToList(); model.Categories = categoyies; var query = this._courseRepo.ReadOnlyTable(); if (model.CategoryId.HasValue) { var category = categoyies.FirstOrDefault(o => o.Id == model.CategoryId.Value); query = query.Where(o => o.Category.Path.StartsWith(category.Path)); } query = query.OrderBy(o => o.Category.DisplayOrder) .ThenBy(o => o.Category.Number) .ThenBy(o => o.DisplayOrder) .ThenBy(o => o.Number); model.TotalCount = query.Count(); model.List = query.Paged(model.PageIndex, model.PageSize); foreach (var item in model.List) { item.Category = categoyies.FirstOrDefault(o => o.Id == item.CategoryId); } return View(model); } } }