Пример #1
0
        public DataTable ExportGetEmails(EmailFilter filter, int userId, bool isAdmin)
        {
            DataTable dataTable = new DataTable();
            var       sql       = @"
   SELECT Email.EmailRef,
        Email.[Subject] ,
        Email.[From] ,
        Email.[To] ,
        Email.[CC] , 
        Email.DateTimeReceived ,
        EmailStatus.[Status]
FROM [dbo].[Email] 
INNER JOIN EmailStatus on EmailStatus.ID = Email.EmailStatus
WHERE [dbo].[Email].ParentEmailId IS NULL ";

            sql += getFilterString(filter);

            if (!isAdmin)
            {
                sql += @" AND EXISTS (SELECT 1 FROM EmailUser WHERE EmailUser.EmailId = Email.EmailId AND [EmailUser].[UserId] = " + userId + ")";
            }

            sql += " order by Email.EmailId desc";

            using (SqlConnection sqlConnection = new SqlConnection(DBHelper.strConnString))
            {
                sqlConnection.Open();
                SqlDataAdapter sqlAdapter = new SqlDataAdapter(sql, sqlConnection);
                sqlAdapter.Fill(dataTable);
            }

            return(dataTable);
        }
Пример #2
0
            public override TokenStreamComponents CreateComponents(string fieldName, TextReader reader)
            {
                UAX29URLEmailTokenizer tokenizer = new UAX29URLEmailTokenizer(TEST_VERSION_CURRENT, reader);
                TokenFilter            filter    = new EmailFilter(tokenizer);

                return(new TokenStreamComponents(tokenizer, filter));
            }
            protected internal override TokenStreamComponents createComponents(string fieldName, Reader reader)
            {
                UAX29URLEmailTokenizer tokenizer = new UAX29URLEmailTokenizer(TEST_VERSION_CURRENT, reader);
                TokenFilter            filter    = new EmailFilter(tokenizer);

                return(new TokenStreamComponents(tokenizer, filter));
            }
Пример #4
0
        private static string getFilterString(EmailFilter filter)
        {
            string sql = "";

            if (!string.IsNullOrEmpty(filter.To))
            {
                sql += " AND [To] LIKE '%" + filter.To + "%'";
            }
            if (!string.IsNullOrEmpty(filter.From))
            {
                sql += " AND [From] LIKE '%" + filter.From + "%'";
            }
            if (!string.IsNullOrEmpty(filter.Subject))
            {
                sql += " AND Subject LIKE '%" + filter.Subject + "%'";
            }
            if (!string.IsNullOrEmpty(filter.EmailRef))
            {
                sql += " AND EmailRef LIKE '%" + filter.EmailRef + "%'";
            }
            if (filter.Status != -1)
            {
                sql += " AND EmailStatus = " + filter.Status;
            }

            if (!string.IsNullOrEmpty(filter.dateTimeReceived))
            {
                sql += " AND Cast(DateTimeReceived AS DATE)" + filter.dateTimeReceivedOperater + " '" + filter.dateTimeReceived + " '";
            }
            return(sql);
        }
Пример #5
0
        public IEnumerable <Email> GetEmailsFiltered([FromRoute] EmailFilter filter)
        {
            var f = filter;

            var q = GetEmails();

            if (!string.IsNullOrWhiteSpace(f.ToAddress))
            {
                q = q.Where(x => x.To == f.ToAddress);
            }

            if (!string.IsNullOrWhiteSpace(f.FromAddress))
            {
                q = q.Where(x => x.From == f.FromAddress);
            }

            if (!string.IsNullOrWhiteSpace(f.Subject))
            {
                q = q.Where(x => x.Subject == f.Subject);
            }

            q = q.Take(f.PageSize);

            return(q);
        }
Пример #6
0
        private IFilterStrategy DetermineFilter(FilterOptions options)
        {
            IFilterStrategy filterStrategy = null;

            if (options.Filter == FilterBy.Name && !string.IsNullOrEmpty(options.Name))
            {
                filterStrategy = new NameFilter(options);
            }
            else if (options.Filter == FilterBy.Email && !string.IsNullOrEmpty(options.Email))
            {
                filterStrategy = new EmailFilter(options);
            }
            else if (options.Filter == FilterBy.Phone && !string.IsNullOrEmpty(options.Phone))
            {
                filterStrategy = new PhoneFilter(options);
            }
            else if (options.Filter == FilterBy.From && options.From.HasValue)
            {
                filterStrategy = new FromFilter(options);
            }
            else if (options.Filter == FilterBy.To && options.To.HasValue)
            {
                filterStrategy = new ToFilter(options);
            }
            else if (options.Filter == FilterBy.Status)
            {
                filterStrategy = new StatusFIlter(options);
            }
            else if (options.Filter == FilterBy.Date && options.Date.HasValue)
            {
                filterStrategy = new DateFilter(options);
            }

            return(filterStrategy);
        }
Пример #7
0
        public async Task <IActionResult> FilterEmailAsync([FromBody] EmailFilter emailFilter)
        {
            emailFilter.AccountId = User.ReadClaimAsGuidValue("urn:codefliptodo:accountid");

            await _mediator.Send(emailFilter);

            return(Ok());
        }
Пример #8
0
        public static int GetEmailsCount(EmailFilter filter, int userId, bool isAdmin)
        {
            int count;

            var sql = @"
                SELECT COUNT(*) 
                FROM Email ";

            if (!isAdmin)

            {
                sql += @"
                    left outer join EmailUser on EmailUser.EmailId = Email.EmailId
                    left outer join dbo.[User] on [User].[UserID] = EmailUser.[UserId]
                    left outer join EmailStatus on EmailStatus.ID = Email.EmailStatus
                    
                    

                WHERE  ParentEmailId IS NULL  AND  [User].[UserID] = " + userId;
            }
            else
            {
                sql += @"
                    left outer join EmailStatus on EmailStatus.ID = Email.EmailStatus
                WHERE ParentEmailId IS NULL";
            }
            sql += getFilterString(filter);

            using (SqlConnection sqlConnection = new SqlConnection(DBHelper.strConnString))
            {
                SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection);
                try
                {
                    sqlConnection.Open();
                    count = (int)sqlCommand.ExecuteScalar();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    sqlConnection.Close();
                }
            }
            return(count);
        }
Пример #9
0
        public static DataTable GetEmails(EmailFilter filter, int maximumRows, int startRowIndex, int userId, bool isAdmin)
        {
            DataTable dataTable = new DataTable();
            var       sql       = @"
SELECT * 
from (
    SELECT ROW_NUMBER() OVER ( ORDER BY Email.EmailId DESC ) ROWNUMBER,
            Email.EmailId,
            Email.[Subject] ,
            Email.[From] ,
            Email.[To] ,
            Email.[CC] , 
            Email.DateTimeReceived ,
            IsAssign,
            EmailRef,
            EmailStatus,
            EmailStatus.Status
            
    FROM [dbo].[Email]
INNER JOIN EmailStatus on EmailStatus.ID = Email.EmailStatus
WHERE [dbo].[Email].ParentEmailId IS NULL ";

            sql += getFilterString(filter);

            if (!isAdmin)

            {
                sql += @" AND EXISTS (SELECT 1 FROM EmailUser WHERE EmailUser.EmailId = Email.EmailId AND [EmailUser].[UserId] = " + userId + ")";
            }



            sql += ") As query where  query.ROWNUMBER > " + startRowIndex + " AND query.ROWNUMBER <= " + (startRowIndex + maximumRows);


            using (SqlConnection sqlConnection = new SqlConnection(DBHelper.strConnString))
            {
                sqlConnection.Open();
                SqlDataAdapter sqlAdapter = new SqlDataAdapter(sql, sqlConnection);
                sqlAdapter.Fill(dataTable);
            }

            return(dataTable);
        }
Пример #10
0
        private EmailFilter GetFilter()
        {
            EmailFilter entity = new EmailFilter();

            entity.From             = txtEmailFrom.Text.ToString();
            entity.To               = txtEmailTo.Text.ToString();
            entity.Subject          = txtEmailSub.Text.ToString();
            entity.dateTimeReceived = txtEmailDate.Text.ToString();
            entity.EmailRef         = txtEmailRef.Text.ToString();
            if (ddlAssign.SelectedValue == "-1")
            {
                entity.Status = -1;
            }
            else
            {
                entity.Status = int.Parse(ddlAssign.SelectedValue);
            }
            entity.dateTimeReceivedOperater = dateDropDownList.Text.ToString();

            return(entity);
        }
 public override TokenStreamComponents CreateComponents(string fieldName, TextReader reader)
 {
     UAX29URLEmailTokenizer tokenizer = new UAX29URLEmailTokenizer(TEST_VERSION_CURRENT, reader);
     TokenFilter filter = new EmailFilter(tokenizer);
     return new TokenStreamComponents(tokenizer, filter);
 }
Пример #12
0
        public static bool IsMatchedByFilter(Email mail, EmailFilter filter)
        {
            bool MatchAny(string text)
            => text != null && filter.OneOf.Any(item => text.IndexOf(item, StringComparison.OrdinalIgnoreCase) >= 0);
            bool EqualsAny(string text)
            => text != null && filter.OneOf.Any(item => text.Equals(item, StringComparison.OrdinalIgnoreCase));
            bool NotMatchAll(string text)
            => text != null && filter.AllOf.All(item => text.IndexOf(item, StringComparison.OrdinalIgnoreCase) < 0);
            bool NotEqualsAll(string text)
            => text != null && filter.AllOf.All(item => !text.Equals(item, StringComparison.OrdinalIgnoreCase));

            switch (filter.Type.ToLowerInvariant())
            {
            case "sender contains":
                return(MatchAny(mail.From.Name) || MatchAny(mail.From.Email));

            case "sender equals":
                return(EqualsAny(mail.From.Name) || EqualsAny(mail.From.Email));

            case "!sender contains":
                return(NotMatchAll(mail.From.Name) && NotMatchAll(mail.From.Email));

            case "!sender equals":
                return(NotEqualsAll(mail.From.Name) && NotEqualsAll(mail.From.Email));

            case "subject contains":
                return(MatchAny(mail.Subject));

            case "!subject contains":
                return(NotMatchAll(mail.Subject));

            case "body contains":
                return(MatchAny(mail.Text ?? mail.Html));

            case "!body contains":
                return(NotMatchAll(mail.Text ?? mail.Html));

            case "subject/body contains":
                return(MatchAny(mail.Subject) || MatchAny(mail.Text ?? mail.Html));

            case "!subject/body contains":
                return(NotMatchAll(mail.Subject) && NotMatchAll(mail.Text ?? mail.Html));

            case "recipient contains":
                return(mail.To.Any(to => MatchAny(to.Name) || MatchAny(to.Email)) ||
                       mail.Cc.Any(to => MatchAny(to.Name) || MatchAny(to.Email)));

            case "!recipient contains":
                return(mail.To.Any(to => NotMatchAll(to.Name) && NotMatchAll(to.Email)) ||
                       mail.Cc.Any(to => NotMatchAll(to.Name) && NotMatchAll(to.Email)));

            case "recipient equals":
                return(mail.To.Any(to => EqualsAny(to.Name) || EqualsAny(to.Email)) ||
                       mail.Cc.Any(to => EqualsAny(to.Name) || EqualsAny(to.Email)));

            case "!recipient equals":
                return(mail.To.Any(to => NotEqualsAll(to.Name) && NotEqualsAll(to.Email)) ||
                       mail.Cc.Any(to => NotEqualsAll(to.Name) && NotEqualsAll(to.Email)));

            default:
                throw new ArgumentOutOfRangeException($"Unsupported {filter.Type}");
            }
        }
		  protected internal override TokenStreamComponents createComponents(string fieldName, Reader reader)
		  {
			UAX29URLEmailTokenizer tokenizer = new UAX29URLEmailTokenizer(TEST_VERSION_CURRENT, reader);
			TokenFilter filter = new EmailFilter(tokenizer);
			return new TokenStreamComponents(tokenizer, filter);
		  }