コード例 #1
0
ファイル: RoleService.cs プロジェクト: sumitvatsal/FoxSecT-A
        public RoleCreateResult EditRole(int id, string name, string description, string modifiedBy, bool active, int roleTypeId, IEnumerable <RoleBuildingDto> buildings, IEnumerable <int> permissionIds = null, IEnumerable <int> menuIds = null)
        {
            var result = new RoleCreateResult {
                ErrorCode = RoleServiceErrorCode.Ok
            };

            if (_roleRepository.FindAll().Where(x => !x.IsDeleted && x.Name == name && x.Id != id).Count() > 0)
            {
                result.ErrorCode = RoleServiceErrorCode.RoleAlreadyExists;
                return(result);
            }

            using (IUnitOfWork work = UnitOfWork.Begin())
            {
                Role role          = _roleRepository.FindById(id);
                var  logRoleEntity = new RoleEventEntity(role);

                role.Name        = name;
                role.Description = description;
                role.RoleTypeId  = roleTypeId;
                role.AssignPermissions(permissionIds.NullSafe());
                role.AssignMenues(menuIds.NullSafe());

                role.ModifiedLast = DateTime.Now;
                role.ModifiedBy   = modifiedBy;
                role.Active       = active;



                IFoxSecIdentity identity = CurrentUser.Get();
                var             e        = new RoleEditedEventArgs(role, identity.LoginName, identity.FirstName, identity.LastName, DateTime.Now);

                foreach (var building in buildings)
                {
                    if (building.IsChecked)
                    {
                        var roleBuilding =
                            role.RoleBuildings.Where(x => x.RoleId == id && x.BuildingId == building.BuildingId.Value).FirstOrDefault();
                        if (roleBuilding == null)
                        {
                            roleBuilding = DomainObjectFactory.CreateRoleBuilding();
                        }
                        roleBuilding.RoleId     = role.Id;
                        roleBuilding.BuildingId = building.BuildingId.Value;
                        roleBuilding.IsDeleted  = false;
                        role.RoleBuildings.Add(roleBuilding);
                    }
                    else
                    {
                        var roleBuilding =
                            role.RoleBuildings.Where(x => x.RoleId == id && x.BuildingId == building.BuildingId.Value).FirstOrDefault();
                        if (roleBuilding != null)
                        {
                            roleBuilding.IsDeleted = true;
                        }
                    }
                }


                work.Commit();

                e.SetNewRole(role);
                EventAggregator.GetEvent <RoleEditedEvent>().Publish(e);

                logRoleEntity.SetNewRole(role);
                _logService.CreateLog(CurrentUser.Get().Id, "web", flag, CurrentUser.Get().HostName, CurrentUser.Get().CompanyId,
                                      logRoleEntity.GetEditMessage());
                _conrtollerCreateService.CreateControllerUpdate(CurrentUser.Get().Id, id, UpdateParameter.UserRoleManagement, ControllerStatus.Created, "Active");
            }

            return(result);
        }
コード例 #2
0
ファイル: RoleService.cs プロジェクト: sumitvatsal/FoxSecT-A
        public RoleCreateResult CreateRole(string name, string description, string createdBy, bool active, int roleTypeId, IEnumerable <RoleBuildingDto> buildings, IEnumerable <int> permissionIds = null, IEnumerable <int> menuIds = null)
        {
            var result = new RoleCreateResult {
                ErrorCode = RoleServiceErrorCode.Ok
            };

            if (_roleRepository.FindByName(name).Count() != 0)
            {
                result.ErrorCode = RoleServiceErrorCode.RoleAlreadyExists;
                return(result);
            }

            using (IUnitOfWork work = UnitOfWork.Begin())
            {
                Role role = DomainObjectFactory.CreateRole();

                role.Name        = name;
                role.Description = description;
                role.RoleTypeId  = roleTypeId;

                role.AssignPermissions(permissionIds.NullSafe());
                role.AssignMenues(menuIds.NullSafe());

                role.ModifiedLast = DateTime.Now;
                role.ModifiedBy   = createdBy;
                role.Active       = active;
                role.IsDeleted    = false;
                role.StaticId     = -1;
                role.UserId       = CurrentUser.Get().Id;
                foreach (var building in buildings)
                {
                    if (building.IsChecked)
                    {
                        var roleBuilding = DomainObjectFactory.CreateRoleBuilding();
                        roleBuilding.RoleId     = role.Id;
                        roleBuilding.BuildingId = building.BuildingId.Value;
                        roleBuilding.IsDeleted  = false;
                        role.RoleBuildings.Add(roleBuilding);
                    }
                }

                _roleRepository.Add(role);

                work.Commit();

                IFoxSecIdentity identity = CurrentUser.Get();
                var             e        = new RoleCreatedEventArgs(role, identity.LoginName, identity.FirstName, identity.LastName, DateTime.Now);



                var logRoleEntity = new RoleEventEntity(_roleRepository.FindById(role.Id));

                _logService.CreateLog(CurrentUser.Get().Id, "web", flag, CurrentUser.Get().HostName, CurrentUser.Get().CompanyId,
                                      logRoleEntity.GetCreateMessage());
                // _controllerUpdateService.CreateControllerUpdate(CurrentUser.Get().Id, CurrentUser.Get().Id, UpdateParameter.UserStatusChanged, ControllerStatus.Created, "Active");
                EventAggregator.GetEvent <RoleCreatedEvent>().Publish(e);
                _conrtollerCreateService.CreateControllerUpdate(CurrentUser.Get().Id, CurrentUser.Get().Id, UpdateParameter.UserRoleManagement, ControllerStatus.Created, "Active");
            }

            return(result);
        }