Ejemplo n.º 1
0
        /// <summary>
        /// Сортируем сообщения, отправляем разным классам на дальнейшую обработку
        /// </summary>
        public void SortMsgFromGroup(string msg)
        {
            try
            {
                Console.WriteLine("DO " + msg);


                string[]  sentences = Regex.Split(msg, @"%start%(.*)%final%" + Environment.NewLine + ""); //разбиваем блок в массив строк
                string [] tt        = sentences.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();

                // string[] sentences= Regex.Match(msg, Regex.Escape("&begin[") + "(.*?)" + Regex.Escape("]")).Groups[1].Value.ToString();
                foreach (string s in tt)
                {
                    if (s != "")
                    {
                        string id      = Regex.Match(s, Regex.Escape("&begin[") + "(.*?)" + Regex.Escape("]")).Groups[1].Value.ToString();
                        string textmsg = Regex.Match(s, Regex.Escape("]") + "(.*?)" + Regex.Escape("&end"), RegexOptions.Singleline).Groups[1].Value.ToString();


                        Debug.WriteLine("POSLE PARSE (" + id + ") " + textmsg);

                        //проверяем есть ли айди в БД
                        if (CheckIsRegistration(_user, (id)) == true) //юзер зареган
                        {
                            Debug.WriteLine("user is REG");

                            //проверяем есть ли бан  -> проверяем есть ли айди  в таблице онлайн ->  проверяем служебное ли сообщение -> значит это обычное сообщение в чата
                            if (CheckIsBan(_user, id) != true) //есть ли бан
                            {
                                Debug.WriteLine("Не Забанен ");
                                if (CheckIsOnline(_user, OTHER.Configuration.ColumnNameTableOnline.Idvk, id, OTHER.Configuration.ColumnNameTableOnline.Idvk)) //онлайн?
                                {                                                                                                                             //online
                                    Debug.WriteLine("в чате");
                                    //проверям команда или нет

                                    if (CheckIsServiceCmd(_user, textmsg) == true)
                                    {
                                        //если команда, оправляем сервис классу
                                        _serviceMsg.SendTypeCmd(textmsg, id);
                                    }
                                    else
                                    {
                                        // обычное сообщение отправляем в хаб
                                        _commonMsg.msgSegmentStorage(id, textmsg);
                                    }
                                    ConfirmActivityUser(_user, id);
                                }
                                else //offline
                                {
                                    if (textmsg == "!начать")
                                    {
                                        _serviceMsg.SendTypeCmd(textmsg, id);
                                    }
                                    else
                                    {
                                        _outChatMsg.sendMsg(id, OTHER.Configuration.textUserIsOffline);
                                    }
                                }
                            }
                            else
                            {
                                Debug.WriteLine("Забанен ");
                                //
                                _outChatMsg.sendMsg(id, OTHER.Configuration.textUserIsBanned + " " + _user.GetBanDateTimeValue(id).ToString());
                            }
                        }
                        else //юзер не зареган
                        {
                            Debug.WriteLine("user not REG");

                            if (CheckIsServiceCmd(_user, textmsg) == true)
                            {
                                //если команда, оправляем сервис классу
                                _serviceMsg.SendTypeCmd(textmsg, id);
                            }
                            else
                            {
                                _outChatMsg.sendMsg(id, OTHER.Configuration.textIdUnknown); //просим шоб регнулся
                            }
                        }
                    }
                }
            }
            catch (Exception ex) {
                //тут логер ебануть
            }
        }