Пример #1
0
        public ChatModel()
        {
            Logger.Debug("Создаём ChatModel");
            Messages = new ObservableCollection <ChatMsgRec>();
            Accounts = new ObservableCollection <SintezUserRec>();
            Issues   = new ObservableCollection <GoalRec>();
            Designes = new ObservableCollection <DocumentRec>();

            Manager = new SintezUserRec
            {
                idx = 1,
                CountNotReadedMessages = 0,
                login = "******"
            };
            //List<SintezUserRec> users = dbrec.loadRange<SintezUserRec>(
            //    "select * from sintezuser", DBConnector.Sintez_Connection);
            //Accounts = new ObservableCollection<SintezUserRec>(users);
            //Accounts.Remove(Manager);

            /*List<GoalRec> goals = dbrec.loadRange<GoalRec>(
             *  "select * from goals where closetype=0", DBConnector.Seller_Connection);
             * Issues = new ObservableCollection<GoalRec>(goals);*/

            //ChatFerm.onUnreadMessagesCount += ChatFerm_onUnreadMessagesCount;
            Logger.Debug("Создали ChatModel");
        }
Пример #2
0
 /// <summary>
 /// Процедура поиска сообщений привязанных к аккаунту.
 /// </summary>
 /// <param name="userRec"></param>
 public virtual void MessagesRelatedWithAccount(SintezUserRec userRec)
 {
     lastQuery = $"select * from chatmsg where " +
                 $"(from_id = {userRec.idx} and to_id = {DBConnector.CurrentSintezUser.idx}) or " +
                 $"(to_id = {userRec.idx} and from_id = {DBConnector.CurrentSintezUser.idx})";
     //List<ChatMsgRec> chats = dbrec.loadRange<ChatMsgRec>(
     //    lastQuery, DBConnector.Sintez_Connection);
     Messages = new ObservableCollection <ChatMsgRec>();//(chats);
     foreach (var item in Messages)
     {
         if (item.readed == false && item.to_id == Manager.idx)
         {
             item.readed = true;
             item.save();
         }
     }
 }
Пример #3
0
        /// <summary>
        /// Процедура отправления сообщения.
        /// TODO: ключевой метод. Попробовать порефакторить его.
        /// </summary>
        /// <param name="message">Сообщение для отправки</param>
        /// <returns>true - сообщение отправлено успешно,
        /// false - сообщение отправлено неуспешно.</returns>
        public virtual bool SendMessage(SintezUserRec toAccount,
                                        string message, bool isAttentionMessage, string file = "")
        {
            /*Находим в сообщении пометки, указывающие на аккаунт назначения,
             * задачу или макет*/

            string design = Regex.Match(message, @"(?<=\%\"").*?(?=\"")").Value;

            message = message.Replace($@"%""{design}""", "");
            string pointedAccount = Regex.Match(message, @"(?<=\$\"").*?(?=\"")").Value;

            message = message.Replace($@"$""{pointedAccount}""", "");
            string issue = Regex.Match(message, @"(?<=\#\"").*?(?=\"")").Value;

            message = message.Replace($@"#""{issue}""", "");

            // Формируем и сохраняем сообщение
            ChatMsgRec sendedMessage = new ChatMsgRec()
            {
                //from_id = DBConnector.CurrentSintezUser.idx,
                //message = message
            };

            if (pointedAccount != "")
            {
                sendedMessage.to_id = Convert.ToInt64(Regex.Match(pointedAccount,
                                                                  @"(?<=\()\d*(?=\)$)").Value);
            }
            if (toAccount != null)
            {
                sendedMessage.to_id = toAccount.idx;
            }
            if (issue != "")
            {
                sendedMessage.goal_id = Convert.ToInt64(Regex.Match(issue,
                                                                    @"(?<=\()\d*(?=\)$)").Value);
            }
            // TODO: сдесь потенциальная ошибка, т.к. мы может задать несколько
            // макетов и будут проблемы.
            if (design != "")
            {
                // TODO: - добавить привязку к базе данных, в которой находится
                // таблица с макетом
                string   s  = Regex.Match(design, @"(?<=\()\d*\|\d*(?=\))").Value;
                string[] s1 = s.Split('|');
                sendedMessage.doc_id            = Convert.ToInt64(s1[0]);
                sendedMessage.doc_connection_id = Convert.ToInt64(s1[1]);
            }
            else if (CurrentDoc != null)
            {
                sendedMessage.doc_id            = CurrentDoc.baseid;
                sendedMessage.doc_connection_id = CurrentDoc.connection.connector_id;//.ConnectionId;
            }
            if (!string.IsNullOrEmpty(file))
            {
                sendedMessage.filename = (new System.IO.FileInfo(file)).Name;
            }
            if (sendedMessage.to_id == 0)
            {
                Logger.MsgBox("Введите аккаунт, которому будет адресовано сообщение");
                return(false);
            }
            sendedMessage.attention = isAttentionMessage;
            Messages.Add(sendedMessage);
            //sendedMessage.save();
            ChatFerm.sendMessage(sendedMessage);

            // загружаем файл
            if (!string.IsNullOrEmpty(file))
            {
                sendedMessage.LoadContent(file);
            }
            return(true);
        }