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