SysRoleApp.cs 2.84 KB
using Infrastructure;
using System;
using System.Collections.Generic;
using System.Linq;
using WebRepository;

namespace WebApp
{
    public class SysRoleApp : WebApp<SysRole>
    {
        private SysRevelanceApp _revelanceApp;

        private IAuth _auth;

        public SysRoleApp(IUnitWork unitWork, IRepository<SysRole> repository,
            SysRevelanceApp app, IAuth auth) : base(unitWork, repository)
        {
            _revelanceApp = app;
            _auth = auth;
        }

        public SysRoleApp SetLoginInfo(LoginInfo loginInfo)
        {
            Repository._loginInfo = loginInfo;
            return this;
        }

        /// <summary>
        /// 加载当前登录用户可访问的一个部门及子部门全部角色
        /// </summary>
        public TableData Load(PageReq pageRequest)
        {
            var roles = UnitWork.Find<SysRole>(exp:null)
                .OrderBy(u => u.Name)
                .Skip((pageRequest.page - 1) * pageRequest.limit)
                .Take(pageRequest.limit);

            var records = Repository.GetCount();

            var roleViews = roles.MapToList<SysRoleView>();

            return new TableData
            {
                count = records,
                data = roleViews,
            };
        }

        /// <summary>
        /// 加载角色的所有机构
        /// </summary>
        public IEnumerable<SysDept> LoadByRole(int roleId)
        {
            var result = from userorg in UnitWork.Find<SysRelevance>(null)
                         join org in UnitWork.Find<SysDept>(null) on userorg.SecondId equals org.Id
                         where userorg.FirstId == roleId && userorg.RelKey == Define.ROLEORG
                         select org;
            return result;
        }


        public void Add(SysRoleView obj)
        {
            if (UnitWork.IsExist<SysRole>(u => u.Name == obj.Name))
            {
                throw new Exception("角色已存在");
            }
            SysRole role = obj;
            role.CreateTime = DateTime.Now;
            role.IsAssignModule = false;
            Repository.Add(role);
            obj.Id = role.Id;   //要把保存后的ID存入view
        }

        public void Update(SysRoleView obj)
        {
            SysRole role = obj;
            SysRole sysRole = Repository.FindSingle(u => u.Id == obj.Id);
            sysRole.Name = role.Name;
            sysRole.Status = role.Status;
            sysRole.UpdateBy = Repository._loginInfo.Account;
            sysRole.UpdateTime = DateTime.Now;
            Repository.Update(sysRole);
            //Repository.Update(u => u.Id == obj.Id, u => new SysRole
            //{
            //    Name = role.Name,
            //    Status = role.Status,
            //    UpdateBy = Repository._loginInfo.Account,
            //    UpdateTime = DateTime.Now
            //});
        }
    }
}