public async Task <DailyExpenseReturnModel> AddUserDailyExpense(AddExpense addExpenseModel)
        {
            UriBuilder uriBuilder = new UriBuilder(ApiConstants.BaseUri)
            {
                Path = ApiConstants.AddDailyExpense
            };
            DailyExpenseReturnModel dailyExpenseReturnModel = await _genericRepository.PostAsync <AddExpense, DailyExpenseReturnModel>(uriBuilder.ToString(), addExpenseModel);

            return(dailyExpenseReturnModel);
        }
        public IHttpActionResult AddUserDailyExpense(AddExpense addExpenseModel)
        {
            DailyExpense dailyExpense = new DailyExpense();

            // Fetch category id from category name
            int categoryID = db.Categories.Where(e => e.CategoryName.Equals(addExpenseModel.Category)).FirstOrDefault().CategoryID;

            int week  = HelperFunctions.HelperFunctions.CurrentWeekNumber;
            int month = DateTime.UtcNow.Month;
            int year  = DateTime.UtcNow.Year;

            // Create a new entry for DailyExpense
            dailyExpense.UserDataID   = addExpenseModel.UserDataID;
            dailyExpense.CategoryID   = categoryID;
            dailyExpense.Amount       = addExpenseModel.Amount;
            dailyExpense.CurrentWeek  = week;
            dailyExpense.CurrentMonth = month;
            dailyExpense.CurrentYear  = year;
            dailyExpense.DateCreated  = DateTime.UtcNow;
            dailyExpense.DateModified  = DateTime.UtcNow;

            // Update WeeklySaving - Subtract the daily expense amount from the total amount for that category

            WeeklySaving weeklySaving = db.WeeklySavings.Where(e =>
                                                               e.UserDataID == addExpenseModel.UserDataID &&
                                                               e.CategoryID == categoryID &&
                                                               e.CurrentMonth == month &&
                                                               e.CurrentYear == year &&
                                                               e.CurrentWeek == week).FirstOrDefault();

            if (weeklySaving != null && weeklySaving.Amount != 0.00m && weeklySaving.Amount >= addExpenseModel.Amount)
            {
                weeklySaving.Amount -= addExpenseModel.Amount;
            }
            else
            {
                return(BadRequest());
            }

            if (ModelState.IsValid)
            {
                DailyExpenseReturnModel dailyExpenseReturnModel = new DailyExpenseReturnModel();

                // Saves data in DB
                db.Entry(weeklySaving).State = EntityState.Modified;
                _ = db.DailyExpenses.Add(dailyExpense);
                db.SaveChanges();
                dailyExpenseReturnModel.isDatabaseUpdated = true;


                // Verifies if weekly limit is reached

                WeeklyExpenseDetail weeklyExpenseDetail = db.WeeklyExpenseDetails.Where(e =>
                                                                                        e.UserDataID == addExpenseModel.UserDataID &&
                                                                                        e.CategoryID == categoryID).FirstOrDefault();
                if (this.VerifyThresholdNotReached(weeklyExpenseDetail.Amount, weeklySaving.Amount))
                {
                    dailyExpenseReturnModel.hasThresholdReached = false;
                }
                else
                {
                    dailyExpenseReturnModel.hasThresholdReached = true;
                }

                return(Ok(dailyExpenseReturnModel));
            }
            else
            {
                return(BadRequest());
            }
        }