Получение кода для запуска на всех страницах на основе даты
Я пытаюсь создать программу, которая состоит из двух основных частей: Проекты и Аудиты
Проект будет иметь дату начала и число, которое сообщит ему, сколько дней до его завершения (все они заданы заранее).
Мне нужно создать аудит, скажем, за один день до завершения проекта.
Ничего страшного.
Проблема, которую я вижу и пытаюсь ответить на вопрос:
Как я могу эффективно поддерживать это? Я использую MVC4 и пробовал фильтры действий. У меня есть код, работающий на каждой странице - для покрытия любых пользовательских URL-адресов, обращающихся к сайту. Тем не менее, это, кажется, значительно замедляет ход событий. Вот что у меня так далеко:
public class CreateAuditsController : ActionFilterAttribute
{
private QAAPPEntities db = new QAAPPEntities();
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
CreateAuditsFromProjects();
base.OnActionExecuted(filterContext);
}
public void CreateAuditsFromProjects()
{
// Generate list of Research Projects
List<ResearchProject> allResearchProjects = db.ResearchProjects.Include(a => a.ResearchProjectStatus).ToList();
// Cycle through those to see which ones need audits created
for (int i = 0; i < allResearchProjects.Count; i++)
{
// Get current looped project for further use
ResearchProject currentLoopedProject = allResearchProjects[i];
if (currentLoopedProject.Description == "Some Description")
{
Audit auditToAdd = new Audit();
auditToAdd.ResearchProjectID = currentLoopedProject.ResearchProjectID;
auditToAdd.Name = "Some Name";
auditToAdd.AssignedQAID = 1;
auditToAdd.CreatedDate = DateTime.Now;
auditToAdd.AuditStatusID = 1;
auditToAdd.AuditTypeID = 1;
db.Audits.Add(auditToAdd);
db.SaveChanges();
}
}
db.SaveChanges();
// Create audits
}
}
Любая помощь приветствуется.
2 ответа
Проверьте Revalee. Это позволит вам запланировать действия, которые будут предприняты позже. Поэтому, когда вы создаете проект, вы затем используете клиент Revalee, чтобы запланировать создание аудита за один день до его завершения.
Простое решение состоит в том, чтобы создать событие базы данных с логикой проверки всех проектов за один день и добавить запись в таблицу аудита для каждого из этих проектов.
Спасибо.