/// <summary> /// Updates the LiveStreaming object in Mongo /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <LiveSermons> GoLive(LiveSermonsUpdateRequest request) { // get the live sermon, we will only ever have 1 object in this collection var liveObject = await GetLiveSermons(); var document = await _livestreamCollection.FindOneAndUpdateAsync( Builders <LiveSermons> .Filter .Eq(l => l.Id, liveObject.Id), Builders <LiveSermons> .Update .Set(l => l.LastUpdated, DateTime.UtcNow) .Set(l => l.IsLive, true) .Set(l => l.SpecialEventTimes, null) .Set(l => l.ExpirationTime, request.ExpirationTime.Value.ToUniversalTime()) ); if (document == null || document == default(LiveSermons)) { // something bad happened here return(null); } // get the object again because it's not updated in memory var updatedDocument = await _livestreamCollection.FindAsync( Builders <LiveSermons> .Filter.Eq(l => l.Id, liveObject.Id)); var response = updatedDocument.FirstOrDefault(); if (response == null || response == default(LiveSermons)) { // something bad happened here return(null); } return(response); }
/// <summary> /// Update the LiveSermons object /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <SystemResponse <LiveStreamingResponse> > GoLive(LiveSermonsUpdateRequest request) { // validate the request var validRequest = LiveSermonsUpdateRequest.ValidateRequest(request); if (validRequest.HasErrors) { // an error ocurred here return(new SystemResponse <LiveStreamingResponse>(true, validRequest.ErrorMessage)); } var updateLiveSermonsResponse = await _sermonsRepository.GoLive(request); if (updateLiveSermonsResponse == null) { return(new SystemResponse <LiveStreamingResponse>(true, SystemMessages.UnableToFindLiveSermon)); } // times have already been converted to UTC var response = new LiveStreamingResponse { ExpirationTime = updateLiveSermonsResponse.ExpirationTime, IsLive = updateLiveSermonsResponse.IsLive, IsSpecialEvent = updateLiveSermonsResponse.SpecialEventTimes != null ? true : false, SpecialEventTimes = updateLiveSermonsResponse.SpecialEventTimes ?? null }; return(new SystemResponse <LiveStreamingResponse>(response, "Success!")); }
public async Task <ActionResult <LiveStreamingResponse> > GoLive([FromBody] LiveSermonsUpdateRequest request) { var response = await _sermonsService.GoLive(request); if (response.HasErrors) { return(StatusCode(400, response.ErrorMessage)); } return(response.Result); }
public Task GoLiveHangfire(LiveSermonsSchedulingRequest request) { var jobId = request.StartSchedule; CrontabSchedule schedule = CrontabSchedule.Parse(request.EndSchedule); DateTime endTime = schedule.GetNextOccurrence(DateTime.Now); var liveStreamUpdate = new LiveSermonsUpdateRequest { ExpirationTime = endTime }; return(GoLive(liveStreamUpdate)); }