private void sendCommandToPlayout(PlayerCommand commandToSend, Playlist playlist = null)
        {
            try
            {
                PlayoutOutgoingCommand = commandToSend.TemplateData;

                if (playlist == null)
                {
                    _playlistCommands.Add(commandToSend.CommandID, 0);
                }
                else
                {
                    _playlistCommands.Add(commandToSend.CommandID, playlist.PlaylistID);
                }

                _lastCommandID = commandToSend.CommandID;

                _compTalker.Talk(commandToSend);
            }
            catch (Exception ex)
            { }
        }
 private void playlistAdded(Playlist playlist, System.Timers.Timer timer)
 {
     if (_playlistTimerRunning)
     {
         timer.Interval = 100;
         timer.Start();
     }
 }
        public static ObservableCollection<Playlist> GetPlaylists()
        {
            ObservableCollection<Playlist> playlists = new ObservableCollection<Playlist>();

            MySqlConnection cn = null;
            MySqlCommand cmd = null;
            MySqlDataReader rdr = null;
            DataTable tbl = null;

            try
            {
                cn = createConnectionMySql();

                String sql = "select * from playlists where playlisttype = '" + ConfigurationManager.AppSettings["DraftType"].ToString() + "' order by playlistname asc";

                cmd = new MySqlCommand(sql, cn);
                rdr = cmd.ExecuteReader();

                tbl = new DataTable();

                tbl.Load(rdr);

                rdr.Close();
                rdr.Dispose();

                Playlist playlist;

                foreach (DataRow row in tbl.Rows)
                {
                    playlist = new Playlist();

                    playlist.PlaylistID = Convert.ToInt16(row["playlistid"].ToString());
                    playlist.PlaylistName = row["playlistname"].ToString();

                    playlists.Add(playlist);
                }
            }
            finally
            {
                if (cmd != null) cmd.Dispose();
                if (tbl != null) tbl.Dispose();
                if (cn != null) cn.Close(); cn.Dispose();
            }

            return playlists;
        }
        protected void OnSendCommand(PlayerCommand command, Playlist playlist)
        {
            SendCommandEventHandler handler = SendCommandEvent;

            if (handler != null)
            {
                handler(command, playlist);
            }
        }
        private void nextPlaylistItem(Playlist playlist, bool forceRestart = false)
        {
            PlaylistItem playlistItem = null;

            try
            {
                if (playlist.TimerRunning == true || forceRestart) //MJF
                {
                    if (playlist.CurrentPlaylistItem >= playlist.PlaylistItems.Count)
                    {
                        playlist.CurrentPlaylistItem = 0;
                    }

                    playlistItem = playlist.PlaylistItems[playlist.CurrentPlaylistItem];

                    playlistItem.OnAir = false;

                    if (playlistItem.Enabled == false)
                    {
                        playlist.CurrentPlaylistItem += 1;
                        nextPlaylistItem(playlist);
                    }
                    else
                    {
                        playlistItem.XmlDataRows = DbConnection.GetPlaylistItemData(playlistItem);

                        if (playlistItem.XmlDataRows != null)
                        {
                            if (playlistItem.XmlDataRows.Count > 0) //check to see if there are any rows in this playlist item to show
                            {
                                if (playlistItem.CurrentRow >= playlistItem.XmlDataRows.Count) //at the end of this playlist item's data, go to the next item
                                {
                                    playlistItem.CurrentRow = 0;
                                    playlist.CurrentPlaylistItem += 1;
                                    nextPlaylistItem(playlist);
                                }
                                else
                                {
                                    PlayerCommand commandToSend = new PlayerCommand();

                                    commandToSend.Command = (DraftAdmin.PlayoutCommands.CommandType)Enum.Parse(typeof(DraftAdmin.PlayoutCommands.CommandType), "ShowPage");
                                    commandToSend.CommandID = Guid.NewGuid().ToString();
                                    commandToSend.Parameters = new List<CommandParameter>();
                                    commandToSend.Parameters.Add(new CommandParameter("TemplateName", playlistItem.Template));

                                    commandToSend.TemplateData = playlistItem.XmlDataRows[playlistItem.CurrentRow].GetXMLString();

                                    playlist.Timer.Interval = Convert.ToDouble((playlistItem.Duration * 1000));

                                    if (playlistItem.MergeDataNoTransitions)
                                    {
                                        commandToSend.Parameters.Add(new CommandParameter("MergeDataWithoutTransitions", "true"));

                                        OnSendCommandNoTransitions(commandToSend);

                                        //Debug.Print("Clock sent to PageEngine: " + DateTime.Now);

                                        if (playlist.TimerRunning)
                                        {
                                            playlist.Timer.Start();
                                        }
                                    }
                                    else
                                    {
                                        //don't send data to the playout for the prompter if it hasn't changed.  too many graphics causes the clock to choke
                                        if (playlistItem.Template.ToUpper() == "PROMPTER")
                                        {
                                            if (_lastTemplateData != commandToSend.TemplateData)
                                            {
                                                _lastTemplateData = commandToSend.TemplateData;
                                                OnSendCommand(commandToSend, playlist);
                                            }
                                            else
                                            {
                                                if (playlist.TimerRunning)
                                                {
                                                    playlist.Timer.Start();
                                                }
                                            }
                                        }
                                        else
                                        {
                                            OnSendCommand(commandToSend, playlist);
                                        }

                                        //Debug.Print(playlistItem.Template.ToString() + " sent to PageEngine");
                                    }

                                    //SelectedPlaylist.PlaylistItems[SelectedPlaylist.CurrentPlaylistItem].OnAir = true;

                                    //OnPropertyChanged("SelectedPlaylist.PlaylistItems");
                                    playlistItem.OnAir = true;

                                    playlistItem.CurrentRow += 1;
                                }

                            }
                            else
                            {
                                if (playlist.PlaylistItems.Count > 1)
                                {
                                    playlistItem.CurrentRow = 0;
                                    playlist.CurrentPlaylistItem += 1;
                                    nextPlaylistItem(playlist, forceRestart);
                                }
                            }

                        } //playlistItem.XmlDataRows != null

                    } //playlistItem.Enabled == false

                } //playlist.TimerRunning
            }
            catch (Exception ex)
            {
                if (playlistItem != null)
                {
                    playlistItem.CurrentRow = 0;
                }

                if (playlist != null)
                {
                    playlist.CurrentPlaylistItem += 1;

                    nextPlaylistItem(playlist);
                }
            }

            //OnPropertyChanged("SelectedPlaylist");
        }