public List <CourtDto> ConvertSquashResponse(string hastaResponse) { const string startText = "<tr data-obie_id=\"1\">"; const string endText = "32</td></tr>"; var start = hastaResponse.IndexOf(startText); var end = hastaResponse.IndexOf(endText, start) + endText.Length; var length = end - start; var result = hastaResponse.Substring(start, length); List <CourtDto> squash = new List <CourtDto>(); HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); HtmlAgilityPack.HtmlDocument docHelp = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(result); foreach (var node in doc.DocumentNode.SelectNodes($"//tr")) { docHelp.LoadHtml(node.InnerHtml); string v = docHelp.DocumentNode.SelectSingleNode("td").InnerText; if (String.IsNullOrEmpty(v) || !Int32.TryParse(v, out int courtNumber)) { continue; } CourtDto court = new CourtDto() { Number = courtNumber }; var inputNodes = docHelp.DocumentNode.SelectNodes("//td/input"); if (inputNodes == null || !inputNodes.Any()) { continue; } List <FreeHoursDto> hours = inputNodes .Select(i => new FreeHoursDto { From = DateTime.Parse(i.Attributes["data-godz_od"].Value), To = DateTime.Parse(i.Attributes["data-godz_do"].Value) }).ToList(); court.Free = hours; squash.Add(court); } return(squash); }
public void EditCourtName(int id, CourtDto court) { if (!ModelState.IsValid) { throw new HttpResponseException(HttpStatusCode.BadRequest); } var courtInDb = _context.Courts.SingleOrDefault(c => c.Id == id); if (courtInDb == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } courtInDb = Mapper.Map <CourtDto, Models.Court>(court); courtInDb.Name = court.Name; _context.SaveChanges(); }
public BookRequestDto GenerateBookRequest(CourtDto kort, ReservationRequest res) { var freeTime = new FreeHoursDto() { From = kort.Free.FirstOrDefault().From, To = kort.Free.FirstOrDefault().To }; var bookRequest = new BookRequestDto(res); int lenght = (res.Duration.Hours * 60 + res.Duration.Minutes) / 30; string[] tmpRez = new string[lenght]; string tmp = String.Empty; for (int i = 0; i < lenght; i++) { tmp = $"{kort.ObkietId}_{freeTime.From.Hour}:{freeTime.From.Minute.ToString("D2")}_"; freeTime.From = freeTime.From.AddMinutes(30); tmp += $"{freeTime.From.Hour}:{freeTime.From.Minute.ToString("D2")}"; tmpRez[i] = tmp; } bookRequest.Rez = tmpRez; return(bookRequest); }
private List <CourtDto> GetFreeCourts(List <CourtDto> FreeCourts, DateTime fromTime, DateTime toTime, TimeSpan duration) { var result = FreeCourts.SelectMany(c => c.Free, (court, freeHours) => new { court, freeHours }) .Where(courtAndHours => courtAndHours.freeHours.From >= fromTime && courtAndHours.freeHours.To <= toTime) .Select(courtAndHours => new { Number = courtAndHours.court.Number + "_" + courtAndHours.court.ObkietId, Free = new FreeHoursDto() { From = courtAndHours.freeHours.From, To = courtAndHours.freeHours.To } } ).GroupBy(c => c.Number, c => c.Free, (groupKey, Free) => new { Number = groupKey, Free }); if (result == null) { return(null); } List <CourtDto> korty = new List <CourtDto>(); CourtDto curCourt = null; string num, obiekt; int index; foreach (var kort in result) { index = kort.Number.IndexOf("_"); num = kort.Number.Substring(0, index); obiekt = kort.Number.Substring(index + 1); curCourt = new CourtDto() { Number = Int32.Parse(num), ObkietId = Int32.Parse(obiekt), Free = new List <FreeHoursDto>() }; FreeHoursDto prevTime = null; foreach (var curTime in kort.Free) { if (prevTime is null) { prevTime = curTime; } else { if (curTime.From == prevTime.To) { prevTime.To = curTime.To; } else { if (prevTime.AvailableTime >= duration) { curCourt.Free.Add(prevTime); } prevTime = curTime; } } } if (prevTime.AvailableTime >= duration) { curCourt.Free.Add(prevTime); } if (curCourt.Free.Count() > 0) { korty.Add(curCourt); } } return(korty); }
public void Setup() { foundCourt = new List <CourtDto>() { new CourtDto { Number = 3, ObkietId = 3, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(15, 00, 0), To = new DateTime() + new TimeSpan(15, 30, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(15, 30, 0), To = new DateTime() + new TimeSpan(16, 00, 0) } } } }; squashService = new SquashService(); fromTime = new DateTime() + new TimeSpan(21, 0, 0); toTime = new DateTime() + new TimeSpan(24, 0, 0); duration = new TimeSpan(1, 0, 0); kort = new CourtDto() { Number = 13, ObkietId = 23, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(19, 00, 0), To = new DateTime() + new TimeSpan(22, 30, 0) } } }; FreeCourts = new List <CourtDto>() { new CourtDto() { Number = 1, ObkietId = 1, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(15, 00, 0), To = new DateTime() + new TimeSpan(15, 30, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(15, 30, 0), To = new DateTime() + new TimeSpan(16, 00, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(16, 0, 0), To = new DateTime() + new TimeSpan(16, 30, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(17, 0, 0), To = new DateTime() + new TimeSpan(17, 30, 0) } } }, new CourtDto() { Number = 4, ObkietId = 4, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(15, 00, 0), To = new DateTime() + new TimeSpan(15, 30, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(16, 0, 0), To = new DateTime() + new TimeSpan(16, 30, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(16, 30, 0), To = new DateTime() + new TimeSpan(17, 00, 0) } } }, new CourtDto() { Number = 7, ObkietId = 17, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(19, 00, 0), To = new DateTime() + new TimeSpan(19, 30, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(20, 0, 0), To = new DateTime() + new TimeSpan(20, 30, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(22, 30, 0), To = new DateTime() + new TimeSpan(23, 00, 0) } , new FreeHoursDto() { From = new DateTime() + new TimeSpan(23, 00, 0), To = new DateTime() + new TimeSpan(23, 30, 0) } } }, new CourtDto() { Number = 13, ObkietId = 23, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(19, 00, 0), To = new DateTime() + new TimeSpan(22, 30, 0) } } } }; FreeCourtsExclude = new List <CourtDto>() { new CourtDto() { Number = 3, ObkietId = 3, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(15, 00, 0), To = new DateTime() + new TimeSpan(18, 30, 0) }, } }, new CourtDto() { Number = 4, ObkietId = 4, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(15, 00, 0), To = new DateTime() + new TimeSpan(16, 30, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(16, 0, 0), To = new DateTime() + new TimeSpan(18, 30, 0) } } }, new CourtDto() { Number = 7, ObkietId = 7, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(19, 00, 0), To = new DateTime() + new TimeSpan(20, 30, 0) }, new FreeHoursDto() { From = new DateTime() + new TimeSpan(21, 0, 0), To = new DateTime() + new TimeSpan(22, 00, 0) } } }, new CourtDto() { Number = 13, ObkietId = 23, Free = new List <FreeHoursDto>() { new FreeHoursDto() { From = new DateTime() + new TimeSpan(16, 00, 0), To = new DateTime() + new TimeSpan(17, 30, 0) } } } }; var logger = new Mock <ILogger <SquashController> >(); var messanger = new Mock <IMessanger>(); var squashServ = new Mock <ISquashService>(); squashServ.Setup(s => s.GetFreeSquashCourts(It.IsAny <ReservationRequest>())).Returns(FreeCourtsExclude); squashServ.Setup(s => s.RezerwujTest(It.IsAny <BookRequestDto>())).Returns(new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK)); squashController = new SquashController(logger.Object, messanger.Object, squashService); squashCtrlMock = new SquashController(logger.Object, messanger.Object, squashServ.Object); res = new ReservationRequest() { Duration = new TimeSpan(1, 0, 0), Login = "******", Password = "******", StartDate = new DateTime(2019, 10, 7) }; }