コード例 #1
0
        public async Task UpdateSharedState([FromRoute] string anchorSetId, [FromBody] SharedStateDto newState)
        {
            SharedState existingSharedState = await GetSharedState(anchorSetId) ?? new SharedState()
            {
                Id                  = anchorSetId,
                CreatedAt           = _clock.GetCurrentInstant(),
                ToggledSensorPanels = new Dictionary <string, bool>()
            };

            existingSharedState.CurrentSelectedSpace = newState.CurrentSelectedSpace;
            existingSharedState.UpdatedAt            = _clock.GetCurrentInstant();
            existingSharedState.ToggledSensorPanels  = newState.ToggledSensorPanels;
            await _database.ReplaceOneAsync(s => s.Id == anchorSetId, existingSharedState);
        }
コード例 #2
0
        private async Task <AnchorSet> CreateOrUpdateAnchor(string anchorSetId, string anchorId, string mode, string deviceId = null)
        {
            AnchorSet anchorSet = await _anchorSetDatabaseHandler.FindOne(a => a.Id == anchorSetId);

            if (anchorSet == null)
            {
                throw new NoAnchorSetException(anchorSetId);
            }
            if (anchorSet.Anchors == null)
            {
                anchorSet.Anchors = new List <Anchor>();
            }

            Anchor existingAnchor = anchorSet.Anchors.FirstOrDefault(a => a.Id == anchorId);

            if (existingAnchor != null)
            {
                anchorSet.Anchors.Remove(existingAnchor);
            }

            if (mode == VisualizerModes.Virtual)
            {
                Anchor existingVirtualAnchor = anchorSet.Anchors.FirstOrDefault();
                anchorSet.Anchors.Remove(existingVirtualAnchor);
            }

            Anchor anchor = new Anchor()
            {
                Id = anchorId, Mode = mode, DeviceId = deviceId
            };

            anchorSet.Anchors.Add(anchor);
            await _anchorSetDatabaseHandler.ReplaceOneAsync(a => a.Id == anchorSetId, anchorSet);

            return(anchorSet);
        }