2015-02-05 90 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,其邏輯是檢查剩餘一天的所有項目,並在每個項目的審計表中添加一條記錄。

謝謝。