using Application.Domain.Entities; using Application.Models; using Infrastructure.Application; using Infrastructure.Data; using Infrastructure.Extensions; using Infrastructure.Web.Mvc; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Linq; namespace UserCenter.Areas.Admin.Controllers { [Authorize] [Area(nameof(Admin))] public class PermissionController : CrudController, EditPermissionModel, EditPermissionModel> { private readonly AjaxController _ajax; public PermissionController(IRepository repo, AjaxController ajax) : base(repo) { this._ajax = ajax; } public override IQueryable Include(IQueryable query) { return query.Include(o => o.Category).ThenInclude(o => o.Parent); } public override IQueryable Query(PagedListModel model, IQueryable query) { return query.OrderBy(o => o.CategoryId).ThenBy(o => o.Name); } public override void ToEditModel(Permission entity, EditPermissionModel model) { this.ViewData.SelectList(o => model.CategoryId, () => this._ajax.GetPermissionCategorySelectList(model.CategoryId), model.CategoryId.HasValue); } public override void ToDisplayModel(Permission entity, EditPermissionModel model) { this.ViewData.Add(entity.CategoryId, entity.Category.Name); } } }