/// <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); }
/// <summary> /// Method to add new budget breakdown by user /// </summary> /// <param name="budgetBreakdownModel"></param> /// <returns>Completed task </returns> public async Task AddNewBudgetBreakdownByUserId(BudgetBreakdownModel budgetBreakdownModel) { if (budgetBreakdownModel == null) { throw new ArgumentException("Budget Breakdown not found"); } if (budgetBreakdownModel.SavingsBreakdown + budgetBreakdownModel.ExpensesBreakdown > 100) { throw new Exception("Breakdown percents cannot exceed 100%"); } var dbBreakdown = AdoBudgetBreakdownMapper.NewCoreModelToDbEntity(budgetBreakdownModel); await _budgetBreakdownRepository.AddNewBudgetBreakdownByUserId(dbBreakdown); }
/// <summary> /// Method to pull budget breakdown record by user id /// </summary> /// <param name="userId"></param> /// <returns>Budget Breakdown model </returns> public async Task <BudgetBreakdownModel> GetBudgetBreakdownByUser(long userId) { if (userId == 0) { throw new ArgumentException("User not found"); } var dbBudgetBreakdown = await _budgetBreakdownRepository.GetBudgetBreakdownByUserId(userId); if (dbBudgetBreakdown == null) { return(null); } var coreBreakdown = AdoBudgetBreakdownMapper.DbEntityToCoreModel(dbBudgetBreakdown); return(coreBreakdown); }