public Collection<TimelineShortcut> GetUserFeatured(string guid)
{
return ApiOperation<Collection<TimelineShortcut>>(delegate(User user, Storage storage)
{
Guid userGuid;
// If GUID is not given then get supervisor's GUID. Otherwise parse the given GUID.
if (guid.Equals("default"))
{
string aps = ConfigurationManager.AppSettings["FeaturedTimelinesSupervisorGuid"];
userGuid = String.IsNullOrEmpty(aps) ? Guid.Empty : Guid.Parse(aps);
}
else if (!Guid.TryParse(guid, out userGuid))
{
return null;
}
var cacheKey = string.Format(CultureInfo.InvariantCulture, "UserFeatured - {0}", userGuid);
if (Cache.Contains(cacheKey))
{
return (Collection<TimelineShortcut>)Cache.Get(cacheKey);
}
var triple = storage.GetTriplet(String.Format("czusr:{0}", userGuid), "czpred:featured").FirstOrDefault();
if (triple == null)
return null;
var elements = new Collection<TimelineShortcut>();
foreach (var t in triple.Objects)
{
var objName = TripleName.Parse(t.Object);
if (objName.Prefix == "cztimeline")
{
var g = new Guid(objName.Name);
var timeline = storage.Timelines.Where(x => x.Id == g)
.Include("Collection")
.Include("Collection.User")
.Include("Collection.SuperCollection")
.Include("Exhibits")
.Include("Exhibits.ContentItems")
.FirstOrDefault();
if (timeline != null)
elements.Add(storage.GetTimelineShortcut(timeline));
}
}
Cache.Add(cacheKey, elements);
return elements;
});
}