/// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 4
0
        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));
        }