示例#1
0
        public UserRightTreeView ToTreeView(List <UserRightOfficeDTO> rights)
        {
            UserRightTreeView userRightTreeView = new UserRightTreeView();

            //он все равно один
            userRightTreeView.UserId = rights.Where(d => d.UserId != null).Select(d => d.UserId).FirstOrDefault();
            //равно как и офис
            userRightTreeView.OfficeId = rights.Where(d => d.OfficeId != null).Select(d => d.OfficeId).FirstOrDefault();
            string office = rights.Where(d => d.OfficeShortName != null).Select(d => d.OfficeShortName).FirstOrDefault();

            userRightTreeView.Office = new OfficeDTO
            {
                Id        = userRightTreeView.OfficeId.GetValueOrDefault(),
                ShortName = office
            };

            List <RightControllerBoxDTO> boxes = rights.Select(d => new RightControllerBoxDTO
            {
                Id       = d.BoxId,
                Name     = d.BoxName,
                LongName = d.BoxLongName
            }).Distinct().ToList();

            foreach (var box in boxes)
            {
                List <RightControllerDTO> controllers = rights.Where(d => d.BoxId == box.Id)
                                                        .Where(d => d.BoxId != null)
                                                        .Select(d => new RightControllerDTO
                {
                    Id       = d.ControllerId.GetValueOrDefault(),
                    Name     = d.ControllerName,
                    LongName = d.ControllerLongName
                }).Distinct().ToList();
                foreach (var controller in controllers)
                {
                    List <RightControllerActionDTO> actions = rights.Where(d => d.ControllerId == controller.Id)
                                                              .Select(d => new RightControllerActionDTO
                    {
                        Id       = d.ActionId.GetValueOrDefault(),
                        Name     = d.ActionName,
                        LongName = d.ActionLongName,
                        Value    = d.Value.GetValueOrDefault()
                    }).Distinct().ToList();
                    controller.Actions = actions;
                }
                box.Controllers = controllers;
            }

            userRightTreeView.Boxes = boxes;
            return(userRightTreeView);
        }
示例#2
0
        public IHttpActionResult PutUserRights(string userId, int officeId, UserRightTreeView tree)
        {
            UnitOfWork unitOfWork = new UnitOfWork(factory);

            SqlParameter pUserIdIn = new SqlParameter()
            {
                DbType        = System.Data.DbType.String,
                Value         = userId,
                ParameterName = "@UserId"
            };
            SqlParameter pOfficeIdIn = new SqlParameter()
            {
                DbType        = System.Data.DbType.Int32,
                Value         = officeId,
                ParameterName = "@OfficeId"
            };

            IEnumerable <int> actionIds = new List <int>();

            if (tree.Boxes != null)
            {
                actionIds = tree.Boxes.SelectMany(d => d.Controllers.SelectMany(c => c.Actions.Where(g => g.Value == true).Select(a => a.Id)));
            }
            DataTable dataTable = new DataTable();

            dataTable.Clear();
            dataTable.Columns.Add("ActionId");

            foreach (var actionId in actionIds)
            {
                DataRow row = dataTable.NewRow();
                row["ActionId"] = actionId;
                dataTable.Rows.Add(row);
            }
            SqlParameter actions = new SqlParameter
            {
                ParameterName = "@Actions",
                TypeName      = "ut_MaskRight",
                Value         = dataTable,
                SqlDbType     = SqlDbType.Structured
            };

            List <UserRightOfficeDTO> rights =
                unitOfWork.SQLQuery <UserRightOfficeDTO>("exec UpdateAspNetUserRights @UserId, @OfficeId, @Actions", pUserIdIn, pOfficeIdIn, actions).ToList();

            return(Ok(ToTreeView(rights)));
        }