private async Task <List <BudgetHeadDto> > GetChildBudgetHead(long parentId)
        {
            var budgetHeadDto = new BudgetHeadDto();
            List <BudgetHeadDto> budgetHeadDtoList = new List <BudgetHeadDto>();

            var childBudgetHeadDto = new BudgetHeadDto();
            var childBudgetHead    = await _unitOfWork.BudgetHeads.GetChildren(parentId);

            foreach (var cc in childBudgetHead)
            {
                List <BudgetHeadDto> childBudgetHeadDtoList = new List <BudgetHeadDto>();
                childBudgetHeadDtoList = await GetChildBudgetHead(cc.Id);

                budgetHeadDto = _mapper.Map <BudgetHead, BudgetHeadDto>(cc);
                budgetHeadDto.ChildBudgetHead = childBudgetHeadDtoList;
                budgetHeadDtoList.Add(budgetHeadDto);
            }
            return(budgetHeadDtoList);
        }
        public async Task <IActionResult> GetTree()
        {
            var budgetHeads = await _unitOfWork.BudgetHeads.GetParents();

            if (budgetHeads.Count == 0)
            {
                return(BadRequest("No BudgetHeads exist"));
            }

            var budgetHeadDto = new BudgetHeadDto();
            List <BudgetHeadDto> budgetHeadDtoList = new List <BudgetHeadDto>();

            foreach (var itemType in budgetHeads)
            {
                List <BudgetHeadDto> childbudgetHeadDtoList = new List <BudgetHeadDto>();
                childbudgetHeadDtoList = await GetChildBudgetHead(itemType.Id);

                budgetHeadDto = _mapper.Map <BudgetHead, BudgetHeadDto>(itemType);
                budgetHeadDto.ChildBudgetHead = childbudgetHeadDtoList;
                budgetHeadDtoList.Add(budgetHeadDto);
            }
            return(Ok(budgetHeadDtoList));
        }