public async Task NextSong(string sessionId, bool fromPlay) { if (SessionHandler.IsValidSession(sessionId)) { QueueModel myQueue = SessionHandler.GetQueue(sessionId); PlayerModel myPlayer = SessionHandler.GetPlayer(sessionId); if (myQueue.Queue.Count > 0) { QueueItemModel next = myQueue.Queue[0]; myQueue.PopFromQueue(); myPlayer.VideoId = next.Video.VideoId; myPlayer.VideoName = next.Video.Name; myPlayer.TotalSeconds = 0; myPlayer.Start(); if (fromPlay) { await Clients.Group(sessionId).SendAsync("Play", myPlayer.GetVideoDetails()); } else { await Clients.Group(sessionId).SendAsync("NextSong", myPlayer.GetVideoDetails()); } } else { await DisposePlayer(sessionId); } } }