/// <summary> /// Updates the DB episode. /// </summary> /// <param name="episode">The episode.</param> /// <param name="e">The db episode.</param> /// <exception cref="Uncas.PodCastPlayer.Repository.RepositoryException"></exception> private void UpdateDBEpisode( Episode episode, DBEpisode e) { e.Date = episode.Date; e.Description = episode.Description; e.DownloadedBytes = episode.DownloadedBytes; e.FileName = episode.FileName; e.FileSizeInBytes = episode.FileSizeInBytes; e.MediaUrl = episode.MediaUrl.ToString(); e.PendingDownload = episode.PendingDownload; e.Title = episode.Title; try { this.DB.Update <DBEpisode>(e); } catch (Exception ex) { // TODO: EXCEPTION: Unknown SubSonic exception throw new RepositoryException( "Error updating episode", ex); } }
/// <summary> /// Gets as model. /// </summary> /// <param name="episode">The episode.</param> /// <param name="podCasts">The pod casts.</param> /// <returns>The model episode.</returns> /// <exception cref="Uncas.PodCastPlayer.Repository.RepositoryException"></exception> public static Episode AsModel( this DBEpisode episode, IList <DBPodCast> podCasts) { Debug.Assert( podCasts != null, "Internal code assumes that there are pod casts!"); Debug.Assert( podCasts.Count > 0, "Internal code assumes that there are pod casts!"); if (podCasts == null || episode.MediaUrl == null) { throw new RepositoryException( InvalidDataText); } var podCast = podCasts.Where( pc => pc.PodCastId == episode.RefPodCastId) .SingleOrDefault(); if (podCast == null) { throw new RepositoryException( InvalidDataText); } Uri mediaUrl = null; try { mediaUrl = new Uri(episode.MediaUrl); } catch (UriFormatException ex) { throw new RepositoryException( InvalidDataText, ex); } return(Episode.ConstructEpisode( episode.EpisodeId, episode.Date, episode.Title, episode.Description, mediaUrl, podCast.AsModel(), true)); }
/// <summary> /// Gets as index item. /// </summary> /// <param name="episode">The episode.</param> /// <returns>The episode index item view model.</returns> public static EpisodeIndexItemViewModel AsIndexItem( this DBEpisode episode) { bool downloadCompleted = EpisodeMediaInfo.IsDownloadCompleted( episode.FileSizeInBytes, episode.DownloadedBytes); return(new EpisodeIndexItemViewModel( episode.Date, episode.EpisodeId, episode.Title, episode.PendingDownload, downloadCompleted)); }