public ProductRecommendation GetRecommendedUri(FaceViewModel face) { if (face != null && face.Age != null && face.Gender != null) { if (face.Age >= 0 && face.Age < 17) return XboxOne; else if (face.Age < 23 && face.Gender == "female") return SurfacePro; else if (face.Age < 23 && face.Gender == "male") return Office365; else if (face.Age < 30) return Lumia950; else if (face.Age < 40) return SurfaceBook; else return SurfaceStudio; } return AllTablets; }
private async void TakePhoto(string operationType) { try { if (operationType == null) { throw new ArgumentNullException(nameof(operationType)); } StorageFile photo = null; switch (operationType) { case "capture": photo = await CapturePhoto(); break; case "library": photo = await PickPhoto(); break; default: throw new ArgumentOutOfRangeException(nameof(operationType), "Unknown value: " + (operationType ?? "NULL")); } if (photo == null) { return; } Photo = await PreparePhoto(photo); IsPhotoUnderProcessing = true; var faces = await _faceClient.DetectAsync((await photo.OpenAsync(FileAccessMode.Read)).AsStream(), returnFaceAttributes : Enum.GetValues(typeof(FaceAttributeType)).Cast <FaceAttributeType>()); DetectedFaces = new ObservableCollection <FaceViewModel>(await Task.WhenAll(faces.Select(f => FaceViewModel.FromFace(f, photo)))); SelectedFace = DetectedFaces.FirstOrDefault(); IsPhotoUnderProcessing = false; } catch (Exception e) { var dialog = new ContentDialog { Title = "Unexpected error", PrimaryButtonText = "Ok", Content = new TextBlock { Text = e.Message, TextWrapping = Windows.UI.Xaml.TextWrapping.WrapWholeWords } }; await dialog.ShowAsync(); } }