示例#1
0
        public static SaveExpenseResponse SaveExpense(ExpenseSaveRequest request)
        {
            SaveExpenseResponse response = new SaveExpenseResponse();
            ExpenseAppEntities  entity   = new ExpenseAppEntities();

            try
            {
                if (request.ExpenseId == 0)
                {
                    CreateExpense(request.UserId, request.ExpenseItemsDto, entity, response);
                    CreateExpenseHistory(response.ExpenseId, entity, null);
                }
                else
                {
                    UpdateExpense(request, entity, response);
                }

                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                log.Error("Save Expense Unsuccessful", ex);
            }
            finally
            {
                entity.Dispose();
            }
            return(response);
        }
示例#2
0
 public IHttpActionResult SaveExpense(ExpenseSaveRequest request)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest());
     }
     return(Ok(ExpenseHandlers.SaveExpense(request)));
 }
示例#3
0
        private static void UpdateExpense(ExpenseSaveRequest request, ExpenseAppEntities entity, SaveExpenseResponse response)
        {
            var expenseInDb = (from e in entity.Expenses
                               where e.ID == request.ExpenseId
                               select e).FirstOrDefault();

            if (expenseInDb == null)
            {
                response.IsSuccess = false;
                return;
            }

            expenseInDb.TotalAmount = 0;

            if (request.DeletedExpenseItems.Any())
            {
                DeleteExpenseItem(request.DeletedExpenseItems, entity, response);
            }

            foreach (var item in request.ExpenseItemsDto)
            {
                expenseInDb.TotalAmount += item.Amount;

                var expenseItemInDb = (from e in entity.ExpenseItems
                                       where e.ID == item.ID
                                       select e).FirstOrDefault();

                if (expenseItemInDb == null)
                {
                    CreateExpenseItem(expenseInDb, item, entity);
                }
                else
                {
                    UpdateExpenseItem(expenseItemInDb, item, entity);
                }
            }
            expenseInDb.LastExpenseActionId = (int)StatusEnum.Ongoing;
            entity.SaveChanges();
            response.IsSuccess = true;
        }