// populates the booking tab private async void PopulateBookingTab(JObject result) { //get the ids of promotions available for that restaurant string[] promotionIds = Promotions.GetPromotionIDs(result); var dateStart = DateTime.Now; var dateStartStr = dateStart.ToString("yyyy-MM-ddTHH:mm:ss"); var dateEnd = DateTime.Now.AddDays(7.00); var dateEndStr = dateEnd.ToString("yyyy-MM-ddTHH:mm:ss"); string url = "https://api.rdbranch.com/api/ConsumerApi/v1/Restaurant/" + this.micrositename + "/AvailabilityForDateRangeV2?"; //get the available slots for that restaurant - with the provided partySize JObject r = await Requests.APICallPost(url, token, dateStartStr, dateEndStr, partySize); var checkAvail = r["AvailableDates"].ToString(); //if timeSlots available if (r != null && checkAvail.Length > 2) { AvailabilityView.IsVisible = true; NoAvailabilityLabel.IsVisible = false; //add promotions for that timeSlot if (promotionIds.Length > 0) { string promotions_url = "https://api.rdbranch.com/api/ConsumerApi/v1/Restaurant/" + this.micrositename + "/Promotion?"; StringBuilder builder = new StringBuilder(); builder.Append(promotions_url); foreach (string id in promotionIds) { builder.Append("&promotionIds=" + id); } JArray array_promotions = await Requests.APICallGet(builder.ToString(), token); promotions.Clear(); foreach (var pr in array_promotions) { var valid = pr["ValidityPeriods"].First; promotions.Add(new Promotion { Name = pr["Name"].ToString(), Description = pr["Description"].ToString(), StartTime = valid["StartTime"].ToString(), EndTime = valid["EndTime"].ToString(), StartDate = Convert.ToDateTime(valid["StartDate"].ToString()).Date.ToString("dd/MM/yyyy"), EndDate = Convert.ToDateTime(valid["EndDate"].ToString()).Date.ToString("dd/MM/yyyy"), }); } } } else { AvailabilityView.IsVisible = false; NoAvailabilityLabel.IsVisible = true; } Promotions.GetAvailablePromotions(r, slotNumber); AvailabilityView.ItemsSource = availableTimes; }