private async void Save_Tapped(object sender, EventArgs e) { foreach (var item in viewModel.CurrentEntry.ExpenseCodes) { ProjectInsight.Models.TimeAndExpense.ExpenseEntry expenseEntry = new ProjectInsight.Models.TimeAndExpense.ExpenseEntry(); if (item.Quantity != null && item.Rate != null) { expenseEntry.Qty = Convert.ToDecimal(item.Quantity); expenseEntry.ActualCost = expenseEntry.Qty * item.Rate; expenseEntry.Date = viewModel.CurrentEntry.EntryDate; expenseEntry.Description = item.Name; expenseEntry.Project_Id = ProjectId; expenseEntry.ExpenseCode_Id = item.Id; expenseEntry.UserCreated_Id = Common.CurrentWorkspace.UserID; expenseEntry.User_Id = Common.CurrentWorkspace.UserID; ApiSaveResponse result = await ExpenseEntryService.client.SaveAsync(expenseEntry); if (result.HasErrors) { string errorMsg = string.Empty; foreach (var error in result.Errors) { errorMsg += error.ErrorMessage + Environment.NewLine; } Common.Instance.ShowToastMessage(errorMsg, DoubleResources.DangerSnackBar); } else { Common.Instance.ShowToastMessage("Saved", DoubleResources.SuccessSnackBar); ResetModel(DateTime.Now); } } } await Navigation.PopToRootAsync(); }
private async Task <bool> SaveData() { ProjectInsight.Models.TimeAndExpense.ExpenseEntry expenseEntry = new ProjectInsight.Models.TimeAndExpense.ExpenseEntry(); try { if (viewModel.SelectedExpenseType == 1) { //RECEIPT expenseEntry.ActualCost = viewModel.Amount; if (viewModel.PhotoArray != null) { try { ProjectInsight.Models.Files.FileUpload file = new ProjectInsight.Models.Files.FileUpload(); if (string.IsNullOrEmpty(viewModel.PhotoName)) { file.FileName = "IMG_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".jpg"; //string.Format("Receipt{0}.jpg", viewModel.Date.Value.ToString("_yyyyMMdd")); } else { file.FileName = viewModel.PhotoName; } string fileEncodedString = Convert.ToBase64String(viewModel.PhotoArray); byte[] PhotoArray = Encoding.UTF8.GetBytes(fileEncodedString); System.IO.Stream stream = new System.IO.MemoryStream(PhotoArray); file.FileContentsAsStream = stream; file.FileContentsBase64Encoded = fileEncodedString; expenseEntry.UploadedFile = file; } catch (Exception ex) { } } } else if (viewModel.SelectedExpenseType == 2) { //MILEAGE expenseEntry.Qty = viewModel.Amount; expenseEntry.UnitPrice = viewModel.CostPerMile; expenseEntry.ActualCost = expenseEntry.Qty * expenseEntry.UnitPrice; } else if (viewModel.SelectedExpenseType == 3) { //Other expenseEntry.Qty = viewModel.Total; expenseEntry.UnitPrice = viewModel.Amount; expenseEntry.ActualCost = expenseEntry.Qty * expenseEntry.UnitPrice; } expenseEntry.Date = viewModel.Date; expenseEntry.Description = viewModel.Description; if (viewModel.SelectedCompany != null) { expenseEntry.Company_Id = viewModel.SelectedCompany.Id; } if (viewModel.SelectedProject != null) { expenseEntry.Project_Id = viewModel.SelectedProject.Id; } if (viewModel.SelectedTask != null) { expenseEntry.Task_Id = viewModel.SelectedTask.Id; } if (viewModel.SelectedExpenseCode != null) { expenseEntry.ExpenseCode_Id = viewModel.SelectedExpenseCode.Id; } expenseEntry.UserCreated_Id = Common.CurrentWorkspace.UserID; expenseEntry.User_Id = Common.CurrentWorkspace.UserID; ApiSaveResponse result = await ExpenseEntryService.client.SaveAsync(expenseEntry); if (result.HasErrors) { string errorMsg = string.Empty; foreach (var error in result.Errors) { errorMsg += error.ErrorMessage + Environment.NewLine; //Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } slHeader.Text = "Error"; slHeader.TextColor = (Color)Application.Current.Resources["RedTextColor"]; slError.IsVisible = true; slError.Text = errorMsg; imgIcon.Source = "error.png"; } else { } } catch (Exception ex) { slHeader.Text = "Error"; slHeader.TextColor = (Color)Application.Current.Resources["RedTextColor"]; slError.IsVisible = true; slError.Text = "Unknown Error!"; imgIcon.Source = "error.png"; } return(true); }