活动开始前一天发送提醒电子邮件

时间:2020-01-27 13:51:35

标签: c# entity-framework

我正在尝试找出如何在活动开始前一天向用户发送提醒电子邮件,例如:

即将开始一个事件:03-02-2020
和 我想在前一天发送提醒:02-02-2020

她是我的查询:

  var RegistrtionToEvent = db.Registrations
                .Where(t => (t.LastNotifiedDate == null) && t.Status == "signedup" &&
                 t.EventStartDate //here is my problem what it should be done here with EventStartDate)
                .ToList();

            if (RegistrtionToEvent != null && RegistrtionToEvent.Any())
            {
                foreach (var item in RegistrtionToEvent)
                {

                        item.LastNotifiedDate = DateTime.Now;
                        //sending Email

                }
                db.SaveChanges();
            }

任何人都可以帮助我! :)
谢谢

2 个答案:

答案 0 :(得分:1)

独立示例:

DateTime now = DateTime.Now;
DateTime notify = DateTime.Now.AddDays(1);
if(notify.Day == now.Day + 1)
    Console.WriteLine(" You are notified since you have an event tomorrow: " + notify.Day);

var RegistrtionToEvent = db.Registrations
                    .Where(t => (t.LastNotifiedDate == null) && t.Status == "signedup" &&
                     notify.Day == now.Day + 1).ToList();

在您的示例中(假设EventStartDate的类型为DateTime ):

DateTime notify = DateTime.Now.AddDays(1);
var RegistrtionToEvent = db.Registrations
                    .Where(t => (t.LastNotifiedDate == null) && t.Status == "signedup" &&
                     notify.Day == t.EventStartDate.Day).ToList();

只需访问您的.Day的{​​{1}}属性,然后将其与明天进行比较即可。

这里会发生什么?

我们检查明天是否是活动日。本质上是EventStartDate

答案 1 :(得分:0)

请尝试以下操作:

var dt = DateTime.Today.Date.AddDays(1);


var RegistrtionToEvent = db.Registrations
                .Where(t => (t.LastNotifiedDate >= dt && t.LastNotifiedDate <= dt) && t.Status == "signedup"
                 //&& t.EventStartDate //here is my problem what it should be done here with EventStartDate
                 )               
                .ToList();