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()); }