Beispiel #1
0
 /// <summary>
 /// This method is called by MessagingAreaControl to send messages.
 /// </summary>
 /// <param name="message">Message to be sent</param>
 public void SendMessage(ChatMessage message)
 {
     _controller.SendPrivateMessage(RemoteUserNick, message);
     MessageHistory.MessageReceived(CurrentUserNick, message);
 }
Beispiel #2
0
 public async Task Add(MessageHistory messageHistory)
 {
     _context.Messages.Add(messageHistory);
     await _context.SaveChangesAsync();
 }
Beispiel #3
0
        private void GetPremiumButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                GetPremiumButton.Focus();

                var button = sender as FrameworkElement;

                if (button != null && button.Tag != null && (button.Tag as string) != null)
                {
                    try
                    {
                        BuyButtons buyButtonType = BuyButtons.TopNav;
                        if ((string)button.Tag == "TopNav")
                        {
                            buyButtonType = BuyButtons.TopNav;
                        }
                        else if ((string)button.Tag == "LeftNav")
                        {
                            buyButtonType = BuyButtons.LeftNav;
                        }

                        var subscription            = pbData.GetSubscriptionInfo();
                        int?daysFromAccountCreation = null;
                        if (subscription != null && subscription.AccountCreated && subscription.AccountCreationDate.HasValue)
                        {
                            var currentDate = DateTime.Now;
                            //daysFromAccountCreation = (int)Math.Ceiling((currentDate - subscription.AccountCreationDate.GetValueOrDefault(currentDate)).TotalDays);
                            daysFromAccountCreation = (currentDate - subscription.AccountCreationDate.GetValueOrDefault(currentDate)).Days;
                        }

                        var inAppAnalyitics = resolver.GetInstanceOf <IInAppAnalytics>();

                        MessageHistory his = new MessageHistory
                        {
                            DaysSinceAccountCreated = daysFromAccountCreation,
                            ButtonClicked           = MarketingActionType.GetPremium.ToString(),
                            BuyButton = buyButtonType.ToString()
                        };

                        pbData.InsertMessageHistory(his);
                        var mhItem = pbData.GetMessageHistoryById(his.Id);

                        var analytics2 = inAppAnalyitics.Get <Events.InAppMarketing, InAppMessageItem>();
                        var logItem    = new InAppMessageItem(mhItem.RowId, mhItem.AnalyticsCode, mhItem.MsgType, mhItem.Theme, (MarketingActionType)Enum.Parse(typeof(MarketingActionType), mhItem.ButtonClicked), buyButtonType, mhItem.DaysSinceAccountCreated);
                        analytics2.Log(logItem);
                    }
                    catch (Exception ex)
                    {
                        logger.Error(ex.ToString());
                    }
                }


                ((IAppCommand)System.Windows.Application.Current).ExecuteCommand("GetPremium", null);
            }
            catch (Exception ex)
            {
                logger.Error(ex.ToString());
            }
        }
Beispiel #4
0
 protected static void startListening()
 {
     MessageHistory.ClearHistory();
 }
Beispiel #5
0
 protected void waitForTheMessageProcessingToFinish()
 {
     Wait.Until(() => !MessageHistory.Outstanding().Any() && MessageHistory.All().Any(),
                timeoutInMilliseconds: TimeoutInMilliseconds);
 }
        /// <summary>
        /// Maps history information for general chats, which do not have a relationshipXrefID, EventType, or AssignmentClient using a list of contextChatMessages relating to the client's general conversation. Uses a logic client object
        /// rather than a context client object
        /// </summary>
        /// <param name="logicConversationClient"></param>
        /// <param name="contextChatMessages"></param>
        /// <param name="logicSubjectClient"></param>
        /// <returns></returns>
        public static Logic.Objects.MessageHistory MapHistoryInformation(Logic.Objects.Client logicConversationClient, List <Entities.ChatMessage> contextChatMessages, BaseClient logicSubjectClient)
        {
            List <Message> logicListRecieverMessages = new List <Message>();
            List <Message> logicListSubjectMessages  = new List <Message>();

            if (logicSubjectClient.isAdmin)
            {
                logicListSubjectMessages = contextChatMessages
                                           .Select(Mapper.MapMessage)
                                           .OrderBy(dt => dt.dateTimeSent)
                                           .Where(m => m.fromAdmin)
                                           .ToList();

                logicListRecieverMessages = contextChatMessages
                                            .Select(Mapper.MapMessage)
                                            .OrderBy(dt => dt.dateTimeSent)
                                            .Where(m => !m.fromAdmin)
                                            .ToList();
            }
            else
            {
                logicListSubjectMessages = contextChatMessages
                                           .Select(Mapper.MapMessage)
                                           .OrderBy(dt => dt.dateTimeSent)
                                           .Where(m => !m.fromAdmin && m.senderClient.clientId == logicSubjectClient.clientID)
                                           .ToList();

                logicListRecieverMessages = contextChatMessages
                                            .Select(Mapper.MapMessage)
                                            .OrderBy(dt => dt.dateTimeSent)
                                            .Where(m => m.fromAdmin)
                                            .ToList();
            }

            // General histories dont have a relationXrefID, EventType, or AssignmentClient because they are not tied to an assignment
            MessageHistory logicHistory = new MessageHistory()
            {
                relationXrefID   = null,
                eventType        = new Event(),
                assignmentStatus = new Logic.Objects.AssignmentStatus(),

                subjectClient            = MapClientChatMeta(logicSubjectClient),
                conversationClient       = MapClientChatMeta(logicConversationClient),
                assignmentRecieverClient = new ClientChatMeta(),
                assignmentSenderClient   = new ClientChatMeta(),

                subjectMessages = logicListSubjectMessages,

                recieverMessages = logicListRecieverMessages,

                unreadCount = logicListRecieverMessages.Where(m => m.isMessageRead == false).ToList().Count()
            };

            logicHistory.unreadCount = logicHistory.recieverMessages.Where(m => m.isMessageRead == false).ToList().Count();

            foreach (Message logicMessage in logicHistory.subjectMessages)
            {
                logicMessage.subjectMessage = true;
            }

            return(logicHistory);
        }
 public CallbackMessageContent GetLastUpdateMessage()
 {
     return(MessageHistory.LastOrDefault());
 }
Beispiel #8
0
 public void StartListeningForMessages()
 {
     MessageHistory.StartListening(_remoteSubSystems.Select(x => x.Runner).ToArray());
 }
Beispiel #9
0
        private void CalcMsg()
        {
            try
            {
                int    chat_id      = 2000000002;
                string ACCESS_TOKEN = AppConfiguration.GetSection("VK_ACCESS_TOKENS").GetValue <string>("SERGIO_ACCESS_TOKEN_KM");

                VkApi = new VkApi(ACCESS_TOKEN);

                using (var scope = ServiceScopeFactory.CreateScope())
                {
                    DB = scope.ServiceProvider.GetRequiredService <ApplicationContext>();
                    CalcMessage cm;
                    using (var transaction = DB.Database.BeginTransaction())
                    {
                        cm = DB.CalcMessages.FirstOrDefault();
                        if (cm == null)
                        {
                            CalcMessage calcMessage = new CalcMessage
                            {
                                MarkerMessageId = 0,
                                StartMessageId  = 0,
                                Stage           = "firstStart"
                            };
                            DB.CalcMessages.Add(calcMessage);
                            DB.SaveChanges();
                        }
                        cm = DB.CalcMessages.FirstOrDefault();
                        if (cm.Stage == "firstStart")
                        {
                            MessageHistory history = VkApi.GetMsgHistory <MessageHistory>(peer_id: chat_id, count: 1);
                            //Thread.Sleep(350);
                            List <Item> items = history.Response.Items;
                            cm.MarkerMessageId = items.First().Id;
                            cm.StartMessageId  = items.First().Id;
                            cm.Stage           = "calcToEnd";
                            DB.SaveChanges();
                        }
                        transaction.Commit();
                    }

                    if (cm.Stage == "calcToEnd")
                    {
                        while (true)
                        {
                            using (var transaction = DB.Database.BeginTransaction())
                            {
                                MessageHistory history = VkApi.GetMsgHistory <MessageHistory>(peer_id: chat_id, count: 200, startMessageId: cm.StartMessageId);
                                List <Item>    items   = history.Response.Items;
                                //маркер это конец для следующего подсчета
                                cm.StartMessageId = items.Last().Id;
                                /// DB.Entry(cm).Property("StartMessageId").IsModified = true;

                                if (items.Count == 1)
                                {
                                    cm.Stage = "firstCalcToMarker";
                                    DB.SaveChanges();
                                    transaction.Commit();
                                    break;
                                }

                                for (int i = 0; i < items.Count; i++)
                                {
                                    User checkUser = DB.Users.FirstOrDefault(x => x.Id == items[i].From_id);

                                    if (checkUser != null)
                                    {
                                        UserMessage userMessage = DB.UserMessages.FirstOrDefault(x => x.UserId == items[i].From_id);
                                        userMessage.Message++;
                                        DB.Entry(userMessage).Property("Message").IsModified = true;
                                        userMessage.LastMessageDate = items[i].Date;
                                        DB.Entry(userMessage).Property("LastMessageDate").IsModified = true;
                                    }
                                    else if (checkUser == null && items[i].From_id > 0)
                                    {
                                        UsersGetModel ugm = VkApi.UsersGet <UsersGetModel>(items[i].From_id);
                                        Thread.Sleep(350);
                                        string firstName = ugm.Response.Single().First_name;
                                        string lastName  = ugm.Response.Single().Last_name;
                                        User   newUser   = new User
                                        {
                                            Id        = items[i].From_id,
                                            FirstName = firstName,
                                            LastName  = lastName,
                                            Activity  = DateTime.Now
                                        };
                                        DB.Users.Add(newUser);

                                        UserMessage userMessage = new UserMessage
                                        {
                                            User    = newUser,
                                            Message = 1
                                        };
                                        DB.UserMessages.Add(userMessage);
                                    }
                                    DB.SaveChanges();
                                }
                                transaction.Commit();
                            }
                        }
                    }

                    else if (cm.Stage == "firstCalcToMarker")
                    {
                        using (var transaction = DB.Database.BeginTransaction())
                        {
                            MessageHistory history = VkApi.GetMsgHistory <MessageHistory>(peer_id: chat_id, count: 200);
                            List <Item>    items   = history.Response.Items;

                            for (int i = 0; i < items.Count; i++)
                            {
                                if (items[i].Id == cm.MarkerMessageId)//если сообщений меньше 200 и мы уже дошли до маркера
                                {
                                    cm.MarkerMessageId = items.First().Id;
                                    cm.Stage           = "firstCalcToMarker";//это излишне
                                    DB.SaveChanges();
                                    break;
                                }
                                else if (i == 199)//с продолжением
                                {
                                    cm.NewMarkerMessageId = items.First().Id;
                                    cm.Stage          = "calcToMarker";
                                    cm.StartMessageId = items.Last().Id;
                                    DB.SaveChanges();
                                    break;
                                }
                                User checkUser = DB.Users.FirstOrDefault(x => x.Id == items[i].From_id);
                                if (checkUser != null)
                                {
                                    UserMessage userMessage = DB.UserMessages.FirstOrDefault(x => x.UserId == items[i].From_id);
                                    userMessage.Message++;
                                    userMessage.LastMessageDate = items[i].Date;
                                }
                                else if (checkUser == null && items[i].From_id > 0)
                                {
                                    UsersGetModel ugm = VkApi.UsersGet <UsersGetModel>(items[i].From_id);
                                    Thread.Sleep(350);
                                    string firstName = ugm.Response.Single().First_name;
                                    string lastName  = ugm.Response.Single().Last_name;
                                    User   newUser   = new User
                                    {
                                        Id        = items[i].From_id,
                                        FirstName = firstName,
                                        LastName  = lastName,
                                        Activity  = DateTime.Now
                                    };
                                    DB.Users.Add(newUser);

                                    UserMessage userMessage = new UserMessage
                                    {
                                        User    = newUser,
                                        Message = 1
                                    };
                                    DB.UserMessages.Add(userMessage);
                                }
                                DB.SaveChanges();
                            }
                            transaction.Commit();
                        }
                    }

                    else if (cm.Stage == "calcToMarker")
                    {
                        bool isCalc = true;
                        while (isCalc)
                        {
                            using (var transaction = DB.Database.BeginTransaction())
                            {
                                MessageHistory history = VkApi.GetMsgHistory <MessageHistory>(peer_id: chat_id, count: 200, startMessageId: cm.StartMessageId);
                                List <Item>    items   = history.Response.Items;

                                cm.StartMessageId = items.Last().Id;
                                for (int i = 0; i < items.Count; i++)
                                {
                                    if (items[i].Id == cm.MarkerMessageId)
                                    {
                                        cm.Stage           = "firstCalcToMarker";
                                        cm.MarkerMessageId = cm.NewMarkerMessageId;
                                        DB.SaveChanges();
                                        isCalc = false;
                                        break;
                                    }
                                    User checkUser = DB.Users.FirstOrDefault(x => x.Id == items[i].From_id);
                                    if (checkUser != null)
                                    {
                                        UserMessage userMessage = DB.UserMessages.FirstOrDefault(x => x.UserId == items[i].From_id);
                                        userMessage.Message++;
                                        DB.Entry(userMessage).Property("Message").IsModified = true;
                                        userMessage.LastMessageDate = items[i].Date;
                                        DB.Entry(userMessage).Property("LastMessageDate").IsModified = true;
                                    }
                                    else if (checkUser == null && items[i].From_id > 0)
                                    {
                                        UsersGetModel ugm = VkApi.UsersGet <UsersGetModel>(items[i].From_id);
                                        Thread.Sleep(350);
                                        string firstName = ugm.Response.Single().First_name;
                                        string lastName  = ugm.Response.Single().Last_name;
                                        User   newUser   = new User
                                        {
                                            Id        = items[i].From_id,
                                            FirstName = firstName,
                                            LastName  = lastName,
                                            Activity  = DateTime.Now
                                        };
                                        DB.Users.Add(newUser);

                                        UserMessage userMessage = new UserMessage
                                        {
                                            User    = newUser,
                                            Message = 1
                                        };
                                        DB.UserMessages.Add(userMessage);
                                    }
                                    DB.SaveChanges();
                                }
                                transaction.Commit();
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                string ANNOUNCER_ACCESS_TOKEN = AppConfiguration.GetSection("VK_ACCESS_TOKENS").GetValue <string>("ANNOUNCER_ACCESS_TOKEN");
                VkApi.SendMessage <dynamic>(chatId: 1, message: "ПРИВЕТ ! ПРИВЕТ ! ПРИВЕТ !", accessToken: ANNOUNCER_ACCESS_TOKEN);
                Logger.LogError(e.Message);
                Logger.LogError(e.StackTrace);
            }
        }
Beispiel #10
0
        internal void Execute(IScenarioWriter writer)
        {
            TraceListener[] listeners = new TraceListener[Debug.Listeners.Count];

            Debug.Listeners.CopyTo(listeners, 0);
            Debug.Listeners.Clear();

            FubuTransport.SetupForInMemoryTesting();

            InMemoryQueueManager.ClearAll();
            TestMessageRecorder.Clear();
            MessageHistory.ClearAll();

            _configurations.Each(x => x.SpinUp());

            writer.WriteTitle(Title);

            using (writer.Indent())
            {
                writeArrangement(writer);

                writer.WriteLine("Actions");

                using (writer.Indent())
                {
                    _steps.Each(x => {
                        x.PreviewAct(writer);
                        try
                        {
                            x.Act(writer);
                        }
                        catch (Exception e)
                        {
                            writer.Exception(e);
                        }
                    });
                }

                var success = Wait.Until(() => {
                    return(!MessageHistory.Outstanding().Any());
                }, timeoutInMilliseconds: 60000);

                Debug.Listeners.AddRange(listeners);

                if (success)
                {
                    writer.WriteLine("Messages are all accounted for");
                }
                else
                {
                    writer.WriteLine("Messages are outstanding:");
                    MessageHistory.Outstanding().Each(x => Debug.WriteLine(x));
                }

                writer.BlankLine();

                _configurations.Each(x => x.SafeDispose());

                writer.WriteLine("Assertions");

                using (writer.Indent())
                {
                    _steps.Each(x => {
                        x.PreviewAssert(writer);
                        x.Assert(writer);
                    });
                }


                writer.BlankLine();


                if (TestMessageRecorder.AllProcessed.Any())
                {
                    writer.WriteLine("Messages Received");
                    TestMessageRecorder.AllProcessed.Each(x => {
                        writer.Bullet("{0} received by {1}", x.Message.GetType().Name, x.Message.Source);
                    });
                }
                else
                {
                    writer.WriteLine("No messages were received!");
                }

                var unexpectedMessages = TestMessageRecorder.AllProcessed.Where(x => !_steps.Any(step => step.MatchesSentMessage(x.Message)))
                                         .ToArray();

                if (unexpectedMessages.Any())
                {
                    writer.BlankLine();
                    writer.WriteLine("Found unexpected messages");
                    unexpectedMessages.Each(x => writer.Failure(x.ToString()));
                }
            }
        }
 public void Act(IScenarioWriter writer)
 {
     MessageHistory.Record(MessageTrack.ForSent(Message));
     _sender.ServiceBus.Send(Message);
 }
Beispiel #12
0
 public async Task UpdateAsync(MessageHistory entity)
 {
     await _messageHistoryRepository.UpdateAsync(entity);
 }
Beispiel #13
0
        public async Task <MessageHistory> CreateAsync(MessageHistory entity)
        {
            entity.Id = await _messageHistoryRepository.InsertAndGetIdAsync(entity);

            return(entity);
        }
Beispiel #14
0
 private void ClearConsole(params string[] _)
 {
     MessageHistory.Clear();
 }
Beispiel #15
0
 public async Task Add(MessageHistory messageHistory)
 {
     await _messageRepository.Add(messageHistory);
 }
 public void Act(IScenarioWriter writer)
 {
     MessageHistory.Record(MessageTrack.ForSent(_request));
     _completion = _sender.ServiceBus.SendAndWait(_request);
 }
        /// <summary>
        /// Maps the information of a message history with the contents of a relationship, and the viewer subject client information
        /// </summary>
        /// <param name="contextRelationshipXref"></param>
        /// <param name="logicSubjectClient"></param>
        /// <returns></returns>
        public static Logic.Objects.MessageHistory MapHistoryInformation(ClientRelationXref contextRelationshipXref, BaseClient logicSubjectClient, bool unloaded)
        {
            List <Message> logicListRecieverMessages = new List <Message>();
            List <Message> logicListSubjectMessages  = new List <Message>();

            if (!unloaded)
            {
                if (logicSubjectClient.isAdmin)
                {
                    logicListSubjectMessages = contextRelationshipXref.ChatMessage
                                               .Select(Mapper.MapMessage)
                                               .OrderBy(dt => dt.dateTimeSent)
                                               .Where(m => m.fromAdmin)
                                               .ToList();

                    logicListRecieverMessages = contextRelationshipXref.ChatMessage
                                                .Select(Mapper.MapMessage)
                                                .OrderBy(dt => dt.dateTimeSent)
                                                .Where(m => !m.fromAdmin)
                                                .ToList();
                }
                else
                {
                    logicListSubjectMessages = contextRelationshipXref.ChatMessage
                                               .Select(Mapper.MapMessage)
                                               .OrderBy(dt => dt.dateTimeSent)
                                               .Where(m => !m.fromAdmin && m.senderClient.clientId == logicSubjectClient.clientID)
                                               .ToList();

                    logicListRecieverMessages = contextRelationshipXref.ChatMessage
                                                .Select(Mapper.MapMessage)
                                                .OrderBy(dt => dt.dateTimeSent)
                                                .Where(m => m.fromAdmin)
                                                .ToList();
                }
            }



            MessageHistory logicHistory = new MessageHistory()
            {
                relationXrefID   = contextRelationshipXref.ClientRelationXrefId,
                eventType        = MapEvent(contextRelationshipXref.EventType),
                assignmentStatus = MapAssignmentStatus(contextRelationshipXref.AssignmentStatus),

                subjectClient            = MapClientChatMeta(logicSubjectClient),
                conversationClient       = MapClientChatMeta(contextRelationshipXref.SenderClient),
                assignmentRecieverClient = MapClientChatMeta(contextRelationshipXref.RecipientClient),
                assignmentSenderClient   = MapClientChatMeta(contextRelationshipXref.SenderClient),

                subjectMessages = unloaded ? new List <Message>() : logicListSubjectMessages,

                recieverMessages = unloaded ? new List <Message>() : logicListRecieverMessages,

                unreadCount = logicListRecieverMessages.Where(m => m.isMessageRead == false).ToList().Count()
            };

            foreach (Message logicMessage in logicHistory.subjectMessages)
            {
                logicMessage.subjectMessage = true;
            }

            return(logicHistory);
        }
 public StorytellerMessageLogger(MessageHistory history, ILoggerFactory factory, IMetrics metrics) : base(history, factory, metrics)
 {
     _history = history;
     Errors   = new BusErrors();
 }
 public void ArchiveMessages()
 {
     MessageHistory.Add(TodaysMessages);
     TodaysMessages = new List <Message>();
 }
Beispiel #20
0
 public async Task AddMessage(MessageHistory messageHistory)
 {
     await _chatRepository.Add(messageHistory);
 }