/// <summary>
        /// Method to update existing budget breakdown by user id
        /// </summary>
        /// <param name="budgetBreakdownModel"></param>
        /// <returns>Completed task</returns>
        public async Task UpdateBudgetBreakdownByUserId(BudgetBreakdownModel budgetBreakdownModel)
        {
            //validate inputs
            if (budgetBreakdownModel == null)
            {
                throw new ArgumentException("Budget Breakdown not found");
            }

            //validate inputs don't exceed 100
            if (budgetBreakdownModel.SavingsBreakdown + budgetBreakdownModel.ExpensesBreakdown > 100)
            {
                throw new Exception("Breakdown percents cannot exceed 100%");
            }

            //pull existing budget breakdown record
            var dbBudgetBreakdown = await _budgetBreakdownRepository.GetBudgetBreakdownByUserId(budgetBreakdownModel.UserId);

            //validate that the correct breakdown was pulled
            if (budgetBreakdownModel.Id != dbBudgetBreakdown.Id)
            {
                throw new Exception("Budget Breakdown records do not match");
            }

            //throw exception if not valid
            if (dbBudgetBreakdown == null)
            {
                throw new Exception("Budget Breakdown not found");
            }


            //map core model to db entity
            var dbBudgetBreakdownEntity = AdoBudgetBreakdownMapper.ExistingCoreModelToDbEntity(budgetBreakdownModel);

            await _budgetBreakdownRepository.UpdateBudgetBreakdownByUserId(dbBudgetBreakdownEntity);
        }