Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            try
            {
                //Read input from user
                //1. From Time yyyy-MM-dd HH:mm:ss (2019-10-01 10:00:00)
                //2. To Time   yyyy-MM-dd HH:mm:ss (2019-10-01 10:30:00)

                var mediaRepository = new MediaRepository();

                //Create request object based on the above user input then use Media.json from Media folder
                //to create media object. Construct the below request using both the input
                var request = new GenerateScheduleRequest();

                //Generate schedule
                var schedule = mediaRepository.GenerateSchedule(new GenerateScheduleRequest());

                //Write schedule as plain json file
                var parsedSchedule = JsonConvert.SerializeObject(schedule);
                var fileName       = $"generated-schedule-{request.FromDate}";
                System.IO.File.WriteAllText($@"c:\temp\{fileName}.json", parsedSchedule);
                Console.WriteLine("Schedule Generated Successfully!");
            }
            catch (Exception e)
            {
                Console.WriteLine($"Something went wrong {e}");
            }

            Console.ReadKey();
        }
Exemplo n.º 2
0
        public static void Main(string[] args)
        {
            try
            {
                //Read input from user
                //1. From Time yyyy-MM-dd HH:mm:ss (2019-10-01 10:00:00)
                //2. To Time   yyyy-MM-dd HH:mm:ss (2019-10-01 10:30:00)
                var mediaRepository = new MediaRepository();

                //Create request object based on the above user input then use Media.json from Media folder
                //to create media object. Construct the below request using both the input
                var request = new GenerateScheduleRequest();
                Console.WriteLine("Enter From Date");
                request.FromDate = Convert.ToDateTime(Console.ReadLine());
                Console.WriteLine("Enter To Date");
                request.ToDate = Convert.ToDateTime(Console.ReadLine());
                string medias = File.ReadAllText("Media/Medias.json");
                request.Medias = JsonConvert.DeserializeObject <List <Media> >(medias);
                //Generate schedule
                var schedule = mediaRepository.GenerateSchedule(request);

                //Write schedule as plain json file
                var parsedSchedule = JsonConvert.SerializeObject(schedule);
                var fileName       = $"generated-schedule-{request.FromDate.ToString("yyyyMMddHHmmss")}";
                System.IO.File.WriteAllText($@"C:\Users\sarn\Desktop\tmp\{fileName}.json", parsedSchedule);
                Console.WriteLine("Schedule Generated Successfully!");
            }
            catch (Exception e)
            {
                Console.WriteLine($"Something went wrong {e}");
            }

            Console.ReadKey();
        }
Exemplo n.º 3
0
        /// <inheritdoc />
        public GeneratedScheduleResponse GenerateSchedule(GenerateScheduleRequest request)
        {
            DateTime current  = request.FromDate;
            DateTime endVideo = request.FromDate;
            GeneratedScheduleResponse response = new GeneratedScheduleResponse();

            response.ScheduledMedia = new List <ScheduledMedia>();
            TimeSpan totalrequestedDuration = request.ToDate - request.FromDate;
            double   totalreqTime           = totalrequestedDuration.TotalSeconds;

            response.TotalRequestedDuration = totalreqTime;
            foreach (Media media in request.Medias.OrderBy(i => i.Priority))
            {
                for (int i = 0; i < media.NumberOfTimesToPlay; i++)
                {
                    endVideo = current.AddSeconds(media.Duration);
                    if (endVideo > request.ToDate)
                    {
                        break;
                    }
                    ScheduledMedia schedule = new ScheduledMedia();
                    schedule.Duration      = media.Duration;
                    schedule.MediaName     = media.MediaName;
                    schedule.ScheduledTime = current;
                    response.ScheduledMedia.Add(schedule);
                    response.MediaDuration += media.Duration;
                    current = endVideo;
                }

                if (endVideo > request.ToDate)
                {
                    break;
                }
            }
            response.RemainingDuration = response.TotalRequestedDuration - response.MediaDuration;
            return(response);
        }
Exemplo n.º 4
0
 /// <inheritdoc />
 public GeneratedScheduleResponse GenerateSchedule(GenerateScheduleRequest request)
 {
     //Implement scheduling
     throw new System.NotImplementedException();
 }