Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
 internal static void sendMessage(ChatMsgRec sendedMessage)
 {
     throw new NotImplementedException();
 }