public void GetExpensePhoto() { var assignmentTask = service.GetAssignmentsAsync(CancellationToken.None); assignmentTask.Wait(); var assignment = assignmentTask.Result.First(a => a.CompanyName == "Xamarin"); var expenseTask = service.GetExpensesForAssignmentAsync(assignment, CancellationToken.None); expenseTask.Wait(); var expense = expenseTask.Result.First(); var photo = new ExpensePhoto { ExpenseId = expense.Id, Image = new byte [1], }; service.SaveExpensePhotoAsync(photo, CancellationToken.None).Wait(); var expensePhotoTask = service.GetExpensePhotoAsync(expense, CancellationToken.None); expensePhotoTask.Wait(); Assert.That(expensePhotoTask.Result, Is.Not.Null); }
public ExpenseViewModel() { picker = new MediaPicker(); assignmentViewModel = ServiceContainer.Resolve <AssignmentViewModel>(); addExpenseCommand = new DelegateCommand(async obj => { var expense = obj as Expense; if (expense != null) { SelectedExpense = expense; CanDelete = true; AddExpenseHeader = "Expense"; await LoadPhotoAsync(expense); } else { SelectedExpense = new Expense(); CanDelete = false; AddExpenseHeader = "Add Expense"; Photo = new ExpensePhoto(); } if (addExpensePopUp != null && addExpensePopUp.IsOpen) { addExpensePopUp.IsOpen = false; } addExpensePopUp = new Popup(); addExpensePopUp.Height = Window.Current.Bounds.Height; addExpensePopUp.Width = Constants.PopUpWidth; AddExpenseFlyoutPanel flyoutpanel = new AddExpenseFlyoutPanel(); flyoutpanel.Width = addExpensePopUp.Width; flyoutpanel.Height = addExpensePopUp.Height; addExpensePopUp.Child = flyoutpanel; addExpensePopUp.SetValue(Canvas.LeftProperty, Window.Current.Bounds.Width - Constants.PopUpWidth); addExpensePopUp.SetValue(Canvas.TopProperty, 0); addExpensePopUp.IsOpen = true; }); saveExpenseCommand = new DelegateCommand(async _ => { selectedExpense.Cost = ExpenseCost.ToDecimal(CultureInfo.InvariantCulture); selectedExpense.AssignmentId = assignmentViewModel.SelectedAssignment.Id; var task = SaveExpenseAsync(assignmentViewModel.SelectedAssignment, SelectedExpense); if (Photo != null && Photo.Image != null) { task = task.ContinueWith(obj => { Photo.ExpenseId = SelectedExpense.Id; }); await SavePhotoAsync(); } await LoadExpensesAsync(assignmentViewModel.SelectedAssignment); addExpensePopUp.IsOpen = false; }); deleteExpenseCommand = new DelegateCommand(async _ => { await DeleteExpenseAsync(assignmentViewModel.SelectedAssignment, selectedExpense); await LoadExpensesAsync(assignmentViewModel.SelectedAssignment); addExpensePopUp.IsOpen = false; }); cancelExpenseCommand = new DelegateCommand(_ => { addExpensePopUp.IsOpen = false; }); addImageCommand = new DelegateCommand(async _ => { bool cameraCommand = false, imageCommand = false; var dialog = new MessageDialog("Take picture with your built in camera or select one from your photo library.", "Add Image"); if (picker.IsCameraAvailable) { dialog.Commands.Add(new UICommand("Camera", new UICommandInvokedHandler(q => cameraCommand = true))); } dialog.Commands.Add(new UICommand("Library", new UICommandInvokedHandler(q => imageCommand = true))); await dialog.ShowAsync(); if (cameraCommand) { try { var mediaFile = await picker.TakePhotoAsync(new StoreCameraMediaOptions()); var photo = await mediaFile.GetStream().LoadBytes(); if (Photo == null) { Photo = new ExpensePhoto { ExpenseId = SelectedExpense.Id } } ; Photo.Image = photo; OnPropertyChanged("Photo"); } catch (Exception exc) { Debug.WriteLine(exc.Message); //this could happen if they cancel, etc. } } else if (imageCommand) { try { var mediaFile = await picker.PickPhotoAsync(); var photo = await mediaFile.GetStream().LoadBytes(); if (Photo == null) { Photo = new ExpensePhoto { ExpenseId = SelectedExpense.Id } } ; Photo.Image = photo; OnPropertyChanged("Photo"); } catch (Exception exc) { Debug.WriteLine(exc.Message); //this could happen if they cancel, etc. } } }); }
public Task <int> SaveExpensePhotoAsync(ExpensePhoto photo, CancellationToken cancellationToken) { return(Task.Factory.StartNew(() => 1)); }