예제 #1
0
        /// <summary>
        /// Schedule a livestream to occur regularly
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public string ScheduleLiveStream(LiveSermonsSchedulingRequest request)
        {
            var hangfireCreationResponse = CreateLiveStreamStartHangfire(request);
            var hangfireEndingResponse   = CreateLiveStreamEndHangfire(request);

            var hangfireResponse = $"Start Job ID: {hangfireCreationResponse}\nEnd Job ID: {hangfireEndingResponse}";

            return(hangfireResponse);
        }
예제 #2
0
        private string CreateLiveStreamEndHangfire(LiveSermonsSchedulingRequest request)
        {
            var jobId = request.EndSchedule;

            // Upserts the recurring job data
            RecurringJob.AddOrUpdate(jobId, () =>
                                     EndLiveHangfire(request),
                                     request.EndSchedule,
                                     TimeZoneInfo.Local
                                     );

            return(jobId);
        }
예제 #3
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));
        }
예제 #4
0
        public async Task EndLiveHangfire(LiveSermonsSchedulingRequest request)
        {
            CrontabSchedule schedule  = CrontabSchedule.Parse(request.StartSchedule);
            DateTime        nextLocal = schedule.GetNextOccurrence(DateTime.Now);

            List <RecurringJobDto> recurringJobs = JobStorage.Current.GetConnection().GetRecurringJobs();
            var nextJobExecTime = recurringJobs.OrderBy(i => i.NextExecution.Value).First().NextExecution.Value;

            // make sure that we're using UTC
            DateTime nextLive = nextJobExecTime.ToUniversalTime();

            var liveStreamCompletedResponse = await _sermonsRepository.UpdateLiveSermonsInactive(nextLive);

            return;
        }
        public ActionResult <string> ScheduleLivestreams([FromBody] LiveSermonsSchedulingRequest request)
        {
            var response = _sermonsService.ScheduleLiveStream(request);

            return(response);
        }