Лучший способ сделать задачу базы данных автоматически в ASP.NET MVC 5 и EF - PullRequest
0 голосов
/ 25 июня 2018

У меня есть объект OnlineCourse, который имеет свойство StartDate и EndDate

Я хочу отказать пользователю, если текущая дата / время находится в диапазоне от StartDate до EndDate
, или отключить этот курс на основе сегодняшнего дня.дата / время

я поместил ниже код в мой регистр ActionMethod

var startDate = currentOnlineCourse.StartDate
var endDate = currentOnlineCourse.EndDate

if (endDate >= DateTime.Now)
{
   currentOnlineCourse.Enable = false;
   dbContext.SaveChanges();
   ViewBag.Message = "You cannot apply this Course");
   return View();
}  

мой проект содержит много из этой ситуации, которые должны автоматически выполнить некоторые задачи (удалить обновление) базы данных
я хочусоздать что-то вроде планировщика задач и поместить этот код в отдельный класс и называть его каждую дату (например, в 12:00 каждого дня)
Какой лучший способ сделать это ??

1 Ответ

0 голосов
/ 25 июня 2018

Мне нравится обрабатывать пользовательскую логику проверки путем реализации IValidatableObject в ViewModel:

public class OnlineCourseViewModel : IValidatableObject {
    public Datetime StartDate { get; set; }
    public Datetime EndDate { get; set; }
    public bool Enable { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
        if (EndDate > DateTime.Now) {
             yield return new ValidationResult(
                 "You cannot apply this Course",
                 new [] { "EndDate" }
             );
        }
    }
}

В вашем контроллере проверьте, является ли модель действительной:

[HttPost]
public ActionResult Submit(OnlineCourseViewModel postData) {

     if (!ModelState.IsValid) {
         // Validation failed -> show errors
         return View("Submit", postData);
     }

     // Validation succeeded
     // do your stuff ...
}

В вашемПросмотр, визуализация любых ошибок проверки:

@model OnlineCourseViewModel 

@Html.ValidationSummary()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...