示例#1
0
      static IEnumerable<object[]> exportStudyDetails(exporter e) {
        //hotova cviceni, ktera nepotrebuji human evaluaci:
        long exFlag = (long)(CourseModel.CourseDataFlag.ex | CourseModel.CourseDataFlag.done);
        long wrongFlag = (long)CourseModel.CourseDataFlag.needsEval;
        var query = e.db.CourseDatas.
          Where(cd =>
            cd.CourseUser.CompanyId == e.companyId &&
            (cd.Flags & exFlag) == exFlag &&
            (cd.Flags & wrongFlag) == 0);
        //filtr pouze na skupinu studentu studijni grupy
        if (e.groupId >= 0) {
          var grp = e.data.studyGroups.First(g => g.groupId == e.groupId);
          var lmcomIds = e.courseUsers.Keys.Select(u => u.lmcomId).ToArray();
          query = query.Where(cd => lmcomIds.Contains(cd.CourseUser.LMComId));
        }
        //vyber raw data z databaze
        var query2 = query.
          Select(cd => new { cd.Key, cd.ShortData, cd.CourseUser.ProductUrl, cd.CourseUser.LMComId }).
          ToArray();
        //zpracovani raw dat
        var allExercises = query2.
          Select(kd => {
            var res = JsonConvert.DeserializeObject<uEx>(kd.ShortData);
            res.url = kd.Key; res.productUrl = kd.ProductUrl; res.lmcomId = kd.LMComId;
            return res;
          }).
          ToArray();
        //merge user data s product sitemap
        var umodulesObj = new blendedMeta.uDoneModules();
        foreach (var uex in allExercises) blendedMeta.MetaInfo.addEx(umodulesObj, uex); //zatrideni existujicich dat

        var umodules = umodulesObj.umodules.Values.ToArray();
        return lib.emptyAndHeader(umodules).Select(t => {
          IAlocatedKey usr = null;
          if (t != null) {
            if (t.module.level == null) return null; //pretest modul nema level
            e.courseUsers.TryGetValue(new lineUser(t.module.product.line, t.lmcomId), out usr);
            if (usr == null) return null;
          }
          IAlocatedKey lector = usr == null ? null : e.allUsers[usr._myLectorLmcomId];
          int lev = t == null ? 0 : (t.module is pretestItem ? ((pretestItem)t.module).lev : t.module.level.lev);
          return new object[] {
              t==null ? "_student" : usr.lastName + " " + usr.firstName,
              t==null ? "_studyGroup" : usr._myGroup.title + " (učitel " + lector.firstName + " " + lector.lastName + ")",
              t==null ? "_course" : exporter.lineToText(t.module.product.line),
              t==null ? "_level" : e.levelToText(lev),
              t==null ? (object)"_exerciseCount" : t.exCount,
              t==null ? (object)"_exerciseSum" : t.module.level.exCount,
              t==null ? "_lesson" : t.module.order + t.module.data.title,
              t==null ? (object)"_maxScore" : t.ms,//new lib.formatedValue(Math.Round(t.ms==0 ? -1 : (decimal)t.s / t.ms, 2), lib.cellFormat.percent),
              t==null ? (object)"_score" : t.s,
              t==null ? (Object)"_elapsed" : new lib.formatedValue((double)t.elapsed / secPerDay, lib.cellFormat.time),
              t==null ? (Object)"_recording" : new lib.formatedValue((double)t.sRec / secPerDay, lib.cellFormat.time),
              t==null ? (Object)"_playRecording" : new lib.formatedValue((double)t.sPRec / secPerDay, lib.cellFormat.time),
              t==null ? (Object)"_play" : new lib.formatedValue((double)t.sPlay / secPerDay, lib.cellFormat.time),
            };
        });
      }
示例#2
0
      public static byte[] run(int companyId, int groupId) {
        using (var xlsx = new xlsxFile(HttpContext.Current.Server.MapPath("~/blendedapi/vyzva/server/excels/studyall.xlsx"))) {
          var e = new exporter(companyId, groupId);

          var ws = lib.prepareSheet2(xlsx.package, "studyblocks", 0);
          var rng = lib.import(ws, exportStudyBlocks(e), 0, 0);
          ws.Names.Add("studyblocks", rng);

          ws = lib.prepareSheet2(xlsx.package, "studydetails", 0);
          rng = lib.import(ws, exportStudyDetails(e), 0, 0);
          ws.Names.Add("studydetails", rng);

          return xlsx.result;
        }
      }
示例#3
0
 static IEnumerable<object[]> exportStudyBlocks(exporter e) {
   //nacti z CourseData pretesty, hotove lekce nebo vyhodnocene testy:
   long validTypes = (long)(CourseModel.CourseDataFlag.blLesson | CourseModel.CourseDataFlag.blTest | CourseModel.CourseDataFlag.blPretest);
   var query = e.db.CourseDatas.
     Where(cd =>
       cd.CourseUser.CompanyId == e.companyId &&
       (cd.Flags & (long)CourseModel.CourseDataFlag.done) != 0 && //musi byt done
       (cd.Flags & validTypes) != 0 && //pretest, lekce nebo test
       (cd.Flags & (long)CourseModel.CourseDataFlag.needsEval) == 0); //jsou vyhodnocene
   //filtr pouze na skupinu studentu studijni grupy
   if (e.groupId >= 0) {
     var grp = e.data.studyGroups.First(g => g.groupId == e.groupId);
     var lmcomIds = e.courseUsers.Keys.Select(u => u.lmcomId).ToArray();
     query = query.Where(cd => lmcomIds.Contains(cd.CourseUser.LMComId));
   }
   //vyber raw data z databaze
   var query2 = query.
     Select(cd => new { cd.Key, cd.ShortData, cd.CourseUser.ProductUrl, cd.CourseUser.LMComId }).
     ToArray();
   //zpracovani raw dat
   var allModules = query2.
     Select(kd => {
       var res = JsonConvert.DeserializeObject<userBase>(kd.ShortData);
       res.url = kd.Key; res.productUrl = kd.ProductUrl; res.lmcomId = kd.LMComId;
       return res;
     }).
     ToArray();
   //zapracovani user dat do struktury kurzu
   var userProducts = new blendedMeta.uProducts();
   foreach (var module in allModules) blendedMeta.MetaInfo.addModule(userProducts, module); //zatrideni existujicich dat
   foreach (var lmcId in e.courseUsers.Keys) blendedMeta.MetaInfo.addDummyUsers(userProducts, lmcId); //doplneni studentu, co jeste nedokoncili nic z kurzu (tj. nemaji zadna DONE data v DB)
   return lib.emptyAndHeader(userProducts.uproducts.Select(kv => new { kv.Key, kv.Value })).Select(t => {
     IAlocatedKey usr = null; if (t != null) {
       e.courseUsers.TryGetValue(t.Key, out usr);
       if (usr == null) return null;
     }
     IAlocatedKey lector = usr == null ? null : e.allUsers[usr._myLectorLmcomId];
     return new object[] {
         t==null ? "_student" : usr.lastName + " " + usr.firstName,
         t==null ? "_studyGroup" : usr._myGroup.title + " (učitel " + lector.firstName + " " + lector.lastName + ")",
         t==null ? "_course" : exporter.lineToText(t.Value.product.line),
         t==null ? "_learnphase" : t.Value.etapId(),
       };
   });
 }