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); }
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); }