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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }