private uint CreateContact(string name, string email, ulong phone, string messageContentOrKeyWord) { //Schreibe neuen Kontakt in DB const string query = "INSERT INTO \"Contact\" (\"Time\", \"Name\", \"Email\", \"Phone\", \"KeyWord\", \"SendWay\" ) " + "VALUES (@time, @name, @email, @phone, @keyWord, @sendWay)"; string validEmail = string.Empty; if (HelperClass.IsValidEmailAddress(email)) { validEmail = email; } string validKeyWord = HelperClass.GetKeyWords(messageContentOrKeyWord); var args = new Dictionary <string, object> { { "@Time", DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, { "@Name", name }, { "@Phone", phone }, { "@Email", validEmail }, { "@KeyWord", validKeyWord } }; if (ExecuteWrite(query, args) == 0) { MainWindow.Log(MainWindow.Topic.Contacts, MainWindow.Prio.Fehler, 2003301551, string.Format("Fehler beim Anlegen eines neuen Kontakts mit der Kennung: >{0}<, >{1}<, >{2}<", name, phone, validEmail, validKeyWord)); return(0); } else { uint contactId = GetLastId("Contact"); Messages.Create_NewUnknownContactMessage(contactId, validEmail, phone, validKeyWord); return(contactId); } //# region Email-Benachrichtigung "neue unbekannte Telefonnummer / Emailadresse" //Messages.Create_NewUnknownContactMessage() //DateTime sentTime = DateTimeOffset.FromUnixTimeSeconds((long)message.SentTime).UtcDateTime; //StringBuilder body = new StringBuilder(); //body.Append("Es wurde ein neuer Absender in die Datenbank von MelBox2 eingetragen.\r\n\r\n"); //body.Append("Neue Nachricht empfangen am " + sentTime.ToShortDateString() + " um " + sentTime.ToLongTimeString() + " UTC \r\n\r\n"); //body.Append("Benutzerschlüsselwort ist\t\t >" + message.CustomerKeyWord + "< \r\n"); //body.Append("Empfangene Emailadresse war\t\t >" + message.EMail + "< \r\n"); //body.Append("Empfangene Telefonnummer war\t >+" + message.Cellphone + "< \r\n\r\n"); //if (keyWord != null && keyWord.Length > 0) //{ // body.Append("Beginn der empfangenen Nachricht war\t>" + message.CustomerKeyWord + "...<\r\n"); //} //else //{ // body.Append("Empfangenen Nachricht war\t\t>" + message.Content + "<\r\n"); //} //body.Append("\r\nBitte die Absenderdaten in MelBox2 im Reiter >Stammdaten< vervollständigen .\r\nDies ist eine automatische Nachricht von MelBox2"); //KreuMessage msg = new KreuMessage //{ // Content = body.ToString() //}; //MainWindow.PendingMessages.Add(msg, MainWindow.MelBoxAdminGroup); //#endregion //return GetLastId("Persons"); }
/// <summary> /// Liest einen Kontakt aus der DB anhand von einzelnen Identifaktoren. Erzeugt einen neuen Kontakt ind er DB wenn kein passender Kontakt gefunden wird. /// </summary> /// <param name="contactId"></param> /// <param name="name"></param> /// <param name="email"></param> /// <param name="phoneStr"></param> /// <param name="keyWord"></param> /// <returns></returns> internal Contact GetContactFromDb(uint contactId = 0, string name = "", string email = "", string phoneStr = "", string keyWord = "", string messageContent = "") { const string query = "SELECT Name, CompanyId, Email, Phone, KeyWord, SendWay " + "FROM Contact " + "WHERE ID = @Id " + "OR ( length(Name) > 3 AND Name = @name ) " + "OR ( Phone > 0 AND Phone = @phone ) " + "OR ( length(KeyWord) > 2 AND KeyWord = @keyWord ) " + "OR ( length(Email) > 5 AND Email = @email )"; ulong phone = HelperClass.ConvertStringToPhonenumber(phoneStr); var args = new Dictionary <string, object> { { "@Id", contactId }, { "@name", name }, { "@phone", phone }, { "@email", email }, { "@keyWord", keyWord } }; DataTable result = ExecuteRead(query, args); if (result.Rows.Count == 0) { if (name.Length < 3) { name = Contacts.UnknownName; } if (!HelperClass.IsValidEmailAddress(email)) { email = null; } if (keyWord.Length < 3 && messageContent.Length > 3) { keyWord = HelperClass.GetKeyWords(messageContent); } contactId = CreateContact(name, email, phone, keyWord); result = ExecuteRead(query, args); } ; if (result.Rows.Count == 0) { MainWindow.Log(MainWindow.Topic.Contacts, MainWindow.Prio.Fehler, 2004061544, "Ein Kontakt konte weder gefunden noch erstellt weerden."); return(null); } Contact contact = new Contact { Id = contactId, Name = result.Rows[0][0].ToString(), CompanyId = uint.Parse(result.Rows[0][1].ToString()), Email = new System.Net.Mail.MailAddress(result.Rows[0][2].ToString(), result.Rows[0][0].ToString()), PhoneString = result.Rows[0][3].ToString(), KeyWord = result.Rows[0][4].ToString(), ContactType = (MessageType)ushort.Parse(result.Rows[0][5].ToString()) }; return(contact); }