示例#1
0
        public IEnumerable <OfficerModel> Page(string orgId, string ptId, string name, string code, int page, int size, out int count)
        {
            using (var officerHandler = new OfficerHandle(Repository))
                using (var userHandler = new UserHandle(Repository))
                    using (var orgHandler = new OrganizationHandle(Repository))
                        using (var ptpHandler = new PoliceTypeHandle(Repository))
                        {
                            var noDel = (short)DeleteStatus.No;
                            var query =
                                from officer in officerHandler.All(t => t.IsDel == noDel)
                                join useritem in userHandler.All(t => t.IsDel == noDel) on officer.UserId equals useritem.Id into usrs
                                from usr in usrs.DefaultIfEmpty(new User {
                            })
                                join org in orgHandler.All(t => t.IsDel == noDel) on officer.OrgId equals org.Id
                                join ptp in ptpHandler.All(t => t.IsDel == noDel) on officer.PtId equals ptp.Id
                                select new { officer = officer, usr = usr, org = org, ptp = ptp };

                            if (!string.IsNullOrWhiteSpace(name))
                            {
                                query = query.Where(t => t.officer.Name.Contains(name));
                            }

                            if (!string.IsNullOrWhiteSpace(code))
                            {
                                query = query.Where(t => t.officer.IdentyCode.Contains(code));
                            }

                            if (!string.IsNullOrWhiteSpace(ptId))
                            {
                                query = query.Where(t => t.officer.PtId == ptId);
                            }

                            if (!string.IsNullOrWhiteSpace(orgId))
                            {
                                query = query.Where(t => t.officer.OrgId == orgId);
                            }

                            if (string.IsNullOrWhiteSpace(orgId) && !User.IsSupperAdministrator)
                            {
                                orgId = User.Organization.Id;
                                query = query.Where(t => t.officer.OrgId == orgId);
                            }

                            count = query.Count();
                            var skipCount = (page - 1) * size;
                            var items     =
                                query.OrderByDescending(t => t.officer.SignupDate).Skip(skipCount).Take(size).ToArray()
                                .Select(t => new OfficerModel
                            {
                                officer = t.officer,
                                org     = t.org,
                                ptp     = t.ptp,
                                user    = t.usr
                            });
                            return(items);
                        }
        }
示例#2
0
        public IEnumerable <AccountModel> Page(string orgId, string roleId, int page, int size, out int count)
        {
            var noDel = (short)DeleteStatus.No;

            using (var userHandler = new UserHandle(Repository))
                using (var roleHandler = new RoleHandle(Repository))
                    using (var orgHandler = new OrganizationHandle(Repository))
                    {
                        var query =
                            from usr in userHandler.All(t => t.IsDel == noDel)
                            join ritem in roleHandler.All(t => t.IsDel == noDel) on usr.RoleId equals ritem.Id into rls
                            from role in rls.DefaultIfEmpty(new Role {
                        })
                            join orgitem in orgHandler.All(t => t.IsDel == noDel) on usr.OrgId equals orgitem.Id into orgs
                            from org in orgs.DefaultIfEmpty(new Organization {
                        })
                            select new { usr = usr, role = role, org = org };

                        var roleEmp = string.IsNullOrWhiteSpace(roleId);
                        if (!roleEmp)
                        {
                            query = query.Where(t => t.role.Id == roleId);
                        }

                        if (roleEmp && !User.IsSupperAdministrator)
                        {
                            orgId = string.IsNullOrWhiteSpace(orgId) ? User.Organization.Id : orgId;
                            query = query.Where(t => t.org.Pid == orgId);
                        }


                        count = query.Count();
                        var skipCount = (page - 1) * size;
                        return
                            (query.OrderBy(t => t.usr.SignupDate).Skip(skipCount).Take(size).ToArray().Select(t => new AccountModel
                        {
                            org = t.org,
                            role = t.role,
                            user = t.usr
                        }).ToArray());
                    }
        }
示例#3
0
        /// <summary>
        /// 使用用户名和密码获取用户内容
        /// </summary>
        /// <param name="userId">用户名</param>
        /// <param name="passwd">密码</param>
        /// <param name="user">返回的用户信息</param>
        /// <returns></returns>
        public AccountLoginStatus Signin(string userId, string passwd, out UserInfo user)
        {
            var userHandler    = new UserHandle(Repository);
            var roleHandler    = new RoleHandle(Repository);
            var officerHandler = new OfficerHandle(Repository);
            var orgHandler     = new OrganizationHandle(Repository);
            var featureHandler = new FeatureHandle(Repository);
            var menuHandler    = new MenuHandle(Repository);
            var isDel          = (short)DeleteStatus.No;
            var query          =
                from usr in userHandler.All(t => t.Account == userId && t.IsDel == isDel)
                join orgitem in orgHandler.All(t => t.IsDel == isDel) on usr.OrgId equals orgitem.Id into orgarr
                from org in orgarr.DefaultIfEmpty(new data.entity.Organization())
                join officeritem in officerHandler.All(t => t.IsDel == isDel) on usr.Id equals officeritem.UserId into officers
                from officer in officers.DefaultIfEmpty(new data.entity.Officer())
                join roleitem in roleHandler.All(t => t.IsDel == isDel) on usr.RoleId equals roleitem.Id into roles
                from role in roles.DefaultIfEmpty(new data.entity.Role())
                join fitem in featureHandler.All(t => t.IsDel == isDel) on role.Id equals fitem.RoleId into farr
                from feature in farr.DefaultIfEmpty(new data.entity.Feature())
                join mitem in menuHandler.All(t => t.IsDel == isDel) on feature.MenuId equals mitem.Id into marr
                from menu in marr.DefaultIfEmpty(new data.entity.Menu())
                select new { usr = usr, org = org, officer = officer, role = role, feature = feature, menu = menu };

            user =
                query
                .GroupBy(t => new { usr = t.usr, org = t.org, officer = t.officer, role = t.role })
                .ToArray()
                .Select(t => new UserInfo
            {
                User         = t.Key.usr,
                Officer      = t.Key.officer,
                Organization = t.Key.org,
                Role         = t.Key.role,
                Features     = t.Select(x => x.feature).Where(x => !string.IsNullOrWhiteSpace(x.MenuId)),
                Menus        = t.Select(x => x.menu).Where(x => !string.IsNullOrWhiteSpace(x.Title))
            })
                .FirstOrDefault();

            if (user == null)
            {
                return(AccountLoginStatus.UserNoExist);
            }

            if (user.User.Passwd != EscapePassword(userId, passwd))
            {
                return(AccountLoginStatus.PasswordError);
            }

            if (user.User.Status == (int)AccountStatus.Exception)
            {
                return(AccountLoginStatus.ExceptionAccount);
            }

            if (user.User.Status == (int)AccountStatus.Locked)
            {
                return(AccountLoginStatus.LockedAccount);
            }

            user.User.SigninStatus = (short)AccountSigninStatus.Online;
            if (null == userHandler.Modify(user.User, true))
            {
                return(AccountLoginStatus.Error);
            }

            return(AccountLoginStatus.Success);
        }