public IActionResult Get()
        {
            var queryString = HttpUtility.ParseQueryString(this.HttpContext.Request.QueryString.Value);

            if (queryString.Count == 0)
            {
                List <AccommodationQueryOut> accommodations         = this.accommodationLogic.GetAll();
                List <AccommodationModelOut> accommodationsToReturn = new List <AccommodationModelOut>();
                foreach (var item in accommodations)
                {
                    AccommodationModelOut a = new AccommodationModelOut(item);
                    accommodationsToReturn.Add(a);
                }
                return(Ok(accommodationsToReturn));
            }
            else
            {
                try
                {
                    AccommodationModelIn accommodationModelIn = new AccommodationModelIn
                    {
                        TouristSpotName = queryString.Get("touristSpotName"),
                        CheckIn         = new DateTime(
                            Int32.Parse(queryString.Get("checkInYear")),
                            Int32.Parse(queryString.Get("checkInMonth")),
                            Int32.Parse(queryString.Get("checkInDay"))
                            ),
                        CheckOut = new DateTime(
                            Int32.Parse(queryString.Get("checkOutYear")),
                            Int32.Parse(queryString.Get("checkOutMonth")),
                            Int32.Parse(queryString.Get("checkOutDay"))
                            ),
                        TotalGuests = Int32.Parse(queryString.Get("totalGuests")),
                        Babies      = Int32.Parse(queryString.Get("babies")),
                        Kids        = Int32.Parse(queryString.Get("kids")),
                        Adults      = Int32.Parse(queryString.Get("adults")),
                        Retirees    = Int32.Parse(queryString.Get("retirees"))
                    };
                    int tot = accommodationModelIn.Babies + accommodationModelIn.Kids
                              + accommodationModelIn.Adults + accommodationModelIn.Retirees;
                    if (accommodationModelIn.TotalGuests != tot)
                    {
                        return(BadRequest("Wrong input: the number of hosts is incorrect."));
                    }
                    AccommodationQueryIn         accommodationQueryIn   = new AccommodationQueryIn(accommodationModelIn);
                    List <AccommodationQueryOut> accommodations         = this.accommodationLogic.GetByTouristSpot(accommodationQueryIn);
                    List <AccommodationModelOut> accommodationsToReturn = new List <AccommodationModelOut>();
                    foreach (var item in accommodations)
                    {
                        AccommodationModelOut a = new AccommodationModelOut(item);
                        accommodationsToReturn.Add(a);
                    }
                    return(Ok(accommodationsToReturn));
                }
                catch (Exception e)
                {
                    return(BadRequest("Wrong input: incorrect query string"));
                }
            }
        }
Ejemplo n.º 2
0
        private double CalculateTotalPrice(AccommodationQueryIn accommodationQueryIn, AccommodationQueryOut a)
        {
            int    totalDays  = (accommodationQueryIn.CheckOut - accommodationQueryIn.CheckIn).Days;
            double totalPrice =
                CalculateTotalPriceForRetirees(accommodationQueryIn.Retirees, totalDays, a.PricePerNight) +
                CalculateTotatPriceForAdults(accommodationQueryIn.Adults, totalDays, a.PricePerNight) +
                CalculateTotalPriceForKids(accommodationQueryIn.Kids, a.PricePerNight, totalDays) +
                CalculateTotalPriceForBabies(accommodationQueryIn.Babies, a.PricePerNight, totalDays);

            return(totalPrice);
        }
Ejemplo n.º 3
0
        public List <AccommodationQueryOut> GetByTouristSpot(AccommodationQueryIn accommodationQueryIn)
        {
            List <AccommodationQueryOut> accommodationsToReturn = new List <AccommodationQueryOut>();
            List <Accommodation>         accommodations         = this.accommodationRepository
                                                                  .GetAllAvailableByTouristSpotName(accommodationQueryIn.TouristSpotName);

            foreach (var item in accommodations)
            {
                AccommodationQueryOut a = new AccommodationQueryOut(item);
                double totalPrice       = this.CalculateTotalPrice(accommodationQueryIn, a);
                a.TotalPrice = totalPrice;
                accommodationsToReturn.Add(a);
            }
            return(accommodationsToReturn);
        }