public void GrantStructurePermissions(NWPlayer player, Guid pcBaseStructureID, params StructurePermission[] permissions)
        {
            var dbPermission = _data.GetAll <PCBaseStructurePermission>().SingleOrDefault(x => x.PCBaseStructureID == pcBaseStructureID && x.PlayerID == player.GlobalID);
            var action       = DatabaseActionType.Update;

            if (dbPermission == null)
            {
                dbPermission = new PCBaseStructurePermission
                {
                    PCBaseStructureID = pcBaseStructureID,
                    PlayerID          = player.GlobalID
                };
                action = DatabaseActionType.Insert;
            }

            foreach (var permission in permissions)
            {
                switch (permission)
                {
                case StructurePermission.CanPlaceEditStructures:
                    dbPermission.CanPlaceEditStructures = true;
                    break;

                case StructurePermission.CanAccessStructureInventory:
                    dbPermission.CanAccessStructureInventory = true;
                    break;

                case StructurePermission.CanEnterBuilding:
                    dbPermission.CanEnterBuilding = true;
                    break;

                case StructurePermission.CanRetrieveStructures:
                    dbPermission.CanRetrieveStructures = true;
                    break;

                case StructurePermission.CanAdjustPermissions:
                    dbPermission.CanAdjustPermissions = true;
                    break;

                case StructurePermission.CanRenameStructures:
                    dbPermission.CanRenameStructures = true;
                    break;

                case StructurePermission.CanEditPrimaryResidence:
                    dbPermission.CanEditPrimaryResidence = true;
                    break;

                case StructurePermission.CanRemovePrimaryResidence:
                    dbPermission.CanRemovePrimaryResidence = true;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            _data.SubmitDataChange(dbPermission, action);
        }
        private void TogglePermission(NWPlayer player, StructurePermission permission)
        {
            var data         = _base.GetPlayerTempData(GetPC());
            var dbPermission = _data.SingleOrDefault <PCBaseStructurePermission>(x => x.PlayerID == player.GlobalID && x.PCBaseStructureID == data.StructureID);
            var action       = DatabaseActionType.Update;

            if (dbPermission == null)
            {
                dbPermission = new PCBaseStructurePermission()
                {
                    PCBaseStructureID = data.StructureID,
                    PlayerID          = player.GlobalID
                };
                action = DatabaseActionType.Insert;
            }

            switch (permission)
            {
            case StructurePermission.CanPlaceEditStructures:
                dbPermission.CanPlaceEditStructures = !dbPermission.CanPlaceEditStructures;
                break;

            case StructurePermission.CanAccessStructureInventory:
                dbPermission.CanAccessStructureInventory = !dbPermission.CanAccessStructureInventory;
                break;

            case StructurePermission.CanEnterBuilding:
                dbPermission.CanEnterBuilding = !dbPermission.CanEnterBuilding;
                break;

            case StructurePermission.CanAdjustPermissions:
                dbPermission.CanAdjustPermissions = !dbPermission.CanAdjustPermissions;
                break;

            case StructurePermission.CanRetrieveStructures:
                dbPermission.CanRetrieveStructures = !dbPermission.CanRetrieveStructures;
                break;

            case StructurePermission.CanRenameStructures:
                dbPermission.CanRenameStructures = !dbPermission.CanRenameStructures;
                break;

            case StructurePermission.CanEditPrimaryResidence:
                dbPermission.CanEditPrimaryResidence = !dbPermission.CanEditPrimaryResidence;
                break;

            case StructurePermission.CanRemovePrimaryResidence:
                dbPermission.CanRemovePrimaryResidence = !dbPermission.CanRemovePrimaryResidence;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(permission), permission, null);
            }

            _data.SubmitDataChange(dbPermission, action);
        }
        public void GetByID_OneItem_ReturnsPCBaseStructurePermission()
        {
            // Arrange
            var id = Guid.NewGuid();
            PCBaseStructurePermission entity = new PCBaseStructurePermission {
                ID = id
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCBaseStructurePermission>(entity));

            // Assert
            Assert.AreNotSame(entity, _cache.GetByID(id));
        }
        public void GetByID_TwoItems_ReturnsCorrectObject()
        {
            // Arrange
            var id1 = Guid.NewGuid();
            var id2 = Guid.NewGuid();
            PCBaseStructurePermission entity1 = new PCBaseStructurePermission {
                ID = id1
            };
            PCBaseStructurePermission entity2 = new PCBaseStructurePermission {
                ID = id2
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCBaseStructurePermission>(entity1));
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCBaseStructurePermission>(entity2));

            // Assert
            Assert.AreNotSame(entity1, _cache.GetByID(id1));
            Assert.AreNotSame(entity2, _cache.GetByID(id2));
        }
        public void GetByID_RemovedItem_ReturnsCorrectObject()
        {
            // Arrange
            var id1 = Guid.NewGuid();
            var id2 = Guid.NewGuid();
            PCBaseStructurePermission entity1 = new PCBaseStructurePermission {
                ID = id1
            };
            PCBaseStructurePermission entity2 = new PCBaseStructurePermission {
                ID = id2
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCBaseStructurePermission>(entity1));
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCBaseStructurePermission>(entity2));
            MessageHub.Instance.Publish(new OnCacheObjectDeleted <PCBaseStructurePermission>(entity1));

            // Assert
            Assert.Throws <KeyNotFoundException>(() => { _cache.GetByID(id1); });
            Assert.AreNotSame(entity2, _cache.GetByID(id2));
        }
        public void GetAllByPlayerID_ThreeItems_ShouldReturnSameItems()
        {
            // Arrange
            var playerID = Guid.NewGuid();
            var id1      = Guid.NewGuid();
            var id2      = Guid.NewGuid();
            var id3      = Guid.NewGuid();
            var id4      = Guid.NewGuid();
            PCBaseStructurePermission entity1 = new PCBaseStructurePermission {
                ID = id1, PlayerID = playerID
            };
            PCBaseStructurePermission entity2 = new PCBaseStructurePermission {
                ID = id2, PlayerID = playerID
            };
            PCBaseStructurePermission entity3 = new PCBaseStructurePermission {
                ID = id3, PlayerID = playerID
            };
            PCBaseStructurePermission entity4 = new PCBaseStructurePermission {
                ID = id4, PlayerID = playerID
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCBaseStructurePermission>(entity1));
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCBaseStructurePermission>(entity2));
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCBaseStructurePermission>(entity3));
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCBaseStructurePermission>(entity4));

            MessageHub.Instance.Publish(new OnCacheObjectDeleted <PCBaseStructurePermission>(entity2));

            // Assert
            var results = _cache.GetAllByPlayerID(playerID).ToList();

            Assert.AreEqual(3, results.Count);
            Assert.AreEqual(entity1.ID, results.ElementAt(0).ID);
            Assert.AreEqual(entity3.ID, results.ElementAt(1).ID);
            Assert.AreEqual(entity4.ID, results.ElementAt(2).ID);
        }
        private void TogglePermission(Guid playerID, StructurePermission permission, bool isPublicPermission)
        {
            var data         = BaseService.GetPlayerTempData(GetPC());
            var dbPermission = isPublicPermission ?
                               DataService.SingleOrDefault <PCBaseStructurePermission>(x => x.PCBaseStructureID == data.StructureID &&
                                                                                       x.IsPublicPermission) :
                               DataService.SingleOrDefault <PCBaseStructurePermission>(x => x.PlayerID == playerID &&
                                                                                       x.PCBaseStructureID == data.StructureID &&
                                                                                       !x.IsPublicPermission);
            var action = DatabaseActionType.Update;

            if (dbPermission == null)
            {
                dbPermission = new PCBaseStructurePermission()
                {
                    PCBaseStructureID  = data.StructureID,
                    PlayerID           = playerID,
                    IsPublicPermission = isPublicPermission
                };
                action = DatabaseActionType.Insert;
            }

            switch (permission)
            {
            case StructurePermission.CanPlaceEditStructures:
                dbPermission.CanPlaceEditStructures = !dbPermission.CanPlaceEditStructures;
                break;

            case StructurePermission.CanAccessStructureInventory:
                dbPermission.CanAccessStructureInventory = !dbPermission.CanAccessStructureInventory;
                break;

            case StructurePermission.CanEnterBuilding:
                dbPermission.CanEnterBuilding = !dbPermission.CanEnterBuilding;
                break;

            case StructurePermission.CanAdjustPermissions:
                dbPermission.CanAdjustPermissions = !dbPermission.CanAdjustPermissions;
                break;

            case StructurePermission.CanRetrieveStructures:
                dbPermission.CanRetrieveStructures = !dbPermission.CanRetrieveStructures;
                break;

            case StructurePermission.CanRenameStructures:
                dbPermission.CanRenameStructures = !dbPermission.CanRenameStructures;
                break;

            case StructurePermission.CanEditPrimaryResidence:
                dbPermission.CanEditPrimaryResidence = !dbPermission.CanEditPrimaryResidence;
                break;

            case StructurePermission.CanRemovePrimaryResidence:
                dbPermission.CanRemovePrimaryResidence = !dbPermission.CanRemovePrimaryResidence;
                break;

            case StructurePermission.CanChangeStructureMode:
                dbPermission.CanChangeStructureMode = !dbPermission.CanChangeStructureMode;
                break;

            case StructurePermission.CanAdjustPublicPermissions:
                dbPermission.CanAdjustPublicPermissions = !dbPermission.CanAdjustPublicPermissions;
                break;

            case StructurePermission.CanFlyStarship:
                dbPermission.CanFlyStarship = !dbPermission.CanFlyStarship;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(permission), permission, null);
            }

            DataService.SubmitDataChange(dbPermission, action);
        }
示例#8
0
        public static void GrantStructurePermissions(NWPlayer player, Guid pcBaseStructureID, params StructurePermission[] permissions)
        {
            var dbPermission = DataService.PCBaseStructurePermission.GetPlayerPrivatePermissionOrDefault(player.GlobalID, pcBaseStructureID);
            var action       = DatabaseActionType.Update;

            if (dbPermission == null)
            {
                dbPermission = new PCBaseStructurePermission
                {
                    PCBaseStructureID = pcBaseStructureID,
                    PlayerID          = player.GlobalID
                };
                action = DatabaseActionType.Insert;
            }

            foreach (var permission in permissions)
            {
                switch (permission)
                {
                case StructurePermission.CanPlaceEditStructures:
                    dbPermission.CanPlaceEditStructures = true;
                    break;

                case StructurePermission.CanAccessStructureInventory:
                    dbPermission.CanAccessStructureInventory = true;
                    break;

                case StructurePermission.CanEnterBuilding:
                    dbPermission.CanEnterBuilding = true;
                    break;

                case StructurePermission.CanRetrieveStructures:
                    dbPermission.CanRetrieveStructures = true;
                    break;

                case StructurePermission.CanAdjustPermissions:
                    dbPermission.CanAdjustPermissions = true;
                    break;

                case StructurePermission.CanRenameStructures:
                    dbPermission.CanRenameStructures = true;
                    break;

                case StructurePermission.CanEditPrimaryResidence:
                    dbPermission.CanEditPrimaryResidence = true;
                    break;

                case StructurePermission.CanRemovePrimaryResidence:
                    dbPermission.CanRemovePrimaryResidence = true;
                    break;

                case StructurePermission.CanChangeStructureMode:
                    dbPermission.CanChangeStructureMode = true;
                    break;

                case StructurePermission.CanAdjustPublicPermissions:
                    dbPermission.CanAdjustPublicPermissions = true;
                    break;

                case StructurePermission.CanFlyStarship:
                    dbPermission.CanFlyStarship = true;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            DataService.SubmitDataChange(dbPermission, action);
        }