Отправить напоминание по электронной почте за день до начала мероприятия - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь выяснить, как отправить электронное письмо с напоминанием пользователям за день до начала мероприятия, скажем, например:

Существует событие, которое должно начаться: 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 ]

1 голос
/ 27 января 2020

Автономный пример:

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 вашего EventStartDate и сравните его с завтрашним днем.

Что здесь происходит?

Мы проверяем, будет ли завтра день событий. По существу Today + 1 == EventStartDate

0 голосов
/ 27 января 2020

Пожалуйста, попробуйте это:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...