示例#1
0
        public void Save(ExpenseExport expenseExport)
        {
            var context = new ExpenseDataContext(this.account);
            ExpenseExportEntity entity = expenseExport.ToTableEntity();

            context.AddObject(AzureStorageNames.ExpenseExportTable, entity);
            context.SaveChanges();
        }
示例#2
0
        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;
        }
示例#3
0
        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();
        }