public void AddClick(int position, long value) { lock (_blockStatsLock) { if (!PositionsConvertion.ContainsKey(position)) { PositionsConvertion[position] = new ConvertionObject(); } PositionsConvertion[position].Clicks++; PositionsConvertion[position].Value += value; } }
public AdStats() { ConvObject = new ConvertionObject(); }
private void SaveAndClear(object source, ElapsedEventArgs e) { try { ConvertionObject groupAConvertion; ConvertionObject groupBConvertion; Dictionary<int, ConvertionObject> tempPositionsConvertion; lock (_blockStatsLock) { tempPositionsConvertion = PositionsConvertion; PositionsConvertion = new Dictionary<int, ConvertionObject>(); groupAConvertion = _groupAConvertion; _groupAConvertion = new ConvertionObject(); groupBConvertion = _groupBConvertion; _groupBConvertion = new ConvertionObject(); } Trace.TraceInformation("Saving stats to SQL DB..."); var cmd = new SqlCommand( "INSERT INTO [Convertions]([AGviews],[AGclicks],[AGvalue],[BGviews],[BGclicks],[BGvalue],[InsertDate]," + "[BlockId]) VALUES (@AGviews, @AGclicks, @AGvalue, @BGviews, @BGclicks, @BGvalue, @InsertDate, @BlockId)"); cmd.CommandType = CommandType.Text; cmd.Connection = Connection; cmd.Parameters.AddWithValue("@AGviews", groupAConvertion.Views); cmd.Parameters.AddWithValue("@AGclicks", groupAConvertion.Clicks); cmd.Parameters.AddWithValue("@AGvalue", groupAConvertion.Value); cmd.Parameters.AddWithValue("@BGviews", groupBConvertion.Views); cmd.Parameters.AddWithValue("@BGclicks", groupBConvertion.Clicks); cmd.Parameters.AddWithValue("@BGvalue", groupBConvertion.Value); cmd.Parameters.AddWithValue("@BlockId", _blockId); if (groupBConvertion.Views == 0) { Utils.DbgBreak(); } if (GeneralSettings.ChangeTimeSpeed) { cmd.Parameters.AddWithValue("@InsertDate", StageOptimizer.CurrentDate); } else { cmd.Parameters.AddWithValue("@InsertDate", DateTime.Now); } cmd.ExecuteNonQuery(); foreach (var dictEntry in tempPositionsConvertion) { cmd = new SqlCommand( "INSERT INTO [PositionsStats] (Position, BlockId, Views, Clicks, Value, InsertDate) VALUES (@Position," + "@BlockId, @Views, @Clicks, @Value, @InsertDate)"); cmd.CommandType = CommandType.Text; cmd.Connection = Connection; cmd.Parameters.AddWithValue("@Position", dictEntry.Key); cmd.Parameters.AddWithValue("@BlockId", _blockId); cmd.Parameters.AddWithValue("@Views", groupBConvertion.Views); cmd.Parameters.AddWithValue("@Clicks", dictEntry.Value.Clicks); cmd.Parameters.AddWithValue("@Value", dictEntry.Value.Value); if (GeneralSettings.ChangeTimeSpeed) { cmd.Parameters.AddWithValue("@InsertDate", StageOptimizer.CurrentDate); } else { cmd.Parameters.AddWithValue("@InsertDate", DateTime.Now); } cmd.ExecuteNonQuery(); } } catch (Exception ex) { Utils.DbgBreak(); Trace.TraceError("SaveAndClear failed with exception: {0}", ex.Message); } }