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); }
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); }