Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        /// <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);
        }