/// <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); }
internal static void sendMessage(ChatMsgRec sendedMessage) { throw new NotImplementedException(); }