예제 #1
0
        public IActionResult GetFreeCourtsFromToExclude([FromBody] ReservationDto reservation)
        {
            if (reservation == null)
            {
                return(BadRequest(reservation));
            }

            ReservationRequest res;

            try
            {
                res = new ReservationRequest(reservation);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }

            _logger.LogInformation($"Squash Controller is reqesting Free Courts from: {res.FromTime} to: {res.ToTime} for: {res.Duration}");
            List <CourtDto> korty = _squash.GetFreeSquashCourts(res);

            if (korty.Count() > 0 && res.isLogged())
            {
                var kort     = korty.FirstOrDefault();
                var freeTime = kort.Free.FirstOrDefault();
                int lenght   = (res.Duration.Hours * 60 + res.Duration.Minutes) / 30;
                kort.Free.Clear();

                for (int i = 0; i < lenght; i++)
                {
                    var time = new FreeHoursDto()
                    {
                        From = freeTime.From.AddMinutes(i * 30), To = freeTime.From.AddMinutes((i * 30) + 30)
                    };
                    kort.Free.Add(time);
                }

                var book             = GenerateBookRequest(kort, res);
                var rezerwujResponse = _squash.RezerwujTest(book);

                if (rezerwujResponse != null && rezerwujResponse.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    kort.Booked = true;
                    var restult = new List <CourtDto>();
                    restult.Add(kort);
                    return(Ok(restult));
                }
            }

            _messanger.Send("### Squash Team", $"API found {korty.Count()} free squash courts ###");
            return(Ok(korty));
        }