/// <summary> /// Gets the syndication feed. /// </summary> /// <param name="feed">The feed.</param> /// <param name="functionName">Name of the function.</param> /// <param name="resourceOfType">Type of resource.</param> /// <param name="feedParameterType">Type of the feed parameter.</param> /// <param name="isFeedForContact">Value indicating if its a feed for a contact.</param> /// <param name="id">The id.</param> /// <param name="name">The name.</param> /// <param name="lastName">The last name.</param> /// <param name="email">The email.</param> /// <param name="numberOfFeeds">The number of feeds.</param> /// <param name="date">The date.</param> /// <returns>The <see cref="SyndicationFeed"/>.</returns> private static SyndicationFeed GetSyndicationFeed( Feed feed, string functionName, Type resourceOfType, FeedParameterType feedParameterType, bool isFeedForContact, Guid id, string name, string lastName, string email, ushort numberOfFeeds, DateTime date) { if (string.IsNullOrEmpty(functionName)) { return(null); } MethodInfo getFeedMethod = null; SyndicationFeed syndicationFeed = null; List <Type> types = new List <Type>(); List <object> parameters = new List <object>(); switch (feedParameterType) { case FeedParameterType.Id: types = new List <Type> { id.GetType(), numberOfFeeds.GetType() }; parameters = new List <object> { id, numberOfFeeds }; break; case FeedParameterType.Email: types = new List <Type> { email.GetType(), numberOfFeeds.GetType() }; parameters = new List <object> { email, numberOfFeeds }; break; case FeedParameterType.Name: types = Utility.GetParameterTypeList(isFeedForContact, name, lastName, numberOfFeeds); parameters = Utility.GetParameterList(isFeedForContact, name, lastName, numberOfFeeds); break; case FeedParameterType.Date: types = new List <Type>() { numberOfFeeds.GetType(), date.GetType() }; parameters = new List <object> { numberOfFeeds, date }; break; } //GetFeedByDateAdded getFeedMethod = feed.GetType().GetMethod( functionName, BindingFlags.Public | BindingFlags.Instance, null, CallingConventions.Any, types.ToArray(), null ); if (null != getFeedMethod) { syndicationFeed = (SyndicationFeed)getFeedMethod.MakeGenericMethod(resourceOfType).Invoke(feed, parameters.ToArray()); } return(syndicationFeed); }
/// <summary> /// Retrieves the SyndicationFeed object based on the parameters passed. /// </summary> /// <param name="resourceType">Requested resource type.</param> /// <param name="feedsOfType">Resource Type for the Feeds.</param> /// <param name="feedParameterType">Parameter type for the feed.</param> /// <param name="id">Parameter id for the feed.</param> /// <param name="name">Parameter name for the feed.</param> /// <param name="lastName">Parameter lastName for the feed.</param> /// <param name="email">Parameter email for the feed.</param> /// <param name="numberOfFeeds">Parameter noOfFeeds which indicate number of feeds that are to be retrieved.</param> /// <param name="date">Parameter date indicates date on which resources have been added or modified</param> /// <param name="connectionString">Data storage connection string.</param> /// <returns>Syndication Feed object.</returns> internal static SyndicationFeed GetSyndicationFeed( string resourceType, FeedsOfType feedsOfType, FeedParameterType feedParameterType, Guid id, string name, string lastName, string email, ushort numberOfFeeds, DateTime date, string connectionString) { if (string.IsNullOrEmpty(resourceType)) { throw new ArgumentNullException("resourceType"); } try { Feed feed = Utility.Feed(connectionString); Type resourceOfType = null; resourceOfType = Zentity.Platform.Feed.GetResourceType(resourceType); if (null == resourceOfType) { throw new ArgumentException(Properties.Resources.SYNDICATION_EXCEPTION_ARGUMENTINVALID, "resourceType"); } SyndicationFeed syndicationFeed = null; //make generic call switch (feedsOfType) { case FeedsOfType.Author: if (!feed.IsResourceTypeIsOfTypeScholarlyWork(resourceType)) { throw new ArgumentException(Properties.Resources.SYNDICATION_EXCEPTION_ARGUMENTINVALID, "resourceType"); } syndicationFeed = Utility.GetSyndicationFeed( feed, "GetFeedByAuthor", resourceOfType, feedParameterType, true, id, name, lastName, email, numberOfFeeds, DateTime.MinValue); break; case FeedsOfType.Tag: syndicationFeed = Utility.GetSyndicationFeed( feed, "GetFeedByTag", resourceOfType, feedParameterType, false, id, name, lastName, email, numberOfFeeds, DateTime.MinValue); break; case FeedsOfType.Category: syndicationFeed = Utility.GetSyndicationFeed( feed, "GetFeedByCategory", resourceOfType, feedParameterType, false, id, name, lastName, email, numberOfFeeds, DateTime.MinValue); break; case FeedsOfType.Contributor: if (!feed.IsResourceTypeIsOfTypeScholarlyWork(resourceType)) { throw new ArgumentException(Properties.Resources.SYNDICATION_EXCEPTION_ARGUMENTINVALID, "resourceType"); } syndicationFeed = Utility.GetSyndicationFeed( feed, "GetFeedByContributor", resourceOfType, feedParameterType, true, id, name, lastName, email, numberOfFeeds, DateTime.MinValue); break; case FeedsOfType.DateAdded: syndicationFeed = Utility.GetSyndicationFeed( feed, "GetFeedByDateAdded", resourceOfType, feedParameterType, false, id, name, lastName, email, numberOfFeeds, date); break; case FeedsOfType.DateModified: syndicationFeed = Utility.GetSyndicationFeed( feed, "GetFeedByDateModified", resourceOfType, feedParameterType, false, id, name, lastName, email, numberOfFeeds, date); break; } return(syndicationFeed); } catch (TargetInvocationException ex) { if (null != ex.InnerException) { throw ex.InnerException; } throw; } catch (ArgumentNullException) { throw; } catch (ArgumentException) { throw; } }