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 static SaveExpenseResponse ManageExpenses(ManageExpenseRequest request) //Evaluate an Expense { using (var entities = new ExpenseProjectDBEntities()) { try //Correct? { var expense = entities.Expenses.SingleOrDefault(e => e.ID == request.ExpenseID); if (request.Approved) { if (expense.StatusId == 2) { expense.StatusId = 3; //Status of the expense updates from waiting mng approval to waiting acc approval } else if (expense.StatusId == 3) { expense.StatusId = 5; //What to do with Approved Expenses? } } else { expense.StatusId = 4; expense.RejectDescription = request.RejectDescription; } entities.SaveChanges(); var response = new SaveExpenseResponse(); response.IsSuccess = true; response.Message = "The expense's status has been successfully updated."; return(response); } catch (NullReferenceException) { var response = new SaveExpenseResponse(); response.IsSuccess = false; response.Message = "The expense you're trying to evaluate doesn't exist."; return(response); } } }
private static void DeleteExpenseItem(IEnumerable <IdDto> deletedExpenseItems, ExpenseAppEntities entity, SaveExpenseResponse response) { foreach (var item in deletedExpenseItems) { var itemInDb = (from e in entity.ExpenseItems where e.ID == item.ID select e).FirstOrDefault(); if (itemInDb == null) { response.IsSuccess = false; return; } entity.ExpenseItems.Remove(itemInDb); } }
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; }
private static void CreateExpense(int userId, IEnumerable <ExpenseItemDto> expenseItemsDto, ExpenseAppEntities entity, SaveExpenseResponse response) { Expense expense = new Expense(); expense.CreatedDate = DateTime.Now; expense.UserId = userId; entity.Expenses.Add(expense); entity.SaveChanges(); foreach (var item in expenseItemsDto) { CreateExpenseItem(expense, item, entity); expense.TotalAmount += item.Amount; } expense.LastExpenseActionId = (int)StatusEnum.Ongoing; entity.SaveChanges(); response.ExpenseId = expense.ID; response.IsSuccess = true; }
public static SaveExpenseResponse SubmitExpenseToDatabase(SaveExpenseRequest request) //Submit New Expense { var response = new SaveExpenseResponse(); var expenseItemList = request.ExpenseItemList; using (var entities = new ExpenseProjectDBEntities()) { //using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew)) //{ var currentExpenseID = request.ExpenseID; Expense.Data.Expense expense = new Data.Expense(); if (currentExpenseID == 0) //If Expense doesn't exist, creates a new one and pushes the ID to currentExpenseID { expense = new Expense.Data.Expense { TotalAmount = expenseItemList.Sum(x => x.ExpenseItemAmount), //Holy CreatedDate = DateTime.Now, Created_User = 1, //Session? Angular? StatusId = 2 }; entities.Expenses.Add(expense); //Creates a new expense in db } Expense.Data.ExpenseItem expenseItem; if (entities.SaveChanges() > 0 || expenseItemList.Count > 0) //??? { foreach (var item in expenseItemList) { expenseItem = new ExpenseItem(); expenseItem.ExpenseAmount = item.ExpenseItemAmount; expenseItem.ExpenseDate = item.ExpenseItemDate; expenseItem.ExpenseDescription = item.ExpenseItemDescription; expenseItem.ExpenseId = (currentExpenseID == 0) ? expense.ID : currentExpenseID; //This is where you tie the item to the expense if (item.ExpenseItemID == 0) { entities.ExpenseItems.Add(expenseItem); } else { var expenseItemDb = entities.ExpenseItems.Where(e => e.ID == item.ExpenseItemID).First(); expenseItemDb.ExpenseDescription = expenseItem.ExpenseDescription; expenseItemDb.ExpenseDate = expenseItem.ExpenseDate; expenseItemDb.ExpenseAmount = expenseItem.ExpenseAmount; } } currentExpenseID = (currentExpenseID == 0) ? expense.ID : currentExpenseID; var expenseItemListDB = entities.ExpenseItems.Where(i => i.ExpenseId == currentExpenseID).ToList(); var notMatchedExpenseItems = expenseItemListDB.Where(e => !expenseItemList.Select(i => i.ExpenseItemID).Contains(e.ID)).ToList(); foreach (var item in notMatchedExpenseItems) { entities.ExpenseItems.Remove(item); } entities.SaveChanges(); } else { response.IsSuccess = false; response.Message = "There was a problem."; } SetStatusToWaitingForManager(currentExpenseID); entities.SaveChanges(); //scope.Commit(); } response.IsSuccess = true; response.Message = "Your expense has been successfully created."; return(response); }