public void SaveActionsExecution(List <dtoItemEvaluation <long> > evaluatedLinks, int idUser) { if (evaluatedLinks != null && evaluatedLinks.Count > 0) { try { IList <long> IdLinks = (from e in evaluatedLinks select e.Item).ToList(); IList <ModuleLink> links = (from l in Manager.GetIQ <ModuleLink>() where IdLinks.Contains(l.Id) select l).ToList(); foreach (dtoItemEvaluation <long> dto in evaluatedLinks) { ModuleLink link = (from l in links where l.Id == dto.Item select l).FirstOrDefault(); if (link != null) { int croleId = Manager.GetActiveSubscriptionIdRole(idUser, link.SourceItem.CommunityID); //Manager.Get<SubActivity>(Link.SourceItem.ObjectLongID).Community.Id); Manager.BeginTransaction(); ServiceStat.InitOrUpdateSubActivityNoTransaction(link.SourceItem.ObjectLongID, idUser, croleId, idUser, "", "", dto.Completion, dto.Mark, dto.isStarted, dto.isCompleted, dto.isPassed); Manager.Commit(); } } } catch (Exception ex) { Manager.RollBack(); Debug.Write(ex); } } }
public void SaveActionExecution( ModuleLink link, bool isStarted, bool isPassed, short Completion, bool isCompleted, short mark, int idUser, bool alreadyCompleted, Dictionary <string, long> moduleUserLong = null, Dictionary <string, string> moduleUserString = null) { try { if (link.SourceItem.ObjectTypeID == (int)COL_BusinessLogic_v2.UCServices.Services_EduPath.ObjectType.SubActivity) { int croleId = Manager.GetActiveSubscriptionIdRole(idUser, link.SourceItem.CommunityID); //Manager.Get<SubActivity>(Link.SourceItem.ObjectLongID).Community.Id); Manager.BeginTransaction(); ServiceStat.InitOrUpdateSubActivityNoTransaction(link.SourceItem.ObjectLongID, idUser, croleId, idUser, "", "", Completion, mark, isStarted, isCompleted, isPassed); Manager.Commit(); } else if (link.SourceItem.ObjectTypeID == (int)COL_BusinessLogic_v2.UCServices.Services_EduPath.ObjectType.Activity) { } } catch (Exception ex) { if (Manager.IsInTransaction()) { Manager.RollBack(); } Debug.Write(ex); } }
public void SaveActionExecution(Int32 idUser, Int32 idRole, long idPath, long idSubActivity, dtoEvaluation evaluation, DateTime?referenceTime) { try { Boolean save = true; Path path = GetPath(idPath); PolicySettings settings = null; if (path != null) { settings = path.Policy; } if (settings != null) { switch (settings.Statistics) { case CompletionPolicy.UpdateAlways: break; default: List <SubActivityStatistic> items = GetUserStatistics(idSubActivity, idUser, ((referenceTime != null && referenceTime.HasValue) ? referenceTime.Value : DateTime.Now)); SubActivityStatistic last = (items == null ? null : items.FirstOrDefault()); switch (settings.Statistics) { case CompletionPolicy.NoUpdateIfCompleted: if (evaluation.isPassed && evaluation.isCompleted) { save = !items.Any(i => ServiceStat.CheckStatusStatistic(i.Status, StatusStatistic.CompletedPassed)); } else { save = !items.Any(i => ServiceStat.CheckStatusStatistic(i.Status, StatusStatistic.Completed) || ServiceStat.CheckStatusStatistic(i.Status, StatusStatistic.CompletedPassed)); } break; //case CompletionPolicy.UpdateOnlyIfBetter: // if (last != null) // save = (last.Completion < evaluation.Completion || ( // ((!ServiceStat.CheckStatusStatistic(last.Status, StatusStatistic.Completed) && !ServiceStat.CheckStatusStatistic(last.Status, StatusStatistic.CompletedPassed)) // && (evaluation.Status == Core.FileRepository.Domain.PackageStatus.completed // || evaluation.Status == Core.FileRepository.Domain.PackageStatus.completedpassed)) // )); // break; //case CompletionPolicy.UpdateOnlyIfWorst: // break; } break; } } if (save) { Manager.BeginTransaction(); ServiceStat.InitOrUpdateSubActivityNoTransaction(idSubActivity, idUser, idRole, idUser, UC.IpAddress, UC.ProxyIpAddress, evaluation.Completion, (short)evaluation.Completion, evaluation.isStarted, evaluation.isCompleted, evaluation.isPassed); Manager.Commit(); } } catch (Exception ex) { } }
public statController() { ss = new ServiceStat(); ps = new ProjectService(); }
/// <summary> /// Recupera le statistiche dell'utente CORRENTE per i moocs della comunità CORRENTE. /// </summary> /// <returns></returns> /// <remarks> /// ToDo: usare oggetto di dominio in OUTPUT /// ToDo: Ottimizzare la 50.000 chiamate a roba vecchia... /// </remarks> public dtoMoocInfoResponse Get() { //dtoNoticeBoardPlainListResponse response = new dtoNoticeBoardPlainListResponse(); //response.ErrorInfo = base.LastError; //ContextHelper.APIContext. IList <dtoEPitemList> paths = new List <dtoEPitemList>(); dtoMoocInfoResponse response = new dtoMoocInfoResponse(); response.Moocs = new List <dtoCokadeInfo>(); COL_Persona UtenteCorrente = new COL_Persona(base.AppContext.UserContext.CurrentUserID); int usrId = base.AppContext.UserContext.CurrentUserID; int comId = base.AppContext.UserContext.CurrentCommunityID; try { paths = ServiceEP.GetMyEduPaths(usrId, comId, UtenteCorrente.GetIDRuoloForComunita(comId), EpViewModeType.View, true); } catch (Exception ex) { string exception = ex.ToString(); } //Me.CurrentContext.UserContext.CurrentUserID, CurrentCommunityID, CurrentCommRoleID, Me.ViewModeType, PreloadIsMooc) foreach (dtoEPitemList path in paths) { dtoStatWithWeight statForBar = ServiceEP.ServiceStat.GetPassedCompletedWeight_byActivity(path.Id, usrId, DateTime.Now); lm.Comol.Modules.EduPath.Domain.DTO.dtoCokadeInfo mooc = new dtoCokadeInfo(); mooc.CommunityId = comId; mooc.PathId = path.Id; mooc.PathName = path.Name; mooc.Info = new dtoCokadeMoocInfo(); mooc.Info.Completion = statForBar.Completion; mooc.Info.MinCompletion = statForBar.MinCompletion; mooc.Info.mType = path.moocType; StatusStatistic moocStatus = ServiceStat.GetEpUserStatus(path.Id, usrId); mooc.Info.mookCompleted = CheckStatusStatistic(moocStatus, StatusStatistic.Completed) || CheckStatusStatistic(moocStatus, StatusStatistic.CompletedPassed) || CheckStatusStatistic(moocStatus, StatusStatistic.Passed); response.Moocs.Add(mooc); } response.IsCommunityCokade = ServiceEP.CokadeEnabled(comId); if (response.IsCommunityCokade) { IList <dtoCokadeInfo> MoocsType2 = response.Moocs.Where(c => c.Info.mType == MoocType.Cockade).ToList(); response.CokadeCompleted = MoocsType2.All(m => m.Info.mookCompleted); response.CokadeCompletedGold = MoocsType2.All(m => m.Info.mookCompleted && m.Info.Completion >= 100); } return(response); }
public void SaveActionExecution(lm.Comol.Core.FileRepository.Domain.ScormPackageUserEvaluation evaluation) { try { Boolean save = true; long idSubActivity = evaluation.IdObject; long idPath = GetPathId_BySubActivityId(idSubActivity); Int32 idCommunity = GetPathIdCommunity(idPath); Int32 idRole = Manager.GetActiveSubscriptionIdRole(evaluation.IdPerson, idCommunity); Path path = GetPath(idPath); PolicySettings settings = null; if (path != null) { settings = path.Policy; } if (settings != null) { switch (settings.Statistics) { case CompletionPolicy.UpdateAlways: break; default: List <SubActivityStatistic> items = GetUserStatistics(idSubActivity, evaluation.IdPerson, (evaluation.EndPlayOn.HasValue ? evaluation.EndPlayOn.Value : DateTime.Now)); SubActivityStatistic last = (items == null ? null : items.FirstOrDefault()); switch (settings.Statistics) { case CompletionPolicy.NoUpdateIfCompleted: if (evaluation.IsPassed && evaluation.IsCompleted) { save = !items.Any(i => ServiceStat.CheckStatusStatistic(i.Status, StatusStatistic.CompletedPassed)); } else { save = !items.Any(i => ServiceStat.CheckStatusStatistic(i.Status, StatusStatistic.Completed) || ServiceStat.CheckStatusStatistic(i.Status, StatusStatistic.CompletedPassed)); } break; case CompletionPolicy.UpdateOnlyIfBetter: if (last != null) { save = (last.Completion < evaluation.Completion || ( ((!ServiceStat.CheckStatusStatistic(last.Status, StatusStatistic.Completed) && !ServiceStat.CheckStatusStatistic(last.Status, StatusStatistic.CompletedPassed)) && (evaluation.Status == Core.FileRepository.Domain.PackageStatus.completed || evaluation.Status == Core.FileRepository.Domain.PackageStatus.completedpassed)) )); } break; case CompletionPolicy.UpdateOnlyIfWorst: break; } break; } } if (save) { Manager.BeginTransaction(); ServiceStat.InitOrUpdateSubActivityNoTransaction(idSubActivity, evaluation.IdPerson, idRole, evaluation.IdPerson, UC.IpAddress, UC.ProxyIpAddress, evaluation.Completion, (short)evaluation.Completion, (evaluation.Status != lm.Comol.Core.FileRepository.Domain.PackageStatus.notstarted), evaluation.IsCompleted, evaluation.IsPassed); Manager.Commit(); } } catch (Exception ex) { } }