コード例 #1
0
 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));
     }
 }
コード例 #2
0
 public Task<int> SaveExpensePhotoAsync (ExpensePhoto photo, CancellationToken cancellationToken)
 {
     return Task.Factory.StartNew (() => 1);
 }
コード例 #3
0
 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);
 }
コード例 #4
0
        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);
        }
コード例 #5
-1
        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.
                    }
                }
            });
        }