private static void AddSermons(DBConnection dbCon, SermonSeries series) { string query = "SELECT * FROM sermons WHERE series = @seriesId "; var cmd = new MySqlCommand(query, dbCon.Connection); cmd.Parameters.AddWithValue("@seriesId", series.id); cmd.Prepare(); var reader = cmd.ExecuteReader(); while (reader.Read()) { var sermon = new Sermon(); sermon.id = reader.GetInt32(0); sermon.title = reader.GetString(1); sermon.slug = reader.GetString(2); sermon.description = reader.GetString(3); sermon.speaker = reader.GetString(4); sermon.duration = reader.GetInt32(5); sermon.kitclub_id = reader.GetInt32(6); sermon.vimeo_id = reader.GetInt64(7); sermon.vimeo_sd_url = reader.GetString(8); sermon.vimeo_live_url = reader.GetString(9); sermon.audio_link = reader.GetString(10); sermon.audio_size = reader.GetString(11); sermon.series = reader.GetInt32(12); sermon.campus = reader.GetInt32(13); sermon.podcast_views = reader.GetInt32(14); sermon.date = reader.GetInt64(15); sermon.notes_downloaded = reader.GetInt32(16); sermon.questions_downloaded = reader.GetInt32(17); sermon.deleted = reader.GetBoolean(18); series.sermons.Add(sermon); } reader.Close(); }
/// <summary> /// Finds and replaces the old object for the replacement /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <SystemResponse <SermonSeries> > UpdateSermonSeries(SermonSeries request) { if (!IsValidObjectId(request.Id)) { return(new SystemResponse <SermonSeries>(true, string.Format(SystemMessages.UnableToFindPropertyForId, "Sermon Series", request.Id))); } // updated time is now request.LastUpdated = DateTime.UtcNow; var singleSeries = await _sermonsCollection.FindOneAndReplaceAsync( Builders <SermonSeries> .Filter.Eq(s => s.Id, request.Id), request); if (singleSeries == null) { return(new SystemResponse <SermonSeries>(true, string.Format(SystemMessages.UnableToFindValueInCollection, request.Id, "Sermons"))); } return(new SystemResponse <SermonSeries>(request, "Success!")); }
/// <summary> /// Adds a new SermonSeries to the Sermons Collection /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <SystemResponse <SermonSeries> > CreateNewSermonSeries(SermonSeries request) { // updated time is now request.LastUpdated = DateTime.UtcNow; await _sermonsCollection.InsertOneAsync(request); // respond with the inserted object var inserted = await _sermonsCollection.FindAsync( Builders <SermonSeries> .Filter.Eq(l => l.Slug, request.Slug)); var response = inserted.FirstOrDefault(); if (response == default(SermonSeries)) { return(new SystemResponse <SermonSeries>(true, string.Format(SystemMessages.ErrorOcurredInsertingIntoCollection, "Sermons"))); } return(new SystemResponse <SermonSeries>(response, "Success!")); }
public IHttpActionResult GetSpeakerSeries(string slug = "", string speaker = "", int offset = 0) { var cacheKey = string.Format("api/sermonfeed/{0}/{1}/{2}", slug, speaker, offset); var output = RockCache.Get(cacheKey) as List <SermonSeries>; if (output != null) { return(Json(output)); } string imageLocation = GlobalAttributesCache.Get().GetValue("PublicApplicationRoot").EnsureTrailingForwardslash() + "GetImage.ashx?Guid="; string audioLocation = GlobalAttributesCache.Get().GetValue("PublicApplicationRoot").EnsureTrailingForwardslash() + "GetFile.ashx?Guid="; RockContext rockContext = new RockContext(); var speakerQry = new AttributeValueService(rockContext).Queryable().Where(av => av.AttributeId == SPEAKER_ATTRIBUTE && av.Value == speaker); ContentChannelItemService contentChannelItemService = new ContentChannelItemService(rockContext); var sermonSeriesQry = contentChannelItemService.Queryable() .Where(i => i.ContentChannelId == CONTENT_CHANNEL); if (!string.IsNullOrWhiteSpace(slug)) { sermonSeriesQry = sermonSeriesQry.Where(i => i.ContentChannelItemSlugs.Where(s => s.ContentChannelItemId == i.Id && s.Slug == slug).Any()); } var sermonSeriesList = sermonSeriesQry.SelectMany(i => i.ChildItems) .Select(i => i.ChildContentChannelItem) .Join( speakerQry, i => i.Id, a => a.EntityId, (i, a) => i ) .Select(i => i.ParentItems.FirstOrDefault().ContentChannelItem) .DistinctBy(i => i.Id) .OrderByDescending(i => i.StartDateTime) .Skip(offset) .Take(12) .ToList(); output = new List <SermonSeries>(); foreach (var seriesItem in sermonSeriesList) { seriesItem.LoadAttributes(); var sermonSeries = new SermonSeries { id = seriesItem.Id, title = seriesItem.Title, description = seriesItem.Content, slug = seriesItem.PrimarySlug, image = imageLocation + seriesItem.GetAttributeValue("Image"), image_url = imageLocation + seriesItem.GetAttributeValue("Image"), last_updated = ConvertTime(seriesItem.StartDateTime), sermons = new List <Sermon>() }; if (string.IsNullOrWhiteSpace(seriesItem.GetAttributeValue("Image"))) { var childItem = seriesItem.ChildItems.FirstOrDefault().ChildContentChannelItem; childItem.LoadAttributes(); sermonSeries.image_url = imageLocation + childItem.GetAttributeValue("Image"); sermonSeries.image = imageLocation + childItem.GetAttributeValue("Image"); } output.Add(sermonSeries); //add sermons to series foreach (var sermonItem in seriesItem.ChildItems.Select(s => s.ChildContentChannelItem)) { sermonItem.LoadAttributes(); if (sermonItem.GetAttributeValue("Speaker").ToLower() != speaker.ToLower()) { continue; } sermonSeries.sermons.Add( new Sermon { id = sermonItem.Id, title = sermonItem.Title, description = sermonItem.Content, slug = sermonItem.PrimarySlug, audio_link = audioLocation + sermonItem.GetAttributeValue("Audio"), date = ConvertTime(sermonItem.StartDateTime), duration = sermonItem.GetAttributeValue("Duration").AsInteger(), image = imageLocation + sermonItem.GetAttributeValue("Image"), image_url = imageLocation + sermonItem.GetAttributeValue("Image"), speaker = sermonItem.GetAttributeValue("Speaker"), vimeo_id = sermonItem.GetAttributeValue("VimeoId").AsInteger() }); } } RockCache.AddOrUpdate(cacheKey, null, output, RockDateTime.Now.AddHours(1)); return(Json(output)); }
/// <summary> /// returns a list of all SermonSeries Objets /// </summary> public async Task <SystemResponse <SermonSeries> > CreateNewSermonSeries(CreateSermonSeriesRequest request) { var validRequest = CreateSermonSeriesRequest.ValidateRequest(request); if (validRequest.HasErrors) { return(new SystemResponse <SermonSeries>(true, validRequest.ErrorMessage)); } // the Slug on the series should be unique, so if we already have one with this slug // return an error - because we want to avoid having bad data in our database var allSermonSries = await _sermonsRepository.GetAllSermons(); if (allSermonSries == null || allSermonSries == default(AllSermonsResponse)) { return(null); } var seriesWithSameSlug = allSermonSries.Sermons.Where(i => string.Equals(i.Slug, request.Slug, StringComparison.InvariantCultureIgnoreCase)); if (seriesWithSameSlug.Any()) { var foundSeries = seriesWithSameSlug.FirstOrDefault(); // there is already a sermon series with this slug, respond with one of those return(new SystemResponse <SermonSeries>(foundSeries, "202")); } // if any of the sermon series' are currently active if (request.EndDate == null) { var currentlyActiveSeries = allSermonSries.Sermons.Where(i => i.EndDate == null); if (currentlyActiveSeries.Any()) { // one of the series' is already active var currentlyActive = currentlyActiveSeries.FirstOrDefault(); return(new SystemResponse <SermonSeries>(currentlyActive, "202")); } } else { request.EndDate = request.EndDate.Value.ToUniversalTime().Date; } // sanitise the start dates request.StartDate = request.StartDate.Value.ToUniversalTime().Date; var messageList = new List <SermonMessage>(); foreach (var message in request.Messages) { messageList.Add(new SermonMessage { AudioFileSize = message.AudioFileSize, AudioDuration = message.AudioDuration, // sanitise the message dates and get rid of the times Date = message.Date.Value.Date.ToUniversalTime().Date, MessageId = Guid.NewGuid().ToString(), AudioUrl = message.AudioUrl, PassageRef = message.PassageRef, Speaker = message.Speaker, Title = message.Title, VideoUrl = message.VideoUrl }); } var sermonSeries = new SermonSeries { ArtUrl = request.ArtUrl, EndDate = request.EndDate, Messages = messageList, Name = request.Name, Slug = request.Slug, StartDate = request.StartDate, Thumbnail = request.Thumbnail, Year = request.Year }; var creationResponse = await _sermonsRepository.CreateNewSermonSeries(sermonSeries); if (creationResponse.HasErrors) { return(new SystemResponse <SermonSeries>(true, creationResponse.ErrorMessage)); } // Save data in cache. _cache.Set(string.Format(CacheKeys.GetSermonSeries, creationResponse.Result.Id), creationResponse.Result, PersistentCacheEntryOptions); return(new SystemResponse <SermonSeries>(creationResponse.Result, "Success!")); }