public static Expense ToModel(this IExpenseEntity entity) { var expense = new Expense { Id = new StorageKey(KeyGenerator.ExpenseEntitySuffix(entity.RowKey)).InvertedTicks, Approved = entity.Approved.HasValue ? entity.Approved.Value : false, CostCenter = entity.CostCenter, Date = entity.Date.HasValue ? entity.Date.Value : DateTime.UtcNow, ReimbursementMethod = (ReimbursementMethod)Enum.Parse(typeof(ReimbursementMethod), entity.ReimbursementMethod), Title = entity.Title, UserName = entity.PartitionKey.DecodePartitionAndRowKey(), ApproverName = entity.ApproverName }; return expense; }
private void SaveExpense() { var userRepository = new UserRepository(); var user = userRepository.GetUser(this.User.Identity.Name); var approverName = this.Approver.Text; if (string.IsNullOrEmpty(approverName)) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "The approver {0} does not exists", this.Approver.Text)); } var newExpense = new Expense { Id = StorageKey.Now.InvertedTicks, Title = this.ExpenseTitle.Text, CostCenter = user.CostCenter, Approved = false, ReimbursementMethod = (ReimbursementMethod)Enum.Parse(typeof(ReimbursementMethod), this.ExpenseReimbursementMethod.SelectedItem.Value), UserName = user.UserName, Date = DateTime.Parse(this.ExpenseDate.Text, CultureInfo.CurrentUICulture), ApproverName = approverName }; this.ExpenseItems.ForEach(ei => newExpense.Details.Add(ei)); var expenseRepository = new ExpenseRepository(); expenseRepository.SaveExpense(newExpense); user.PreferredReimbursementMethod = (ReimbursementMethod)Enum.Parse(typeof(ReimbursementMethod), this.ExpenseReimbursementMethod.SelectedValue); userRepository.UpdateUserPreferredReimbursementMethod(user); }
public void UpdateApproved(Expense expense) { var context = new ExpenseDataContext(this.account); IExpenseEntity expenseRow = GetExpenseRowById(context, expense.UserName, expense.Id); expenseRow.Approved = expense.Approved; var queue = new AzureQueue<ApprovedExpenseMessage>(this.account, AzureStorageNames.ApprovedExpenseMessage); queue.AddMessage(new ApprovedExpenseMessage { ExpenseId = expense.Id, ApproveDate = DateTime.UtcNow, Username = expense.UserName }); context.UpdateObject(expenseRow); context.SaveChanges(); }
public void SaveExpense(Expense expense) { var context = new ExpenseDataContext(this.account); ExpenseEntity expenseRow = expense.ToTableEntity(); foreach (var expenseItem in expense.Details) { var expenseItemRow = expenseItem.ToTableEntity(expenseRow.PartitionKey, expense.Id); context.AddObject(AzureStorageNames.ExpenseTable, expenseItemRow); } context.AddObject(AzureStorageNames.ExpenseTable, expenseRow); context.SaveChanges(SaveChangesOptions.Batch); foreach (var expenseItem in expense.Details) { // save receipt image if any if (expenseItem.Receipt != null && expenseItem.Receipt.Length > 0) { this.receiptStorage.AddReceipt(expenseItem.Id, expenseItem.Receipt, string.Empty); var queue = new AzureQueue<NewReceiptMessage>(this.account, AzureStorageNames.NewReceiptMessage); queue.AddMessage(new NewReceiptMessage { ExpenseItemId = expenseItem.Id, ExpenseId = expense.Id, Username = expense.UserName }); } } }