public Task <int> SaveExpensePhotoAsync(ExpensePhoto photo, CancellationToken cancellationToken = default(CancellationToken)) { if (photo.Id == 0) { return(Database.GetConnection(cancellationToken).InsertAsync(photo)); } else { return(Database.GetConnection(cancellationToken).UpdateAsync(photo)); } }
public Task<int> SaveExpensePhotoAsync (ExpensePhoto photo, CancellationToken cancellationToken) { return Task.Factory.StartNew (() => 1); }
public Task<int> SaveExpensePhotoAsync (ExpensePhoto photo, CancellationToken cancellationToken = default(CancellationToken)) { if (photo.Id == 0) return Database.GetConnection (cancellationToken).InsertAsync (photo); else return Database.GetConnection (cancellationToken).UpdateAsync (photo); }
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. } } }); }