public IActionResult Delete(EditTransactionDto dto)
        {
            var transaction = transactionLineRepository.GetById(dto.Id);

            if (transaction == null)
            {
                return(this.Error("Transaction not found"));
            }

            if (transaction is MultilineTransactionLine)
            {
                var transactionLines = transactionLineRepository.GetMultilineDetailTransactionLine(dto.Id);
                foreach (var item in transactionLines)
                {
                    transactionLineRepository.Delete(item);
                }
            }

            if (transaction is MultilineDetailTransactionLine)
            {
                MultiCategoryTransactionLine parent = ((MultilineDetailTransactionLine)transaction).Parent;

                if (parent != null)
                {
                    parent.Remove((MultilineDetailTransactionLine)transaction);
                }
            }

            transactionLineRepository.Delete(transaction);



            return(Ok());
        }
        public IActionResult Consolidate(EditTransactionDto dto)
        {
            var transaction = transactionLineRepository.GetById(dto.Id);

            if (transaction is SingleTransactionLine)
            {
                var consolidatedLine = ((SingleTransactionLine)transaction)
                                       .Consolidate(new ExecutedTransactionLine(new TransactionLineInfo(transaction.TransactionDate, dto.Amount, transaction.Description)));

                transactionLineRepository.Add(consolidatedLine);
                transactionLineRepository.Delete(transaction);
            }
            else if (transaction is MultilineTransactionLine)
            {
                var consolidatedLine = ((MultilineTransactionLine)transaction)
                                       .Consolidate(new ExecutedTransactionLine(new TransactionLineInfo(transaction.TransactionDate, dto.Amount, transaction.Description)));

                transactionLineRepository.Add(consolidatedLine);
                transactionLineRepository.Delete(transaction);
            }
            else
            {
                return(Error("Invalid type of transaction. Expected 'SingleTransactionLine' or 'MultilineTransactionLine' but found '"
                             + transaction.GetType().Name + "'"));
            }

            return(Ok());
        }