I'll preface this question by saying I am relatively new to DDD so I may be making some fundamental mistakes here!
I am working on a project which involves the concepts of Transactions (in the financial sense like Credit Card Transaction, or Single/Multiple CardTransaction.). A Transaction can be on Single card or Multiple Cards. The transaction amount may differ for each card. Also Cardholder or CardCustomer can be same or different.
A Transaction perform some specific business logic execution based on TransactionTypes (like Activate, Redeem ....).
A Transaction will perform following operations - Pre Transaction Validation on Card - Update Balance - Update Card Status - Update Customer info - Log Transaction
Now i am confused to decide what could be my aggregateroot here.
Use transaction an an entity holding cardid, amount, customerid, transactiontype, transactionlogid as a ValueObject and Card, CardAmountSummary, CardCustomer, and TransactionLog as an entity Create Seperate AggreateRoot for SinglegiftCardTransaction, MultipleGiftCardTransaction, BookletTransaction, WalletTransaction each will act as a wrapper for Transaction/s. Transaction boundary may differ based on bulk or single transaction.
Use Transaction as a AggregateRoot holding a list of Cards, Each Card will have CustomerId, Amount, CardAmountSummaryId, transactionlogid, transactiontypeid as a Value object.
What would be best fit for AggreateRoot and Entities here ???