Example #1
0
        /// <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();
            }
        }
Example #2
0
        /// <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);
     }
 }
Example #9
0
        /// <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);
            }
        }
Example #10
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());
     }
 }
Example #12
0
        /// <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();
            }
        }
Example #13
0
        /// <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);
            }
        }