public int CommitChanges()
        {
            if (string.IsNullOrEmpty(this.token))
                return 0;

            if(ScoreItems.Count > 0)
            {
                TableBatchOperation batch = new TableBatchOperation();
                ScoreItems.ToList().ForEach(x =>
                {
                    batch.InsertOrReplace(x.Value);
                });
                eventScoreTable.ExecuteBatch(batch);
            }

            TableQuery<EventScoreItem> query = new TableQuery<EventScoreItem>()
                .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, this.token));

            var eventScore = eventScoreTable.ExecuteQuery(query).Sum(x=>x.Score);

            var totalItem = new EventScoreItem
            {
                PartitionKey = dddEventId.ToString(),
                RowKey = this.token,
                DDDEventId = dddEventId,
                UserName = userName,
                Score = eventScore
            };

            TableOperation insert = TableOperation.InsertOrReplace(totalItem);
            eventScoreTable.Execute(insert);

            return eventScore;
        }
        private void AddItem(int? timeSlotId, string key, int score = 1)
        {
            var fullKey = timeSlotId != null ? timeSlotId.ToString() + "_" + key : key;

            if (!ScoreItems.ContainsKey(fullKey))
            {
                var scoreItem = new EventScoreItem
                {
                    PartitionKey = token,
                    RowKey = fullKey,
                    DDDEventId = dddEventId,
                    UserName = userName,
                    Score = score
                };
                ScoreItems.Add(fullKey, scoreItem);
            }
        }