public void Save(ExpenseExport expenseExport) { var context = new ExpenseDataContext(this.account); ExpenseExportEntity entity = expenseExport.ToTableEntity(); context.AddObject(AzureStorageNames.ExpenseExportTable, entity); context.SaveChanges(); }
public void Run(ApprovedExpenseMessage message) { try { Expense expense = this.expenses.GetExpenseById(message.Username, message.ExpenseId); if (expense == null) { return; } // if the expense was not updated but a message was persisted, we need to delete it if (!expense.Approved) { return; } double totalToPay = expense.Details.Sum(x => x.Amount); var export = new ExpenseExport { ApproveDate = message.ApproveDate, ApproverName = expense.ApproverName, CostCenter = expense.CostCenter, Id = expense.Id, ReimbursementMethod = expense.ReimbursementMethod, TotalAmount = totalToPay, UserName = expense.UserName }; this.expenseExports.Save(export); } catch (InvalidOperationException ex) { var innerEx = ex.InnerException as DataServiceClientException; if (innerEx != null && innerEx.StatusCode == (int)HttpStatusCode.Conflict) { // the data already exists so we can return true because we have processed this before return; } Log.Write(EventKind.Error, ex.TraceInformation()); throw; } return; }
public void Delete(ExpenseExport expenseExport) { var context = new ExpenseDataContext(this.account); var query = (from export in context.ExpenseExport where export.PartitionKey.CompareTo(expenseExport.ApproveDate.ToExpenseExportKey()) == 0 && export.RowKey.CompareTo(expenseExport.Id) == 0 select export).AsTableServiceQuery(); ExpenseExportEntity entity = query.Execute().SingleOrDefault(); if (entity == null) { return; } context.DeleteObject(entity); context.SaveChanges(); }