コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: SquashController.cs プロジェクト: FiFiIT/SquashInfo
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: SquashController.cs プロジェクト: FiFiIT/SquashInfo
        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)
            };
        }