/// <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); }
public async Task <IActionResult> AddNewBudgetBreakdown([FromBody] AddNewBudgetBreakdownRequest newBreakdownRequest) { /* validate inputs start */ if (newBreakdownRequest == null) { return(StatusCode(400, "Budget Breakdown not provided")); } if (newBreakdownRequest.ExpensesBreakdown <= 0) { return(StatusCode(400, "Expense Breakdown not provided")); } if (newBreakdownRequest.SavingsBreakdown <= 0) { return(StatusCode(400, "Savings Breakdown not provided")); } /* validate inputs end*/ try { BudgetBreakdownModel coreBreakdownModel = new BudgetBreakdownModel() { UserId = (long)newBreakdownRequest.UserId, BudgetType = newBreakdownRequest.BudgetType, ExpensesBreakdown = newBreakdownRequest.ExpensesBreakdown, SavingsBreakdown = newBreakdownRequest.SavingsBreakdown }; await _budgetBreakdownServices.AddNewBudgetBreakdownByUserId(coreBreakdownModel); return(StatusCode(201)); } catch (ArgumentException ae) { return(StatusCode(400, ae.Message)); } catch (Exception e) { return(StatusCode(500, e.Message)); } }