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); }
public IHttpActionResult SaveExpense(ExpenseSaveRequest request) { if (!ModelState.IsValid) { return(BadRequest()); } return(Ok(ExpenseHandlers.SaveExpense(request))); }
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; }