/// <summary> /// Serialise a <see cref="TrackingDataItem" /> ready for persistence. /// </summary> /// <param name="trackingDataItem"> /// The original <see cref="TrackingDataItem" /> to serialise. /// </param> /// <returns> /// A <see cref="SerialisableTrackingDataItem" /> containing a serialised /// copy of the <see cref="TrackingDataItem" />. /// </returns> private static SerialisableTrackingDataItem buildSerialisableTrackingDataItem(TrackingDataItem trackingDataItem) { SerialisableTrackingDataItem serialisableTrackingDataItem = new SerialisableTrackingDataItem(); serialisableTrackingDataItem.Annotations.AddRange(trackingDataItem.Annotations); serialisableTrackingDataItem.Data = buildSerialisableData(trackingDataItem.Data); serialisableTrackingDataItem.FieldName = trackingDataItem.FieldName; return(serialisableTrackingDataItem); }
public void SendTextMessage(CallbackData callbackData, string userResponse, Keyboard keyboard) { try { User user = new User(); user = callbackData.Sender; String context = callbackData.Context; var messageText = "Welcome Message in 5 beer BOT"; if (_cache.TryGetValue(user.Id, out List <TrackingDataItem> trackItems)) { var inList = trackItems.FindIndex(x => x.QuestionNumber == userResponse); if (inList != -1) { bool success = Int32.TryParse(trackItems[inList].QuestionNumber, out int getQuestion); if (success) { trackItems[inList].UserId = user.Id; trackItems[inList].QuestionNumber = trackItems[inList].QuestionNumber; trackItems[inList].Counter = trackItems[inList].Counter + 1; // trackItems.Add(trackingAlready); _cache.Set(user.Id, trackItems, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromMinutes(15))); messageText = SendEinsteinQuote(Convert.ToInt32(getQuestion), trackItems[inList].Counter).Result; _logger.LogError(getQuestion, "odabrani broj"); } else { messageText = SendInfoMessage(userResponse).Result; } } else { bool success = Int32.TryParse(userResponse, out int getQuestion); if (success) { TrackingDataItem newTrackingItem = new TrackingDataItem() { Counter = 1, QuestionNumber = userResponse, UserId = user.Id }; trackItems.Add(newTrackingItem); _cache.Set(user.Id, trackItems, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromMinutes(15))); messageText = SendEinsteinQuote(Convert.ToInt32(getQuestion), newTrackingItem.Counter).Result; _logger.LogError(getQuestion, "odabrani broj"); } else { messageText = SendInfoMessage(userResponse).Result; } } } else { bool success = Int32.TryParse(userResponse, out int getQuestion); if (success) { TrackingDataItem newTrackingItem = new TrackingDataItem() { Counter = 1, QuestionNumber = userResponse, UserId = user.Id }; List <TrackingDataItem> trackIt = new List <TrackingDataItem>(); messageText = SendEinsteinQuote(getQuestion, newTrackingItem.Counter).Result; trackIt.Add(newTrackingItem); _cache.Set(user.Id, trackIt, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromMinutes(15))); } else { messageText = SendInfoMessage(userResponse).Result; } } ExcecuteMessaging(callbackData, messageText, user.Id, keyboard); } catch (Exception ex) { _logger.LogError(ex.ToString(), "FUBAR here"); ex.ToString(); } }