コード例 #1
0
ファイル: StatisticsToc.cs プロジェクト: PavelPZ/NetNew
 public static TocExsRow createProductForCompany(int companyId, string prodUrl) {
   //TreeListTextColumn
   var product = Lib.prodDir[prodUrl]; var company = Lib.company(companyId);
   lock (product) {
     var allUsers = company.UserDir.Values.Select(usr => usr.getProductData(prodUrl)).Where(pd => pd != null).ToArray(); if (allUsers.Length == 0) return null;
     //exCount a tempData
     foreach (var t in product.scan()) t.tempData = new TocExsRow() { exCount = t.exCount * allUsers.Length, toc = t };
     //skiped
     foreach (var userData in allUsers) {
       if (userData.SkipedIds == null) continue;
       foreach (var skId in userData.SkipedIds) {
         var toc = Lib.tocIdsDir[skId];
         UserEx existingEx;
         //zaloz (pokud neexistuji) pro usera cviceni a nastav mu isSkiped
         foreach (var t in toc.scan().Where(t => t.isType(CourseMeta.runtimeType.ex))) { //pro vsechna child cviceni Skipped uzlu:
           if (!userData.Exercises.TryGetValue(t.Id, out existingEx)) userData.Exercises.Add(t.Id, existingEx = new UserEx { Toc = t, User = userData.user, Product = product });
           existingEx.isSkiped = true; //nastav isSkipped
         }
       }
     }
     //exercises
     foreach (var exGroup in allUsers.SelectMany(u => u.Exercises.Values).GroupBy(e => e.Id))
       Lib.tocIdsDir[exGroup.Key].tocTemp.setUserExs(exGroup.ToArray());
     //agregace dat
     product.refreshNumbers();
     //vybuduj tree
     return product.extractTempData(null);
   }
 }
コード例 #2
0
ファイル: StatisticsToc.cs プロジェクト: PavelPZ/NetNew
 public void setUserExs(UserEx[] userExs) {
   this.userExs = userExs;
   if (exCount==0) exCount = userExs.Length; // pro pouziti v GridCellTemplate
   foreach (var ex in userExs) {
     if (ex.isSkiped) { skipedCount++; continue; }
     elapsed += ex.Elapsed;
     if (ex.Score < 0) complPassiveCnt++; else complNotPassiveCnt++;
     if (ex.Score > 0) points += ex.Score;
   }
 }