public async Task DeleteSession(string sessionId, ILogger log) { log.LogInformation("-> DeleteSession"); var selectedSession = CloudSessions.FirstOrDefault(s => s.SessionId == sessionId); if (selectedSession == null) { throw new ArgumentException($"Invalid sessionId {sessionId}"); } foreach (var clock in selectedSession.Clocks) { clock.IsClockRunning = false; clock.IsConfigDisabled = true; clock.IsNudgeDisabled = true; clock.IsPlayStopDisabled = true; clock.IsSelected = false; clock.ResetDisplay(); } // TODO Send notify-delete message // TODO Send delete message await DeleteFromStorage(SignalRHost.HostSessionKey, log); State = 2; }
public async Task <bool> Duplicate(string sessionId, ILogger log) { log.LogInformation("-> Duplicate"); var modelSession = CloudSessions .FirstOrDefault(s => s.SessionId == sessionId); if (modelSession == null) { throw new ArgumentException($"Invalid sessionId {sessionId}"); } var newSession = new SessionBase { BranchId = modelSession.BranchId, Clocks = new List <Clock>(), SessionId = Guid.NewGuid().ToString(), SessionName = $"{modelSession.SessionName} (copy)" }; foreach (var clock in modelSession.Clocks) { var duplicatedClock = new Clock(); duplicatedClock.Update(clock.Message, false); duplicatedClock.CurrentLabel = clock.Message.Label; newSession.Clocks.Add(duplicatedClock); } var success = await Save(newSession, SignalRHost.HostSessionKey, log); if (success) { CloudSessions.Add(newSession); } return(success); }