public ScormPackageUserEvaluation ScormSaveEvaluation(dtoPackageEvaluation dto, Int32 idPerson, DateTime referenceTime, Boolean isCalculated = false, Boolean isCreatedByPlayer = false) { liteModuleLink link = null; if (dto.IdLink > 0) { link = Manager.Get <liteModuleLink>(dto.IdLink); if (link != null && link.Id == 0) { link = null; } } return(ScormSaveEvaluation(link, dto, idPerson, referenceTime, isCalculated, isCreatedByPlayer)); }
public IQueryable <ScormPackageUserEvaluation> ScormQuery(dtoPackageEvaluation dto, Int32 idPerson, long idLink = 0) { var query = ScormQuery(e => e.Deleted == BaseStatusDeleted.None && e.IdPerson == idPerson && e.IdItem == dto.IdItem && e.PlaySession == dto.PlaySession); if (dto.IdVersion != 0) { query = query.Where(e => e.UniqueIdVersion == dto.UniqueIdVersion); } if (idLink > 0) { query = query.Where(e => e.IsCreatedByModule && e.IdLink == idLink); } else { query = query.Where(e => !e.IsCreatedByModule); } return(query); }
public ScormPackageUserEvaluation ScormSaveEvaluation(liteModuleLink link, dtoPackageEvaluation dto, Int32 idPerson, DateTime referenceTime, Boolean isCalculated = false, Boolean isCreatedByPlayer = false) { ScormPackageUserEvaluation evaluation = null; if (idPerson > 0) { try { if (dto.Id > 0) { evaluation = Manager.Get <ScormPackageUserEvaluation>(dto.Id); } else { evaluation = ScormQuery(dto, idPerson, (link == null) ? 0 : link.Id).Skip(0).Take(1).ToList().FirstOrDefault(); } if ((evaluation == null || evaluation.Id == 0) && dto.IdItem > 0 && dto.UniqueIdItem != Guid.Empty) { Manager.BeginTransaction(); evaluation = ScormPackageUserEvaluation.CreateBy(link, dto, idPerson, referenceTime, isCalculated, isCreatedByPlayer); Manager.SaveOrUpdate(evaluation); Manager.Commit(); } else { Manager.BeginTransaction(); evaluation.UpdateStatisticsBy(dto, referenceTime, isCalculated); Manager.Commit(); } } catch (Exception ex) { Manager.RollBack(); evaluation = null; } } return(evaluation); }
public ScormPackageUserEvaluation ScormUpdateEvaluation(dtoPackageEvaluation dto, DateTime referenceTime, Boolean isCalculated) { ScormPackageUserEvaluation evaluation = null; try { if (dto.Id > 0) { evaluation = Manager.Get <ScormPackageUserEvaluation>(dto.Id); if (evaluation != null && evaluation.Id == 0) { Manager.BeginTransaction(); evaluation.UpdateStatisticsBy(dto, referenceTime, isCalculated); Manager.Commit(); } } } catch (Exception ex) { Manager.RollBack(); evaluation = null; } return(evaluation); }
public List <dtoItemEvaluation <long> > EvaluateModuleLinks( List <ModuleLink> links, int idUser, Dictionary <string, long> moduleUserLong = null, Dictionary <string, string> moduleUserString = null) { List <dtoPackageEvaluation> Evals = new List <dtoPackageEvaluation>(); List <dtoItemEvaluation <long> > results = new List <dtoItemEvaluation <long> >(); links = links.Where(l => l.DestinationItem.ServiceCode == ModuleRepository.UniqueCode).ToList(); if (links.Any()) { List <dtoItemToEvaluate> items = links.Where(l => l.Action == (Int32)ModuleRepository.ActionType.DownloadFile) .Select(l => new dtoItemToEvaluate(l.Id, l.DestinationItem.ObjectLongID, l.DestinationItem.ObjectIdVersion)) .ToList(); List <long> idItems = items .Where(i => i.AlwaysLastVersion) .Select(i => i.IdItem) .Distinct() .ToList(); List <long> idVersions = items .Where(i => !i.AlwaysLastVersion) .Select(i => i.IdVersion) .Distinct() .ToList(); if (idItems.Any()) { idItems = DownloadedItems(idItems, idUser); results.AddRange( (from i in items where idItems.Contains(i.IdItem) select new dtoItemEvaluation <long>() { Completion = 100, isCompleted = true, isPassed = true, isStarted = true, Item = i.Idlink, IdLink = i.Idlink }).ToList() ); } if (idVersions.Any()) { idVersions = DownloadedVersions(idVersions, idUser); results.AddRange( (from i in items where idVersions.Contains(i.IdVersion) select new dtoItemEvaluation <long>() { Completion = 100, isCompleted = true, isPassed = true, isStarted = true, Item = i.Idlink, IdLink = i.Idlink }).ToList() ); } items = links .Where(l => l.Action == (Int32)ModuleRepository.ActionType.PlayFile) .Select(l => new dtoItemToEvaluate( l.Id, l.DestinationItem.ObjectLongID, l.DestinationItem.ObjectIdVersion)) .ToList(); List <long> idItemsPlay = items .Where(i => i.AlwaysLastVersion) .Select(i => i.IdItem) .Distinct() .ToList(); List <long> idVersionPlay = items .Where(i => !i.AlwaysLastVersion) .Select(i => i.IdVersion) .Distinct() .ToList(); if (idItemsPlay.Any()) { List <liteRepositoryItem> rItems = GetQuery <liteRepositoryItem>() .Where(i => idItemsPlay.Contains(i.Id)) .ToList(); if (rItems.Any(i => i.Type == ItemType.Multimedia)) { idItems = rItems .Select(i => i.Id) .Distinct() .ToList(); idItems = (from p in GetQuery <PlayStatistics>() where idItems.Contains(p.IdItem) && p.IdPerson == idUser select p.IdItem) .Distinct().ToList(); results.AddRange( (from i in items where idItems.Contains(i.IdItem) select new dtoItemEvaluation <long>() { Completion = 100, isCompleted = true, isPassed = true, isStarted = true, Item = i.Idlink, IdLink = i.Idlink } ).ToList()); } if (rItems.Any(i => i.Type == ItemType.ScormPackage)) { DateTime date = DateTime.Now; foreach (liteRepositoryItem item in rItems) { dtoPackageEvaluation eval = new dtoPackageEvaluation(); //ScormService.GetPackageEvaluation_NewTMP( //idUser, //item.Id, //item.UniqueId, //item.UniqueIdVersion, //Modules.ScormStat.Domain.UserStatisticsFrom.Last, //Modules.ScormStat.Domain.PlayCompletionStatus.Ignore, //date); Boolean isStarted = (eval != null && eval.Status != PackageStatus.notstarted); Boolean isCompleted = (eval != null && eval.IsCompleted); Boolean isPassed = (eval != null && eval.IsPassed); int completion = (eval == null ? 0 : eval.Completion); double mark = (eval == null ? 0 : eval.UserScore); bool alreadyCompleted = (eval != null && eval.AlreadyCompleted); Evals.Add(eval); results.AddRange( (from i in items where i.IdItem == item.Id select new dtoItemEvaluation <long>() { Mark = (short)mark, Completion = (short)completion, isCompleted = isCompleted, isPassed = isPassed, isStarted = isStarted, Item = i.Idlink, IdLink = i.Idlink, AlreadyCompleted = alreadyCompleted } ).ToList()); } } } if (idVersionPlay.Any()) { List <liteRepositoryItemVersion> vItems = GetQuery <liteRepositoryItemVersion>() .Where(i => idVersionPlay.Contains(i.Id)) .ToList(); if (vItems.Any(i => i.Type == ItemType.Multimedia)) { idVersions = vItems.Select(i => i.Id) .Distinct().ToList(); idVersions = ( from p in GetQuery <PlayStatistics>() where idVersions.Contains(p.IdVersion) && p.IdPerson == idUser select p.IdVersion ).Distinct().ToList(); results.AddRange( (from i in items where idVersions.Contains(i.IdVersion) select new dtoItemEvaluation <long>() { Completion = 100, isCompleted = true, isPassed = true, isStarted = true, Item = i.Idlink, IdLink = i.Idlink }).ToList()); } if (vItems.Any(i => i.Type == ItemType.ScormPackage)) { } } } if (Evals != null && Evals.Any()) { } return(results); }
public List <dtoItemEvaluation <long> > EvaluateRepositoryItem( Int64 ItemId, Guid ItemUniqueId, Guid ItemUniqueIdVersion, int idUser ) { List <dtoItemEvaluation <long> > results = new List <dtoItemEvaluation <long> >(); //dtoEvaluation result = new dtoEvaluation(); DateTime date = DateTime.Now; dtoPackageEvaluation eval = ScormService.GetPackageEvaluation_NewTMP( idUser, ItemId, ItemUniqueId, ItemUniqueIdVersion, Modules.ScormStat.Domain.UserStatisticsFrom.Last, Modules.ScormStat.Domain.PlayCompletionStatus.Ignore, date); Boolean isStarted = (eval != null && eval.Status != PackageStatus.notstarted); Boolean isCompleted = (eval != null && eval.IsCompleted); Boolean isPassed = (eval != null && eval.IsPassed); int completion = (eval == null ? 0 : eval.Completion); double mark = (eval == null ? 0 : eval.UserScore); bool alreadyCompleted = (eval != null && eval.AlreadyCompleted); dtoItemEvaluation <long> temEval = new dtoItemEvaluation <long>() { Mark = (short)mark, Completion = (short)completion, isCompleted = isCompleted, isPassed = isPassed, isStarted = isStarted, Item = ItemId, AlreadyCompleted = alreadyCompleted } results.AddRange( (from i in items where i.IdItem == item.Id select new dtoItemEvaluation <long>() { Mark = (short)mark, Completion = (short)completion, isCompleted = isCompleted, isPassed = isPassed, isStarted = isStarted, Item = i.Idlink, IdLink = i.Idlink, AlreadyCompleted = alreadyCompleted } ).ToList()); return(result); }