public async Task <IActionResult> Create([FromBody] BudgetCreateViewModel input) { var user = User.GetDetails(); var data = _mapper.Map <BudgetCreateViewModel, Budget>(input); var budget = new Budget(input.Name, input.Description, input.BudgetHeadId, input.BudgetCategoryId, input.DepartmentId, input.CurrencyId, user.Id); string referenceId = await _unitOfWork.NumberingSequences.GenerateReferenceId(NumberingSequenceTypeEnum.Budget); if (referenceId == null) { return(BadRequest("ReferenceId not generated")); } budget.SetBudgetData(input.BudgetType, referenceId, input.DivisionId, input.SubDivisionId, input.PersonInChargeId, input.Justification); budget.SetBudgetAmountData(input.StartDate, input.EndDate, input.TransactionDate, input.BasicAmount, input.TaxAmount); budget.CalculateTotalAmount(); budget.AddSpendLimits(data.BudgetSpendLimits.ToList(), user.Id); budget.AddCostCodes(data.BudgetCostCodes.ToList(), user.Id); budget.SetBaseId(null); budget.SetRevisionNumber(0); budget.SetActive(); if (await _unitOfWork.Budgets.AnyAsync(budget)) { return(BadRequest("Budget Already Exists")); } _unitOfWork.Budgets.Add(budget); await _unitOfWork.CompleteAsync(user.Id); return(Ok(budget)); }
public async Task <IActionResult> Update([FromBody] BudgetEditViewModel input) { var user = User.GetDetails(); var data = _mapper.Map <BudgetEditViewModel, Budget>(input); var previousBudget = await _unitOfWork.Budgets.GetBudgets(input.Uid); previousBudget.SetInActive(); _unitOfWork.Budgets.Update(previousBudget); await _unitOfWork.CompleteAsync(user.Id); var budget = new Budget(input.Name, input.Description, input.BudgetHeadId, input.BudgetCategoryId, input.DepartmentId, input.CurrencyId, user.Id); budget.SetBudgetData(input.BudgetType, previousBudget.ReferenceId, input.DivisionId, input.SubDivisionId, input.PersonInChargeId, input.Justification); budget.SetBudgetAmountData(input.StartDate, input.EndDate, input.TransactionDate, input.BasicAmount, input.TaxAmount); budget.CalculateTotalAmount(); budget.AddSpendLimits(data.BudgetSpendLimits.ToList(), user.Id); budget.AddCostCodes(data.BudgetCostCodes.ToList(), user.Id); if (previousBudget != null) { if (previousBudget.BaseId > 0) { budget.SetBaseId(previousBudget.BaseId); } else { budget.SetBaseId(previousBudget.Id); } budget.SetRevisionNumber(previousBudget.RevisionNumber + 1); budget.SetActive(); } if (await _unitOfWork.Budgets.AnyAsync(budget)) { return(BadRequest("budget Already Exists.")); } _unitOfWork.Budgets.Add(budget); await _unitOfWork.CompleteAsync(user.Id); return(Ok(budget)); }