Example #1
0
        /// <summary>
        /// Заполнение словаря параметров resolveContext значениями идентификаторов группы, пользователя, роли
        /// </summary>
        public void FillResolveContext(SessionContext sessionContext, BaseResolveContext resolveContext, Options options)
        {
            // Для повышения быстродействия значения идентификаторов можно закэшировать
            var           userId        = sessionContext.UserInfo.EmployeeId;
            var           unit          = sessionContext.UserInfo.Employee.Unit;
            var           unitId        = sessionContext.ObjectContext.GetObjectRef <StaffUnit>(unit).Id;
            StaffEmployee staffEmployee = sessionContext.ObjectContext.GetObject <StaffEmployee>(userId);
            IStaffService staffService  = sessionContext.ObjectContext.GetService <IStaffService>();
            StringBuilder roleIdList    = new StringBuilder();
            StringBuilder groupIdList   = new StringBuilder();

            foreach (StaffGroup group in staffService.FindEmployeeGroups(staffEmployee))
            {
                var groupId = sessionContext.ObjectContext.GetObjectRef <StaffGroup>(group).Id;
                groupIdList.Append(string.Concat(groupId, ";"));
            }
            foreach (StaffRole role in staffService.FindEmployeeRoles(staffEmployee))
            {
                var roleId = sessionContext.ObjectContext.GetObjectRef <StaffRole>(role).Id;
                roleIdList.Append(string.Concat(roleId, ";"));
            }

            resolveContext.Parameters.Add(Constants.ConditionTypes.UnitConditionType, unitId.ToString());
            resolveContext.Parameters.Add(Constants.ConditionTypes.RolesConditionType, roleIdList.ToString());
            resolveContext.Parameters.Add(Constants.ConditionTypes.GroupsConditionType, groupIdList.ToString());
        }