2015-02-05 43 views
-1

我试图创建具有两个主要部分程序的所有页面上运行直到完成(它们都是预设的)。获取代码,以基于日期

我需要在项目完成前一天创建审计。

到目前为止没有什么大不了的。

我预见并正与该怎么回答挣扎的问题是:

我怎样才能有效地维护这个?我正在使用MVC4并尝试了Action Filter。我在每个页面上运行代码 - 以覆盖访问该网站的任何自定义网址。但是,这似乎大大减缓了事态。这是我到目前为止:

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 


    } 
} 

任何帮助表示赞赏。

回答

1

结账Revalee。让您安排稍后采取的行动。因此,当您创建一个项目时,您将使用Revalee客户端安排在其结束前一天创建审计。

0

简单的解决方案是,创建一个数据库event,其逻辑是检查剩余一天的所有项目,并在每个项目的审计表中添加一条记录。

谢谢。