private void ChangeSession(string name)
 {
     if (String.IsNullOrEmpty(name))
     {
         SelectedSession     = null;
         SessionName         = String.Empty;
         selectedSessionName = null;
         newSession          = true;
         IsRuleset           = false;
         SessionClips        = new ObservableCollection <AudioClip>();
         SessionClipsView    = CollectionViewSource.GetDefaultView(SessionClips);
         PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedSessionName)));
     }
     else
     {
         SelectedSession     = SessionsMgr.GetSessionCopy(name);
         originalSessionName = name;
         selectedSessionName = name;
         SessionName         = name;
         if (SelectedSession != null)
         {
             IsRuleset        = SelectedSession.IsRuleset;
             newSession       = false;
             SessionClips     = new ObservableCollection <AudioClip>(SelectedSession.SessionAudioClips);
             SessionClipsView = CollectionViewSource.GetDefaultView(SessionClips);
             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SessionNames)));
             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedSessionName)));
         }
     }
     UpdateAudioClips();
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SessionClips)));
 }
 private void MessageResponse(object sender, string e)
 {
     messageDialogWin.MessageResponse -= MessageResponse;
     if (e.Equals("Yes"))
     {
         SessionsMgr.DeleteSession(SelectedSession.SessionName);
         SessionsMgr.DeleteSession(SessionName);
         EventSystem.Publish(new SessionsInventoryChanged());
         PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SessionNames)));
     }
     messageDialogWin.Close();
 }
 public SessionsAdminViewModel()
 {
     if (SessionsMgr.GetSessionNames().Count > 0)
     {
         ChangeSession(SessionsMgr.GetSessionNames()[0]);
         selectedSessionName = SessionsMgr.GetSessionNames()[0];
         SessionName         = SelectedSessionName;
     }
     if (SelectedSession == null)
     {
         ChangeSession(null);
     }
     EventSystem.Subscribe <AudioClipsInventoryChanged>(OnAudioClipsInventoryChanged);
 }
 private void DeleteMessageResponse(object sender, string e)
 {
     messageDialogWin.MessageResponse -= DeleteMessageResponse;
     if (e.Equals("Yes"))
     {
         SessionsMgr.DeleteClipFromAllSessions(SelectedAudioClip.ClipId);
         AudioClipsMgr.DeleteAudioClip(SelectedAudioClip.Label, out string outcome);
         RefreshAudioClips();
         SelectedAudioClip = new AudioClip();
         newAudioClip      = true;
         AudioclipsView.Refresh();
         Reset();
         PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(AudioClips)));
         EventSystem.Publish(new AudioClipsInventoryChanged());
     }
     messageDialogWin.Close();
 }
        private void SaveSession(object obj)
        {
            MessageWin messageWin;
            var        msg = "Session saved.";
            int        ret;

            if (newSession)
            {
                ret = SessionsMgr.AddSession(SessionName, null);
                if (ret < 0)
                {
                    msg = ret == -1
                        ? "Error: Problem saving session to database." :
                          "Error: Session name already exists - please choose another name.";
                    messageWin = new MessageWin("Save Session", msg);
                    messageWin.Show();
                    return;
                }
                else
                {
                    SelectedSession = SessionsMgr.GetSessionCopy(SessionName);
                    msg             = "New session saved.";
                }
            }
            SelectedSession.IsRuleset = IsRuleset;
            string newSessionName = SessionName;

            SelectedSession.SessionName = SessionName;
            selectedSessionName         = SessionName;
            SelectedSession.SessionAudioClipsList.Clear();
            if (SessionClips != null)
            {
                foreach (var sessionClip in SessionClips)
                {
                    SelectedSession.SessionAudioClipsList.Add(sessionClip.ClipId);
                }
            }
            ret = SessionsMgr.UpdateSession(SelectedSession);
            if (ret > 0)
            {
                EventSystem.Publish(new SessionsInventoryChanged());
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SessionNames)));
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedSessionName)));
                ChangeSession(newSessionName);
                EventSystem.Publish(new SessionInventoryChanged()
                {
                    SessionName = newSessionName
                });
            }
            else if (ret == -1)
            {
                msg = "Error: Session name already exists - please choose another name.";
            }
            else if (ret == -2)
            {
                msg = "Error: Problem saving session to database.";
            }
            else
            {
                msg = "Error: Problem saving session audioClips to database.";
            }
            messageWin = new MessageWin("Save Session", msg);
            messageWin.Show();
        }