Example #1
0
        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;
        }
Example #2
0
        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);
        }