Пример #1
0
        /// <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);
        }
Пример #2
0
        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();
            }
        }