public void SetUp()
        {
            expectedPerformanceId = 176;
            List <PerformanceScheduleDataModelBase> expectedScheduleList = new List <PerformanceScheduleDataModelBase>();
            List <TimeLink> timeLinks = new List <TimeLink>()
            {
                new TimeLink()
                {
                    Time = new DateTime(2019, 04, 14, 12, 00, 00), Link = "https://ticketclub.com.ua/event/4984/?session=10798"
                },
                new TimeLink()
                {
                    Time = new DateTime(2019, 04, 14, 14, 00, 00), Link = "https://ticketclub.com.ua/event/4984/?session=10799"
                },
                new TimeLink()
                {
                    Time = new DateTime(2019, 04, 14, 16, 00, 00), Link = "https://ticketclub.com.ua/event/4984/?session=10800"
                },
            };

            expectedScheduleList.Add(new PerformanceScheduleDataModelBase()
            {
                Day = new DateTime(2019, 04, 14), TimeLinkList = timeLinks
            });
            expectedPerformanceScheduleModel = new PerformanceScheduleDataModel()
            {
                Title = "Таємниця Лісовичка", Age = 3, PerformanceId = expectedPerformanceId, Duration = 45, ScheduleList = expectedScheduleList
            };
            performanceScheduleRepository = new Mock <IPerformanceScheduleRepository>();
            performanceScheduleRepository.Setup(a => a.GetPerfomanceScheduleInfo(It.Is <int>(x => x == expectedPerformanceId))).Returns(Task.FromResult(expectedPerformanceScheduleModel));

            cacheProvider = new Mock <ICacheProvider>();
            cacheProvider.Setup(z => z.GetAndSave(It.Is <Func <string> >(x => x() == $"Performance_{expectedPerformanceId}"), It.Is <Func <PerformanceScheduleDataModel> >(x => x().PerformanceId == expectedPerformanceScheduleModel.PerformanceId))).Returns(expectedPerformanceScheduleModel);

            performanceScheduleService = new PerformanceScheduleService(performanceScheduleRepository.Object, cacheProvider.Object);
        }
Example #2
0
        public async Task <PerformanceScheduleDataModel> GetPerfomanceScheduleInfo(int performanceId)
        {
            PerformanceScheduleDataModel dataModel;

            var client          = new Repository().InitializeClient();
            var gettingSchedule = await client.CustomRequest.Get <Performance>($"wp/v2/performance/{performanceId}");

            int    PerformanceId = gettingSchedule.PerformanceId;
            string Title         = WebUtility.HtmlDecode(gettingSchedule.Title.Rendered);
            int    MediaId       = gettingSchedule.Featured_media;
            int    Age           = gettingSchedule.AcfInfo.aboutGroup.Age;
            int    Duration      = gettingSchedule.AcfInfo.aboutGroup.Duration;
            string Price         = gettingSchedule.AcfInfo.aboutGroup.Price;

            var gettingImages = await client.CustomRequest.Get <Media>($"wp/v2/media/{MediaId}");

            string MainImageUrl = gettingImages.Media_details.Sizes.Full.Source_url;

            if (gettingSchedule.AcfInfo.aboutGroup.schedule == null)
            {
                dataModel = new PerformanceScheduleDataModel()
                {
                    PerformanceId = PerformanceId,
                    Title         = Title,
                    MainImage     = MainImageUrl,
                    Age           = Age,
                    Duration      = Duration,
                    Price         = Price,
                };
                return(dataModel);
            }

            List <PerformanceScheduleDataModelBase> scheduleList = new List <PerformanceScheduleDataModelBase>();

            foreach (var info in gettingSchedule.AcfInfo.aboutGroup.schedule)
            {
                foreach (var schedule in info.scheduleDetails)
                {
                    DateTime date = ConvertStringToDateTime(schedule.ScheduleDay);
                    DateTime time = Convert.ToDateTime(schedule.ScheduleTime);
                    if (date.Date >= DateTime.Now)
                    {
                        if (scheduleList.Exists(tempData => tempData.Day == date))
                        {
                            scheduleList.First(tempData => tempData.Day == date).TimeLinkList.Add(new TimeLink()
                            {
                                Time = time, Link = schedule.ScheduleLink
                            });
                        }
                        else
                        {
                            List <TimeLink> times = new List <TimeLink>()
                            {
                                new TimeLink()
                                {
                                    Time = time, Link = schedule.ScheduleLink
                                }
                            };
                            scheduleList.Add(new PerformanceScheduleDataModelBase()
                            {
                                Day = date, TimeLinkList = times
                            });
                        }
                    }
                }
            }


            dataModel = new PerformanceScheduleDataModel()
            {
                PerformanceId = PerformanceId,
                Title         = Title,
                MainImage     = MainImageUrl,
                ScheduleList  = scheduleList,
                Age           = Age,
                Duration      = Duration,
                Price         = Price,
            };

            return(dataModel);
        }