public void addEpisodeToPlayHistory(PodcastEpisodeModel episode)
{
if (episode == null)
{
Debug.WriteLine("Warning: Trying to add NULL episode to play history.");
return;
}
LastPlayedEpisodeModel existingItem = (from LastPlayedEpisodeModel e in PlayHistory
where e.LastPlayedEpisodeId == episode.EpisodeId
select e).FirstOrDefault();
// Episode is already in play history. Just update the timestamp instead of adding a duplicate one.
if (existingItem != null)
{
Debug.WriteLine("Found episode already in history. Updating timestamp. Name: " + episode.EpisodeName);
existingItem.TimeStamp = DateTime.Now;
existingItem.LastPlayedEpisodeId = episode.EpisodeId;
SubmitChanges();
return;
}
// Clean old history items (if we have more than 10).
if (PlayHistory.Count() >= 10)
{
var oldestHistoryItems = (from LastPlayedEpisodeModel e in PlayHistory
orderby e.TimeStamp descending
select e).Skip(10);
if (oldestHistoryItems != null)
{
Debug.WriteLine("Cleaning old episode from history.");
PlayHistory.DeleteAllOnSubmit(oldestHistoryItems);
}
}
// Add a new item.
LastPlayedEpisodeModel newHistoryItem = new LastPlayedEpisodeModel();
newHistoryItem.LastPlayedEpisodeId = episode.EpisodeId;
newHistoryItem.TimeStamp = DateTime.Now;
Debug.WriteLine("Inserting episode to history: " + episode.EpisodeName);
PlayHistory.InsertOnSubmit(newHistoryItem);
SubmitChanges();
}