public List<SourceTime> getSourceTimeData(DateTime fromDate, DateTime toDate, Site site) { List<SourceTime> sourceTimes = new List<SourceTime>(); int startIndex = 1; Boolean isMore; DataFeed feed = null; do { isMore = false; try { feed = getGADataFeed(site, fromDate, toDate, "ga:campaign,ga:keyword,ga:medium,ga:source,ga:daysToTransaction,ga:transactionId,ga:visitsToTransaction", "ga:transactions", "", "", startIndex); if (feed != null) { foreach (DataEntry singleEntry in feed.Entries) { SourceTime sourceTime = new SourceTime(singleEntry, site); sourceTimes.Add(sourceTime); isMore = true; } } } catch (Exception rEx) { log.Error("Error in getSourceTimeData", rEx); } if (isMore) startIndex += numberOfGARecordsToRetrievePerRequest; } while (isMore); return sourceTimes; }
public void recordAnalyticsSourceTime(SourceTime sourceTime) { SqlConnection conn = new SqlConnection(connectionAnalytics); try { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = @"IF NOT EXISTS(SELECT (1) FROM analytics_source_time (nolock) WHERE TransactionID = @TransactionID) INSERT INTO analytics_source_time (Campaign, Keyword, Medium, Source, TransactionID, DaysToTransaction, VisitsToTransaction, TrafficType, Analytics_AccountID) VALUES (@Campaign, @Keyword, @Medium, @Source, @TransactionID, @DaysToTransaction, @VisitsToTransaction, null, @AccountID) ELSE UPDATE analytics_source_time SET Campaign = @Campaign, Keyword = @Keyword, Medium = @Medium, Source = @Source, DaysToTransaction = @DaysToTransaction, VisitsToTransaction = @VisitsToTransaction, TrafficType = null, Analytics_AccountID = @AccountID WHERE TransactionID = @TransactionID"; cmd.Parameters.Add("@Campaign", SqlDbType.NVarChar); cmd.Parameters["@Campaign"].Value = truncate(sourceTime.campaign, 255); cmd.Parameters.Add("@Keyword", SqlDbType.NVarChar); cmd.Parameters["@Keyword"].Value = truncate(sourceTime.keyword, 255); cmd.Parameters.Add("@Source", SqlDbType.NVarChar); cmd.Parameters["@Source"].Value = truncate(sourceTime.source, 255); cmd.Parameters.Add("@Medium", SqlDbType.NVarChar); cmd.Parameters["@Medium"].Value = truncate(sourceTime.medium, 255); cmd.Parameters.Add("@TransactionID", SqlDbType.NVarChar); cmd.Parameters["@TransactionID"].Value = truncate(sourceTime.orderNumber,255); cmd.Parameters.Add("@DaysToTransaction", SqlDbType.NVarChar); cmd.Parameters["@DaysToTransaction"].Value = Convert.ToInt32(sourceTime.daysToTransaction); cmd.Parameters.Add("@VisitsToTransaction", SqlDbType.NVarChar); cmd.Parameters["@VisitsToTransaction"].Value = Convert.ToInt32(sourceTime.daysToTransaction); cmd.Parameters.Add("@AccountID", SqlDbType.NVarChar); cmd.Parameters["@AccountID"].Value = truncate(sourceTime.gaAccount, 50); cmd.ExecuteNonQuery(); cmd.Dispose(); } catch (SqlException sqle) { log.Error("Error in recordAnalyticsSourceTime", sqle); } finally { if (conn != null) { if (conn.State == System.Data.ConnectionState.Open) { conn.Close(); } } } }