Пример #1
0
        public EmailLinks BuildFromRow(DataRow row)
        {
            var returnRecord = EmailLinks.BuildEmailLinksFromRow(row);

            returnRecord = this.BuildExtraFromRow <EmailLinks>(returnRecord, row);
            return(returnRecord);
        }
Пример #2
0
        public EmailLinks Insert(EmailLinks record)
        {
            DataRow row = this.dataSet.ttblemailLinks.NewttblemailLinksRow();

            this.UpdateToRow(ref row, record);
            this.ExtraUpdateToRow(ref row, record);
            this.dataSet.ttblemailLinks.AddttblemailLinksRow((pdsemailLinksDataSet.ttblemailLinksRow)row);
            this.SaveChanges();
            return(this.dataSet.ttblemailLinks.Rows.Count > 0 ? this.BuildFromRow(this.dataSet.ttblemailLinks.Rows[0]) : null);
        }
Пример #3
0
        public EmailLinks GetByRowId(string rowId, string fldList)
        {
            var        row        = this.GetRowByRowId(rowId, fldList);
            EmailLinks emailLinks = null;

            if (row != null)
            {
                emailLinks = this.BuildFromRow(row);
            }
            return(emailLinks);
        }
Пример #4
0
        protected EmailLinks Fetch(string where, int batchsize, string fldList)
        {
            this.FetchWhere(where, batchsize, fldList);
            var        row        = this.dataSet.ttblemailLinks.AsEnumerable().SingleOrDefault();
            EmailLinks emailLinks = null;

            if (row != null)
            {
                emailLinks = this.BuildFromRow(row);
            }
            return(emailLinks);
        }
Пример #5
0
        private string CreateClickTracking(int emailId, string input)
        {
            var doc = new HtmlDocument();

            doc.LoadHtml(input);
            int linkIndex = 0;

            using (var md5Hash = MD5.Create())
            {
                var linkList = doc.DocumentNode.SelectNodes("//a[@href]");
                if (linkList == null)
                {
                    return(doc.DocumentNode.OuterHtml);
                }

                foreach (HtmlNode link in linkList)
                {
                    var att = link.Attributes["href"];
                    var url = att.Value;
                    if (EmailReplacements.IsSpecialLink(url))
                    {
                        continue;
                    }
                    if (url.StartsWith("mailto:"))
                    {
                        continue;
                    }

                    if (EmailReplacements.SettingUrlRe.IsMatch(url))
                    {
                        url = EmailReplacements.SettingUrlReplacement(this, url);
                    }
                    var hash = HashMd5Base64(md5Hash, url + DateTime.Now.ToString("o") + linkIndex);

                    var emailLink = new EmailLink
                    {
                        Created = DateTime.Now,
                        EmailID = emailId,
                        Hash    = hash,
                        Link    = url
                    };
                    EmailLinks.InsertOnSubmit(emailLink);
                    SubmitChanges();

                    att.Value = ServerLink($"/ExternalServices/ct?l={HttpUtility.UrlEncode(hash)}");

                    linkIndex++;
                }
            }

            return(doc.DocumentNode.OuterHtml);
        }
Пример #6
0
        public void Delete(EmailLinks record)
        {
            var row = this.GetRowByRowId(record.rowID, string.Empty);

            if (row == null)
            {
                row = this.dataSet.ttblemailLinks.NewttblemailLinksRow();
                EmailLinks.BuildMinimalRow(ref row, record);
                this.dataSet.ttblemailLinks.AddttblemailLinksRow((pdsemailLinksDataSet.ttblemailLinksRow)row);
            }
            row.Delete();
            this.SaveChanges();
        }
Пример #7
0
        public EmailLinks Update(EmailLinks record)
        {
            var row = this.GetRowByRowId(record.rowID, string.Empty);

            if (row != null)
            {
                this.UpdateToRow(ref row, record);
                this.ExtraUpdateToRow(ref row, record);
                this.SaveChanges();
                return(this.dataSet.ttblemailLinks.Rows.Count > 0 ? this.BuildFromRow(this.dataSet.ttblemailLinks.Rows[0]) : null);
            }
            ErrorReportingHelper.ReportErrors("global.update.doesnotexist", 421);
            return(null);
        }
Пример #8
0
        private string CreateClickTracking(int emailId, string input)
        {
            var doc = new HtmlDocument();

            doc.LoadHtml(input);
            int linkIndex = 0;

            using (var md5Hash = MD5.Create())
            {
                var linkList = doc.DocumentNode.SelectNodes("//a[@href]");
                if (linkList == null)
                {
                    return(doc.DocumentNode.OuterHtml);
                }

                foreach (HtmlNode link in linkList)
                {
                    var att = link.Attributes["href"];
                    if (EmailReplacements.IsSpecialLink(att.Value))
                    {
                        continue;
                    }

                    var hash = HashMd5Base64(md5Hash, att.Value + DateTime.Now.ToString("o") + linkIndex);

                    var emailLink = new EmailLink
                    {
                        Created = DateTime.Now,
                        EmailID = emailId,
                        Hash    = hash,
                        Link    = att.Value
                    };
                    EmailLinks.InsertOnSubmit(emailLink);
                    SubmitChanges();

                    att.Value = ServerLink($"/ExternalServices/ct?l={HttpUtility.UrlEncode(hash)}");

                    linkIndex++;

                    //System.Diagnostics.Debug.WriteLine(att.Value);
                    //System.Diagnostics.Debug.WriteLine("Unhashed: " + att.Value + DateTime.Now.ToString("o"));
                    //System.Diagnostics.Debug.WriteLine("Hashed: " + hashMD5Base64( md5Hash, att.Value + DateTime.Now.ToString("o") ) );
                }
            }

            return(doc.DocumentNode.OuterHtml);
        }
Пример #9
0
 public void Delete(EmailLinks record)
 {
     this.adapter.Delete(record);
 }
Пример #10
0
 public EmailLinks Update(EmailLinks record)
 {
     return(this.adapter.Update(record));
 }
Пример #11
0
 public EmailLinks Insert(EmailLinks record)
 {
     return(this.adapter.Insert(record));
 }
Пример #12
0
 public void UpdateToRow(ref DataRow row, EmailLinks record)
 {
     EmailLinks.UpdateRowFromEmailLinks(ref row, record);
     this.ExtraUpdateToRow(ref row, record);
 }
Пример #13
0
 public void Delete(EmailLinks record)
 {
     this.repository.Delete(record);
 }
Пример #14
0
 public EmailLinks Update(EmailLinks record)
 {
     return(this.repository.Update(record));
 }
Пример #15
0
 public EmailLinks Insert(EmailLinks record)
 {
     return(this.repository.Insert(record));
 }