public void UpsertPayoutTransactions(
            PayoutDetail transactions, long shopifyPayoutId)
        {
            var filteredTransactions
                = transactions
                  .transactions
                  .Where(x => x.payout_id == shopifyPayoutId).ToList();

            var payoutHeader = _persistRepository.RetrievePayout(shopifyPayoutId);

            foreach (var transaction in filteredTransactions)
            {
                var existingRecord =
                    _persistRepository.RetrievePayoutTransaction(
                        transaction.payout_id.Value, transaction.id);

                if (existingRecord != null)
                {
                    _logger.Debug(
                        $"Transaction already exists for " +
                        $"Payout Id: {transaction.payout_id} - " +
                        $"(Transaction) Id {transaction.id}");

                    existingRecord.Json        = transaction.SerializeToJson();
                    existingRecord.LastUpdated = DateTime.UtcNow;
                }
                else
                {
                    _logger.Debug(
                        $"Creating Transcation for " +
                        $"Payout Id: {transaction.payout_id} - " +
                        $"(Transaction) Id {transaction.id}");

                    var newTransaction = new ShopifyPayoutTransaction()
                    {
                        MonsterParentId      = payoutHeader.Id,
                        ShopifyPayoutId      = transaction.payout_id.Value,
                        ShopifyPayoutTransId = transaction.id,
                        ShopifyOrderId       = transaction.source_order_id,
                        Type        = transaction.type,
                        Json        = transaction.SerializeToJson(),
                        CreatedDate = DateTime.UtcNow,
                        LastUpdated = DateTime.UtcNow,
                    };

                    _persistRepository.InsertPayoutTransaction(newTransaction);
                }
            }
        }
        public void PersistPayoutTransactions(
            PayoutDetail transactions, long shopifyPayoutId)
        {
            var filteredTransactions
                = transactions
                  .transactions
                  .Where(x => x.payout_id == shopifyPayoutId).ToList();

            foreach (var transaction in filteredTransactions)
            {
                var persistedTransaction =
                    _persistRepository.RetrievePayoutTransaction(
                        transaction.payout_id.Value, transaction.id);

                if (persistedTransaction != null)
                {
                    _logger.Info(
                        $"Transaction already exists for " +
                        $"Payout Id: {transaction.payout_id} - " +
                        $"(Transaction) Id {transaction.id}");
                    continue;
                }

                _logger.Info(
                    $"Creating Transcation for " +
                    $"Payout Id: {transaction.payout_id} - " +
                    $"(Transaction) Id {transaction.id}");

                var newTransaction = new UsrShopifyPayoutTransaction()
                {
                    Type                 = transaction.type,
                    ShopifyPayoutId      = transaction.payout_id.Value,
                    ShopifyPayoutTransId = transaction.id,
                    Json                 = transaction.SerializeToJson(),
                    CreatedDate          = DateTime.UtcNow,
                };

                _persistRepository.InsertPayoutTransaction(newTransaction);
            }
        }