ViewModelBase.cs 1.51 KB
using CommunityToolkit.Mvvm.ComponentModel;
using HHECS.RobotTool.Model;
using Microsoft.Extensions.DependencyInjection;
using RobotTool;
using System.Windows;

namespace HHECS.RobotTool.ViewModel
{
    public partial class ViewModelBase : ObservableObject
    {
        [ObservableProperty]
        private int pageIndex = 1;

        [ObservableProperty]
        private long maxPage;

        [ObservableProperty]
        private int pageSize = 30;

        [ObservableProperty]
        private Dictionary<string, Visibility> btnPairs = new Dictionary<string, Visibility>();

        protected IFreeSql _freeSql;

        protected User User => App.User;

        public ViewModelBase()
        {
            _freeSql = App.Current.Services.GetService<IFreeSql>()!;
        }

        protected void InitialBtns(string viewCode)
        {
            var roleIds = _freeSql.Queryable<UserRole>().Where(x => x.Id == App.User.Id).ToList(x => x.Id);
            var permissionsIds = _freeSql.Queryable<RolePermission>().Where(x => roleIds.Contains(x.RoleId)).ToList(x => x.PermissionId);
            var parentId = _freeSql.Queryable<Permission>().Where(x => x.Code == viewCode).First(x => x.Id);
            var permissions = _freeSql.Queryable<Permission>().Where(x => x.ParentId == parentId && x.PermissionType == PermissionType.Button).ToList();
            BtnPairs = permissions.ToLookup(x => x.Code).ToDictionary(x => x.First().Code, y => permissionsIds.Contains(y.First().Id) ? Visibility.Visible : Visibility.Collapsed);
        }
    }
}