// Helpers protected async Task GetPointOfInterestLocationViewCards(DialogContext sc, LocationSet locationSet) { var locations = locationSet.Locations; var state = await Accessor.GetAsync(sc.Context); var cardsData = new List <LocationCardModelData>(); var service = ServiceManager.InitMapsService(GetAzureMapsKey()); if (locations != null && locations.Count > 0) { var optionNumber = 1; state.FoundLocations = locations.ToList(); foreach (var location in locations) { var imageUrl = service.GetLocationMapImageUrl(location); var locationCardModel = new LocationCardModelData() { ImageUrl = imageUrl, LocationName = location.Name, Address = location.Address.FormattedAddress, SpeakAddress = location.Address.AddressLine, OptionNumber = optionNumber, }; cardsData.Add(locationCardModel); optionNumber++; } if (cardsData.Count() > 1) { if (sc.ActiveDialog.Id.Equals(Action.FindAlongRoute) && state.ActiveRoute != null) { var replyMessage = sc.Context.Activity.CreateAdaptiveCardGroupReply(POISharedResponses.MultipleLocationsFoundAlongActiveRoute, "Dialogs/Shared/Resources/Cards/PointOfInterestViewCard.json", AttachmentLayoutTypes.Carousel, cardsData, ResponseBuilder); await sc.Context.SendActivityAsync(replyMessage); } else { var replyMessage = sc.Context.Activity.CreateAdaptiveCardGroupReply(POISharedResponses.MultipleLocationsFound, "Dialogs/Shared/Resources/Cards/PointOfInterestViewCard.json", AttachmentLayoutTypes.Carousel, cardsData, ResponseBuilder); await sc.Context.SendActivityAsync(replyMessage); } } else { state.ActiveLocation = state.FoundLocations.Single(); if (sc.ActiveDialog.Id.Equals(Action.FindAlongRoute) && state.ActiveRoute != null) { var replyMessage = sc.Context.Activity.CreateAdaptiveCardReply(POISharedResponses.SingleLocationFoundAlongActiveRoute, "Dialogs/Shared/Resources/Cards/PointOfInterestViewNoDrivingButtonCard.json", cardsData.SingleOrDefault(), ResponseBuilder); await sc.Context.SendActivityAsync(replyMessage); } else { var replyMessage = sc.Context.Activity.CreateAdaptiveCardReply(POISharedResponses.SingleLocationFound, "Dialogs/Shared/Resources/Cards/PointOfInterestViewNoDrivingButtonCard.json", cardsData.SingleOrDefault(), ResponseBuilder); await sc.Context.SendActivityAsync(replyMessage); } } } else { var replyMessage = sc.Context.Activity.CreateReply(POISharedResponses.NoLocationsFound, ResponseBuilder); await sc.Context.SendActivityAsync(replyMessage); } }
// Helpers protected async Task GetPointOfInterestLocationViewCards(DialogContext sc, LocationSet locationSet) { var locations = locationSet.Locations; var state = await Accessor.GetAsync(sc.Context); var cardData = new List <LocationCardModelData>(); var service = ServiceManager.InitMapsService(GetAzureMapsKey()); if (locations != null && locations.Count > 0) { var optionNumber = 1; state.FoundLocations = locations.ToList(); foreach (var location in locations) { var imageUrl = service.GetLocationMapImageUrl(location); var locationCardModel = new LocationCardModelData() { ImageUrl = imageUrl, LocationName = location.Name, Address = location.Address.FormattedAddress, SpeakAddress = location.Address.AddressLine, OptionNumber = optionNumber, }; cardData.Add(locationCardModel); optionNumber++; } if (cardData.Count() > 1) { var templateId = string.Empty; var cards = new List <Card>(); if (sc.ActiveDialog.Id.Equals(Action.FindAlongRoute) && state.ActiveRoute != null) { templateId = POISharedResponses.MultipleLocationsFoundAlongActiveRoute; } else { templateId = POISharedResponses.MultipleLocationsFound; } foreach (var data in cardData) { cards.Add(new Card("PointOfInterestViewCard", data)); } var replyMessage = ResponseManager.GetCardResponse(templateId, cards); await sc.Context.SendActivityAsync(replyMessage); } else { state.ActiveLocation = state.FoundLocations.Single(); var templateId = string.Empty; if (sc.ActiveDialog.Id.Equals(Action.FindAlongRoute) && state.ActiveRoute != null) { templateId = POISharedResponses.SingleLocationFoundAlongActiveRoute; } else { templateId = POISharedResponses.SingleLocationFound; } var card = new Card("PointOfInterestViewNoDrivingButtonCard", cardData.SingleOrDefault()); var replyMessage = ResponseManager.GetCardResponse(templateId, card); await sc.Context.SendActivityAsync(replyMessage); } } else { var replyMessage = ResponseManager.GetResponse(POISharedResponses.NoLocationsFound); await sc.Context.SendActivityAsync(replyMessage); } }