/// <summary> /// Add or update a user currency. /// </summary> /// <param name="userId"></param> /// <param name="newCurrency"></param> public void AddOrUpdateCurrency(int userId, string newCurrency) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { // Checking if user had a currency preference or not. var userCurrency = context.Settings.FirstOrDefault(x => x.Name.Trim().ToLower() == "currency" && x.UserID == userId); // if yes, just update the value if (userCurrency != null) { userCurrency.Value = newCurrency; } else { // create a new setting item, with name and value. Setting newSetting = new Setting() { Name = "Currency", Value = newCurrency, UserID = userId }; context.Settings.Add(newSetting); } context.SaveChanges(); } }
/// <summary> /// Update an existing expense. /// </summary> /// <param name="existingExpense"></param> public bool UpdateExistingExpense(Expense existingExpense) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { // Check if item is successful updated or not. bool isItemUpdated = false; // Checking if the expense item already existed in the DB. Expense selectedItem = context.Expenses .FirstOrDefault(x => x.Id == existingExpense.Id && x.UserID == existingExpense.UserID); // Update the new data to the existing item. if (selectedItem != null) { selectedItem.CategoryName = existingExpense.CategoryName; selectedItem.Amount = existingExpense.Amount; selectedItem.CreatedDate = existingExpense.CreatedDate; context.SaveChanges(); isItemUpdated = true; } return(isItemUpdated); } }
/// <summary> /// Query settings belong to a user. /// </summary> /// <param name="userId"></param> /// <returns></returns> public List <Setting> GetUserSettings(int userId) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { return(context.Settings.Where(x => x.UserID == userId).ToList()); } }
/// <summary> /// Query all expense category of a user. /// This data will be shown in a dataGridView. /// </summary> /// <param name="userId"></param> /// <returns></returns> public List <Category> GetExpensesCategoriesByUserId(int userId) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { return(context.Categories.Where(x => x.UserID == userId).ToList()); } }
/// <summary> /// Get all categories which belong to a user. /// This is used to bind data to the category comboBox. /// </summary> /// <param name="userId"></param> /// <returns></returns> public List <string> GetExpenseCategories(int userId) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { return(context.Categories.Where(x => x.UserID == userId).Select(x => x.Name).ToList()); } }
/// <summary> /// Get user by email and password /// This function is used when user do login. /// </summary> /// <param name="email"></param> /// <param name="password"></param> /// <returns></returns> public User GetUserByEmailAndPassword(string email, string password) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { return(context.Users.FirstOrDefault(x => x.EmailAddress == email && x.Password == password)); } }
/// <summary> /// Get user by ID. /// </summary> /// <param name="id"></param> /// <returns></returns> public User GetUserByIdAsync(int id) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { return(context.Users.FirstOrDefault(x => x.Id == id)); } }
/// <summary> /// Check if a category name is already used or not. /// </summary> /// <param name="userId"></param> /// <param name="categoryName"></param> /// <returns></returns> public bool IsCategoryNameExisted(int userId, string categoryName) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { return(context.Categories.FirstOrDefault(x => x.UserID == userId && x.Name == categoryName) != null); } }
/// <summary> /// Adding a new expense. /// </summary> /// <param name="newExpense"></param> /// <returns></returns> public bool AddNewExpense(Expense newExpense) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { context.Expenses.Add(newExpense); context.SaveChanges(); return(newExpense.Id > 0); } }
/// <summary> /// Adding a new user. /// </summary> /// <param name="newUser"></param> /// <returns></returns> public bool AddNewUser(User newUser) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { context.Users.Add(newUser); context.SaveChanges(); return(newUser.Id > 0); } }
/// <summary> /// Querying expenses by userID and date range. /// </summary> /// <param name="userId"></param> /// <param name="fromDate"></param> /// <param name="toDate"></param> /// <returns></returns> public List <Expense> FilterExpensesByDate(int userId, DateTime fromDate, DateTime toDate) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { return(context.Expenses .Where(x => DbFunctions.TruncateTime(x.CreatedDate) >= fromDate.Date && DbFunctions.TruncateTime(x.CreatedDate) <= toDate.Date && x.UserID == userId) .OrderBy(x => x.CreatedDate) .ToList()); } }
/// <summary> /// Adding a new category. /// </summary> /// <param name="userId"></param> /// <param name="categoryName"></param> public void AddCategory(int userId, string categoryName) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { Category category = new Category() { Name = categoryName, UserID = userId }; context.Categories.Add(category); context.SaveChanges(); } }
/// <summary> /// Delete an existing Category. /// </summary> /// <param name="selectedCategory"></param> public bool DeleteSelectedCategory(Category selectedCategory) { using (ExpenseLoggerDBContext context = new ExpenseLoggerDBContext()) { // Check if item is successful deleted or not. bool isItemDeleted = false; // Checking if the expense item already existed in the DB. Category selectedItem = context.Categories .FirstOrDefault(x => x.Id == selectedCategory.Id && x.UserID == selectedCategory.UserID); // Delete the item if item is existing. if (selectedItem != null) { context.Categories.Remove(selectedItem); context.SaveChanges(); isItemDeleted = true; } return(isItemDeleted); } }