コード例 #1
0
        /// <summary>
        /// The get one by moodle id.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <param name="lmsQuizId">
        /// The lms quiz id.
        /// </param>
        /// <param name="companyLmsId">
        /// The company Lms Id.
        /// </param>
        /// <returns>
        /// The <see cref="IFutureValue{Quiz}"/>.
        /// </returns>
        public IFutureValue <Quiz> GetOneByLmsQuizId(int userId, int lmsQuizId, int companyLmsId)
        {
            QueryOver <User, User> companyQuery =
                new DefaultQueryOver <User, int>().GetQueryOver()
                .Where(x => x.Id == userId)
                .Select(res => res.Company.Id);
            IFutureValue <int> id = this.userRepository.FindOne <int>(companyQuery);

            Quiz              q   = null;
            SubModuleItem     smi = null;
            SubModuleCategory smc = null;
            User              u2  = null;

            var query =
                new DefaultQueryOver <Quiz, int>().GetQueryOver(() => q)
                .WhereRestrictionOn(x => x.LmsQuizId).IsNotNull
                .And(x => x.LmsQuizId == lmsQuizId)
                .JoinQueryOver(x => x.SubModuleItem, () => smi, JoinType.InnerJoin)
                .JoinQueryOver(() => smi.SubModuleCategory, () => smc, JoinType.InnerJoin)
                .Where(() => smc.CompanyLmsId != null && smc.CompanyLmsId == companyLmsId)
                .JoinQueryOver(() => smi.CreatedBy, () => u2, JoinType.InnerJoin)
                .Where(() => u2.Company.Id == id.Value && (int)u2.Status == 1)
                .Take(1);

            return(this.Repository.FindOne(query));
        }
コード例 #2
0
        public JsonResult DeleteSubModuleItem(SubModuleItem subModuleItem)
        {
            var          isSuccess = true;
            var          message   = string.Empty;
            const string url       = "/SubModuleItem/Index";

            permission = (RoleSubModuleItem)cacheProvider.Get(cacheKey) ?? roleSubModuleItemService.GetRoleSubModuleItemBySubModuleIdandRole(url,
                                                                                                                                             Helpers.UserSession.GetUserFromSession().RoleId);

            if (permission.DeleteOperation == true)
            {
                isSuccess = this.subModuleItemService.DeleteSubModuleItem(subModuleItem.Id);
                if (isSuccess)
                {
                    message = "Sub module item deleted successfully!";
                }
                else
                {
                    message = "Sub module item can't be deleted!";
                }
            }
            else
            {
                message = "You don't have permission to delete";
            }
            return(Json(new
            {
                isSuccess = isSuccess,
                message = message
            }, JsonRequestBehavior.AllowGet));
        }
コード例 #3
0
        /// <summary>
        /// The get shared for user surveys by user id.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{SurveyFromStoredProcedureDTO}"/>.
        /// </returns>
        public IEnumerable <SurveyFromStoredProcedureDTO> GetSharedForUserSurveysByUserId(int userId)
        {
            var query =
                new DefaultQueryOver <User, int>().GetQueryOver()
                .Where(x => x.Id == userId)
                .Select(res =>
                        res.Company.Id);
            var id = this.userRepository.FindOne <int>(query);

            Survey            s   = null;
            SubModuleItem     smi = null;
            SubModuleCategory smc = null;
            User u  = null;
            User u2 = null;
            SurveyFromStoredProcedureExDTO dto = null;
            var queryOver = new DefaultQueryOver <Survey, int>().GetQueryOver(() => s)
                            .JoinQueryOver(x => x.SubModuleItem, () => smi, JoinType.InnerJoin).Where(() => smi.IsActive == true && smi.IsShared == true)
                            .JoinQueryOver(() => smi.SubModuleCategory, () => smc, JoinType.InnerJoin).Where(() => smc.IsActive == true)
                            .JoinQueryOver(() => smc.User, () => u, JoinType.InnerJoin)
                            .JoinQueryOver(() => smi.CreatedBy, () => u2, JoinType.InnerJoin).Where(() => (int)u2.Status == 1)
                            .Where(() => u2.Id != userId && u2.Company.Id == id.Value)
                            .SelectList(res =>
                                        res.Select(() => s.SurveyGroupingType.Id)
                                        .WithAlias(() => dto.surveyGroupingTypeId)
                                        .Select(() => s.Description)
                                        .WithAlias(() => dto.description)
                                        .Select(() => s.SurveyName)
                                        .WithAlias(() => dto.surveyName)
                                        .Select(() => s.LmsSurveyId)
                                        .WithAlias(() => dto.lmsSurveyId)
                                        .Select(() => s.Id)
                                        .WithAlias(() => dto.surveyId)
                                        .Select(() => u.LastName)
                                        .WithAlias(() => dto.lastName)
                                        .Select(() => u.FirstName)
                                        .WithAlias(() => dto.firstName)
                                        .Select(() => u.Id)
                                        .WithAlias(() => dto.userId)
                                        .Select(() => u2.LastName)
                                        .WithAlias(() => dto.createdByLastName)
                                        .Select(() => u2.FirstName)
                                        .WithAlias(() => dto.createdByName)
                                        .Select(() => smi.CreatedBy.Id)
                                        .WithAlias(() => dto.createdBy)
                                        .Select(() => smi.DateModified)
                                        .WithAlias(() => dto.dateModified)
                                        .Select(() => smi.Id)
                                        .WithAlias(() => dto.subModuleItemId)
                                        .Select(() => smc.CategoryName)
                                        .WithAlias(() => dto.categoryName)
                                        .Select(() => smc.Id)
                                        .WithAlias(() => dto.subModuleCategoryId))
                            .TransformUsing(Transformers.AliasToBean <SurveyFromStoredProcedureExDTO>());
            var result =
                this.Repository.FindAll <SurveyFromStoredProcedureExDTO>(queryOver)
                .ToList()
                .Select(x => new SurveyFromStoredProcedureDTO(x));

            return(result);
        }
コード例 #4
0
        /// <summary>
        /// The get save image routine.
        /// </summary>
        /// <param name="subModuleItem">
        /// The sub module item.
        /// </param>
        /// <param name="creator">
        /// The creator.
        /// </param>
        /// <returns>
        /// The save image routine
        /// </returns>
        private Func <string, string, File> GetSaveImageRutine(SubModuleItem subModuleItem, User creator)
        {
            Func <string, string, File> saveImage = (imageName, imageData) =>
            {
                if (string.IsNullOrEmpty(imageName) || string.IsNullOrEmpty(imageData))
                {
                    return(null);
                }

                FileModel fileModel = this.FileModel;
                File      file      = fileModel.CreateFile(
                    subModuleItem.Return(x => x.CreatedBy, creator),
                    imageName,
                    default(DateTime),
                    null,
                    null,
                    null,
                    null);
                byte[] byteData = System.Convert.FromBase64String(imageData);
                fileModel.SetData(file, byteData);

                string permanentFileName = fileModel.PermanentFileName(file);
                using (FileStream stream = System.IO.File.OpenWrite(permanentFileName))
                {
                    fileModel.ResizeImage(byteData, fileModel.PermanentFileName(file), stream);
                }

                return(file);
            };

            return(saveImage);
        }
コード例 #5
0
        /// <summary>
        /// The process distractors.
        /// </summary>
        /// <param name="question">
        /// The question.
        /// </param>
        /// <param name="convertedQuestion">
        /// The converted question.
        /// </param>
        /// <param name="saveImage">
        /// The save image.
        /// </param>
        /// <param name="subModuleItem">
        /// The sub module item.
        /// </param>
        /// <param name="creator">
        /// The creator.
        /// </param>
        /// <param name="distractorModel">
        /// The distractor model.
        /// </param>
        private static void ProcessDistractors(
            EdugameQuestion question,
            Question convertedQuestion,
            Func <string, string, File> saveImage,
            SubModuleItem subModuleItem,
            User creator,
            DistractorModel distractorModel)
        {
            foreach (EdugameDistractor distractor in question.Distractors)
            {
                Distractor convertedDistractor = EdugameConverter.Convert(distractor, convertedQuestion);
                File       distractorImage     = saveImage(distractor.ImageName, distractor.Image);
                if (distractorImage != null)
                {
                    convertedDistractor.Image = distractorImage;
                }

                if (convertedDistractor.CreatedBy == null)
                {
                    convertedDistractor.CreatedBy = subModuleItem.Return(x => x.CreatedBy, creator);
                }

                if (convertedDistractor.ModifiedBy == null)
                {
                    convertedDistractor.ModifiedBy = convertedDistractor.CreatedBy;
                }

                if (subModuleItem != null)
                {
                    distractorModel.RegisterSave(convertedDistractor);
                }

                convertedQuestion.Distractors.Add(convertedDistractor);
            }
        }
コード例 #6
0
        /// <summary>
        /// The get quizzes by user id.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <param name="showLms">
        /// The show lms.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{QuizFromStoredProcedureDTO}"/>.
        /// </returns>
        public IEnumerable <QuizFromStoredProcedureExDTO> GetQuizzesByUserId(int userId, bool showLms)
        {
            Quiz                         q         = null;
            SubModuleItem                smi       = null;
            SubModuleCategory            smc       = null;
            User                         u         = null;
            User                         u2        = null;
            QuizFromStoredProcedureExDTO dto       = null;
            QueryOver <Quiz, User>       queryOver =
                new DefaultQueryOver <Quiz, int>().GetQueryOver(() => q)
                .JoinQueryOver(x => x.SubModuleItem, () => smi, JoinType.InnerJoin)
                .Where(() => smi.IsActive == true)
                .And(() => q.LmsQuizId == null || showLms == true)
                .JoinQueryOver(() => smi.SubModuleCategory, () => smc, JoinType.InnerJoin)
                .Where(() => smc.IsActive == true)
                .JoinQueryOver(() => smc.User, () => u, JoinType.InnerJoin)
                .JoinQueryOver(() => smi.CreatedBy, () => u2, JoinType.LeftOuterJoin)
                .Where(() => u2.Id == userId)
                .SelectList(
                    res =>
                    res.Select(() => q.Description)
                    .WithAlias(() => dto.description)
                    .Select(() => q.QuizName)
                    .WithAlias(() => dto.quizName)
                    .Select(() => q.LmsQuizId)
                    .WithAlias(() => dto.lmsQuizId)
                    .Select(() => q.Id)
                    .WithAlias(() => dto.quizId)
                    .Select(() => u.LastName)
                    .WithAlias(() => dto.lastName)
                    .Select(() => q.IsPostQuiz)
                    .WithAlias(() => dto.isPostQuiz)
                    .Select(() => q.PassingScore)
                    .WithAlias(() => dto.PassingScore)
                    .Select(() => u.FirstName)
                    .WithAlias(() => dto.firstName)
                    .Select(() => u.Id)
                    .WithAlias(() => dto.userId)
                    .Select(() => u2.LastName)
                    .WithAlias(() => dto.createdByLastName)
                    .Select(() => u2.FirstName)
                    .WithAlias(() => dto.createdByName)
                    .Select(() => smi.CreatedBy.Id)
                    .WithAlias(() => dto.createdBy)
                    .Select(() => smi.DateModified)
                    .WithAlias(() => dto.dateModified)
                    .Select(() => smi.Id)
                    .WithAlias(() => dto.subModuleItemId)
                    .Select(() => smc.CategoryName)
                    .WithAlias(() => dto.categoryName)
                    .Select(() => smc.Id)
                    .WithAlias(() => dto.subModuleCategoryId))
                .TransformUsing(Transformers.AliasToBean <QuizFromStoredProcedureExDTO>());
            List <QuizFromStoredProcedureExDTO> result =
                this.Repository.FindAll <QuizFromStoredProcedureExDTO>(queryOver).ToList();

            return(result);
        }
コード例 #7
0
        /// <summary>
        /// The get shared crosswords by user id.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{CrosswordDTO}"/>.
        /// </returns>
        public IEnumerable <CrosswordDTO> GetSharedCrosswordsByUserId(int userId)
        {
            QueryOver <User, User> subQuery =
                QueryOver.Of <User>().Where(x => x.Id == userId).Select(res => res.Company.Id);

            AppletItem        ai  = null;
            SubModuleItem     smi = null;
            SubModuleCategory smc = null;
            User         u        = null;
            User         u2       = null;
            CrosswordDTO dto      = null;
            QueryOver <AppletItem, User> queryOver =
                new DefaultQueryOver <AppletItem, int>().GetQueryOver(() => ai)
                .JoinQueryOver(x => x.SubModuleItem, () => smi, JoinType.InnerJoin)
                .Where(() => smi.IsActive == true && smi.IsShared == true)
                .JoinQueryOver(() => smi.SubModuleCategory, () => smc, JoinType.InnerJoin)
                .Where(() => smc.IsActive == true)
                .JoinQueryOver(() => smc.User, () => u, JoinType.InnerJoin)
                .JoinQueryOver(() => smi.CreatedBy, () => u2, JoinType.InnerJoin)
                .Where(() => u2.Id != userId && (int)u2.Status == 1)
                .WithSubquery.WhereProperty(() => u2.Company.Id)
                .In(subQuery)
                .SelectList(
                    res =>
                    res.Select(() => ai.AppletName)
                    .WithAlias(() => dto.appletName)
                    .Select(() => ai.Id)
                    .WithAlias(() => dto.appletItemId)
                    .Select(() => u.LastName)
                    .WithAlias(() => dto.lastName)
                    .Select(() => u.FirstName)
                    .WithAlias(() => dto.firstName)
                    .Select(() => u.Id)
                    .WithAlias(() => dto.userId)
                    .Select(() => u2.LastName)
                    .WithAlias(() => dto.createdByLastName)
                    .Select(() => u2.FirstName)
                    .WithAlias(() => dto.createdByName)
                    .Select(() => smi.CreatedBy.Id)
                    .WithAlias(() => dto.createdBy)
                    .Select(() => smi.DateModified)
                    .WithAlias(() => dto.dateModifiedData)
                    .Select(() => smi.Id)
                    .WithAlias(() => dto.subModuleItemId)
                    .Select(() => smc.CategoryName)
                    .WithAlias(() => dto.categoryName)
                    .Select(() => smc.Id)
                    .WithAlias(() => dto.subModuleCategoryId))
                .TransformUsing(Transformers.AliasToBean <CrosswordDTO>());
            List <CrosswordDTO> result = this.Repository.FindAll <CrosswordDTO>(queryOver).ToList();

            return(result);
        }
コード例 #8
0
        /// <summary>
        /// The get one by SMI id.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{SNProfile}"/>.
        /// </returns>
        public IEnumerable <SNProfileExtraDTO> GetAllSharedByUserId(int userId)
        {
            SNProfile         profile = null;
            SubModuleItem     smi     = null;
            SubModuleCategory smc     = null;
            User u  = null;
            User u2 = null;
            SNProfileExtraFromStoredProcedureDTO dto = null;
            const UserStatus ActiveStatus            = UserStatus.Active;
            var user      = this.userModel.GetOneById(userId).Value;
            var companyId = user.Company.Id;

            return
                (this.Repository.FindAll <SNProfileExtraFromStoredProcedureDTO>(
                     QueryOver.Of(() => profile)
                     .JoinAlias(x => x.SubModuleItem, () => smi)
                     .Where(() => smi.IsActive == true && smi.IsShared == true)
                     .JoinAlias(() => smi.SubModuleCategory, () => smc)
                     .Where(() => smc.IsActive == true)
                     .JoinAlias(() => smc.User, () => u)
                     .JoinAlias(() => smi.CreatedBy, () => u2)
                     .Where(() => u2.Id != userId && u2.Status == ActiveStatus && u2.Company.Id == companyId)
                     .SelectList(
                         list =>
                         list.Select(() => smc.Id)
                         .WithAlias(() => dto.subModuleCategoryId)
                         .Select(() => smc.CategoryName)
                         .WithAlias(() => dto.categoryName)
                         .Select(() => smi.Id)
                         .WithAlias(() => dto.subModuleItemId)
                         .Select(() => smi.DateModified)
                         .WithAlias(() => dto.dateModified)
                         .Select(() => u2.Id)
                         .WithAlias(() => dto.createdBy)
                         .Select(() => u2.FirstName)
                         .WithAlias(() => dto.createdByFirstName)
                         .Select(() => u2.LastName)
                         .WithAlias(() => dto.createdByLastName)
                         .Select(() => u.Id)
                         .WithAlias(() => dto.userId)
                         .Select(() => u.FirstName)
                         .WithAlias(() => dto.firstName)
                         .Select(() => u.LastName)
                         .WithAlias(() => dto.lastName)
                         .Select(() => profile.Id)
                         .WithAlias(() => dto.snProfileId)
                         .Select(() => profile.ProfileName)
                         .WithAlias(() => dto.profileName))
                     .TransformUsing(Transformers.AliasToBean <SNProfileExtraFromStoredProcedureDTO>()))
                 .ToList()
                 .Select(x => new SNProfileExtraDTO(x)));
        }
コード例 #9
0
        /// <summary>
        /// The get quiz categories by user id.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{QuizCategoriesFromStoredProcedureDTO}"/>.
        /// </returns>
        public IEnumerable <SMICategoriesFromStoredProcedureDTO> GetQuizCategoriesbyUserId(int userId)
        {
            SubModuleItem     smi = null;
            SubModuleCategory smc = null;
            Quiz q = null;
            SMICategoriesFromStoredProcedureExDTO dto       = null;
            QueryOver <Quiz, SubModuleCategory>   queryOver =
                new DefaultQueryOver <Quiz, int>().GetQueryOver(() => q)
                .JoinQueryOver(x => x.SubModuleItem, () => smi, JoinType.RightOuterJoin)
                .JoinQueryOver(() => smi.SubModuleCategory, () => smc, JoinType.InnerJoin)
                .Where(() => smc.User.Id == userId && smi.CreatedBy.Id == userId && q.Id != 0)
                .SelectList(
                    res =>
                    res.Select(
                        Projections.Distinct(
                            Projections.ProjectionList()
                            .Add(Projections.Property(() => smc.IsActive))
                            .Add(Projections.Property(() => smc.DateModified))
                            .Add(Projections.Property(() => smc.ModifiedBy.Id))
                            .Add(Projections.Property(() => smc.CategoryName))
                            .Add(Projections.Property(() => smc.SubModule.Id))
                            .Add(Projections.Property(() => smc.User.Id))
                            .Add(Projections.Property(() => smc.Id))))
                    .Select(() => smc.IsActive)
                    .WithAlias(() => dto.isActive)
                    .Select(() => smc.DateModified)
                    .WithAlias(() => dto.dateModified)
                    .Select(() => smc.ModifiedBy.Id)
                    .WithAlias(() => dto.modifiedBy)
                    .Select(() => smc.CategoryName)
                    .WithAlias(() => dto.categoryName)
                    .Select(() => smc.SubModule.Id)
                    .WithAlias(() => dto.subModuleId)
                    .Select(() => smc.User.Id)
                    .WithAlias(() => dto.userId)
                    .Select(() => smc.Id)
                    .WithAlias(() => dto.subModuleCategoryId))
                .TransformUsing(Transformers.AliasToBean <SMICategoriesFromStoredProcedureExDTO>());
            var result =
                this.Repository.FindAll <SMICategoriesFromStoredProcedureExDTO>(queryOver)
                .ToList()
                .Select(x => new SMICategoriesFromStoredProcedureDTO(x))
                .ToList();

            return(result);
        }
コード例 #10
0
        public bool UpdateSubModuleItem(SubModuleItem subModuleItem)
        {
            bool isSuccess = true;

            try
            {
                subModuleItemRepository.Update(subModuleItem);
                this.SaveRecord();
                ServiceUtil <SubModuleItem> .WriteActionLog(subModuleItem.Id, ENUMOperation.UPDATE, subModuleItem);
            }
            catch (Exception ex)
            {
                isSuccess = false;
                logger.Error("Error in updating SubModuleItem", ex);
            }
            return(isSuccess);
        }
コード例 #11
0
        /// <summary>
        /// The get test categories by user id.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{SubModuleCategoryDTO}"/>.
        /// </returns>
        public IEnumerable <SubModuleCategoryDTO> GetTestCategoriesByUserId(int userId)
        {
            SubModuleItem     smi = null;
            SubModuleCategory smc = null;
            Test t = null;
            SubModuleCategoryFromStoredProcedureDTO dto = null;
            var qieryOver = new DefaultQueryOver <SubModuleCategory, int>().GetQueryOver(() => smc)
                            .JoinQueryOver(x => x.SubModuleItems, () => smi, JoinType.InnerJoin)
                            .JoinQueryOver(() => smi.Tests, () => t, JoinType.LeftOuterJoin)
                            .Where(() => smc.User.Id == userId && smi.CreatedBy.Id == userId && t.Id != 0)
                            .SelectList(res =>
                                        res.Select(Projections.Distinct(Projections.ProjectionList()
                                                                        .Add(Projections.Property(() => smc.IsActive))
                                                                        .Add(Projections.Property(() => smc.DateModified))
                                                                        .Add(Projections.Property(() => smc.ModifiedBy.Id))
                                                                        .Add(Projections.Property(() => smc.CategoryName))
                                                                        .Add(Projections.Property(() => smc.SubModule.Id))
                                                                        .Add(Projections.Property(() => smc.User.Id))
                                                                        .Add(Projections.Property(() => smc.Id))
                                                                        ))
                                        .Select(() => smc.IsActive)
                                        .WithAlias(() => dto.isActive)
                                        .Select(() => smc.DateModified)
                                        .WithAlias(() => dto.dateModified)
                                        .Select(() => smc.ModifiedBy.Id)
                                        .WithAlias(() => dto.modifiedBy)
                                        .Select(() => smc.CategoryName)
                                        .WithAlias(() => dto.categoryName)
                                        .Select(() => smc.SubModule.Id)
                                        .WithAlias(() => dto.subModuleId)
                                        .Select(() => smc.User.Id)
                                        .WithAlias(() => dto.userId)
                                        .Select(() => smc.Id)
                                        .WithAlias(() => dto.subModuleCategoryId)
                                        )
                            .TransformUsing(Transformers.AliasToBean <SubModuleCategoryFromStoredProcedureDTO>());
            var result =
                Repository.FindAll <SubModuleCategoryFromStoredProcedureDTO>(qieryOver)
                .ToList()
                .Select(x => new SubModuleCategoryDTO(x));

            return(result);
        }
コード例 #12
0
        /// <summary>
        /// The get splash screen reports paged.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <param name="pageIndex">
        /// The page index.
        /// </param>
        /// <param name="pageSize">
        /// The page size.
        /// </param>
        /// <param name="totalCount">
        /// The total count.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{ReportDTO}"/>.
        /// </returns>
        // ReSharper disable ImplicitlyCapturedClosure
        public IEnumerable <ReportDTO> GetSplashScreenReportsPaged(int userId, int pageIndex, int pageSize, out int totalCount)
        {
            ReportFromStoredProcedureDTO dto = null;
            SubModuleItem     smi            = null;
            SubModuleCategory smc            = null;
            var queryOver = new DefaultQueryOver <ACSession, int>().GetQueryOver()
                            .Where(x => x.User.Id == userId).And(x => x.Status == ACSessionStatusEnum.Played)
                            .OrderBy(x => x.DateCreated).Desc
                            .JoinAlias(x => x.SubModuleItem, () => smi)
                            .JoinAlias(() => smi.SubModuleCategory, () => smc)
                            .SelectList(list =>
                                        list.Select(x => x.DateCreated)
                                        .WithAlias(() => dto.dateCreated)
                                        .Select(x => x.Id)
                                        .WithAlias(() => dto.acSessionId)
                                        .Select(x => smi.Id)
                                        .WithAlias(() => dto.subModuleItemId)
                                        .Select(x => smc.SubModule.Id)
                                        .WithAlias(() => dto.type))
                            .TransformUsing(Transformers.AliasToBean <ReportFromStoredProcedureDTO>());

            var rowCountQuery = queryOver.ToRowCountQuery();

            totalCount = this.Repository.FindOne <int>(rowCountQuery).Value;
            var pagedQuery = queryOver.Take(pageSize).Skip((pageIndex - 1) * pageSize);
            var reports    =
                this.Repository.FindAll <ReportFromStoredProcedureDTO>(pagedQuery)
                .ToList()
                .Select(x => new ReportDTO(x))
                .ToList();
            List <int> reportsIds = reports.Select(x => x.subModuleItemId).ToList();

            Dictionary <int, RecentReportDTO> crosswords     = this.appletItemModel.GetCrosswords(reportsIds);
            Dictionary <int, RecentReportDTO> quizes         = this.quizModel.GetQuizes(reportsIds);
            Dictionary <int, RecentReportDTO> surveys        = this.surveyModel.GetSurveys(reportsIds);
            Dictionary <int, RecentReportDTO> tests          = this.testModel.GetTests(reportsIds);
            Dictionary <int, RecentReportDTO> socialProfiles = this.socialProfileModel.GetSNProfiles(reportsIds);

            return(this.MergeData(reports, new List <Dictionary <int, RecentReportDTO> > {
                crosswords, quizes, surveys, socialProfiles, tests
            }));
        }
コード例 #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SubModuleItemDTO"/> class.
        /// </summary>
        /// <param name="result">
        /// The result.
        /// </param>
        public SubModuleItemDTO(SubModuleItem result)
        {
            this.subModuleItemId     = result.Id;
            this.subModuleId         = result.SubModuleCategory.With(x => x.SubModule).With(x => x.Id);
            this.subModuleCategoryId = result.SubModuleCategory.With(x => x.Id);
            this.createdBy           = result.CreatedBy.Return(x => x.Id, (int?)null);
            this.modifiedBy          = result.ModifiedBy.Return(x => x.Id, (int?)null);
            this.themeId             = null;
            this.isActive            = result.IsActive;
            this.isShared            = result.IsShared;
            this.dateCreated         = result.DateCreated.ConvertToUnixTimestamp();
            this.dateModified        = result.DateModified.ConvertToUnixTimestamp();
            var theme = result.Themes.FirstOrDefault();

            if (theme != null)
            {
                this.themeId = theme.Id;
                this.themeVO = new SubModuleItemThemeDTO(theme);
            }
        }
コード例 #14
0
        /// <summary>
        /// Export questions by sub module item Id.
        /// </summary>
        /// <param name="smiId">
        /// SubModule item id.
        /// </param>
        /// <param name="questionIds">
        /// Question Ids.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        protected string Export(int smiId, List <int> questionIds)
        {
            Error error;

            try
            {
                SubModuleItem smi  = this.SubModuleItemModel.GetOneById(smiId).Value;
                string        data = this.ExportToString(smi, questionIds);
                if (string.IsNullOrEmpty(data))
                {
                    throw new ArgumentException();
                }

                string id       = Guid.NewGuid().ToString();
                string fileName = id + ".xml";
                string filePath = Path.Combine(this.ExportPath, fileName);

                System.IO.File.WriteAllText(filePath, data);

                return(id);
            }
            catch (ArgumentException)
            {
                error = new Error(
                    Errors.CODE_ERRORTYPE_REQUEST_NOT_PROCESSED,
                    ErrorsTexts.ExportError_Subject,
                    ErrorsTexts.ExportError_NoData);
            }
            catch (Exception ex)
            {
                error = new Error(
                    Errors.CODE_ERRORTYPE_REQUEST_NOT_PROCESSED,
                    ErrorsTexts.ExportError_Subject,
                    ex.ToString());
            }

            this.LogError("ExportService.Export", error);
            throw new FaultException <Error>(error, error.errorMessage);
        }
コード例 #15
0
        public IEnumerable <AppletItem> GetByUser(int userId)
        {
            if (userId <= 0)
            {
                throw new ArgumentOutOfRangeException("userId");
            }

            AppletItem        ai  = null;
            SubModuleItem     smi = null;
            SubModuleCategory smc = null;
            User u2        = null;
            var  queryOver =
                new DefaultQueryOver <AppletItem, int>().GetQueryOver(() => ai)
                .JoinQueryOver(x => x.SubModuleItem, () => smi, JoinType.InnerJoin)
                .Where(() => smi.IsActive == true)
                .JoinQueryOver(() => smi.SubModuleCategory, () => smc, JoinType.InnerJoin)
                .Where(() => smc.IsActive == true)
                .JoinQueryOver(() => smi.CreatedBy, () => u2, JoinType.LeftOuterJoin)
                .Where(() => u2.Id == userId);

            return(this.Repository.FindAll(queryOver).ToList());
        }
コード例 #16
0
        /// <summary>
        /// Export questions to string.
        /// </summary>
        /// <param name="smi">
        /// The sub module item.
        /// </param>
        /// <param name="questionIds">
        /// Question Ids.
        /// </param>
        /// <returns>
        /// Serialized string.
        /// </returns>
        private string ExportToString(SubModuleItem smi, List <int> questionIds = null)
        {
            string             result          = string.Empty;
            List <Question>    questionsSource = this.QuestionModel.GetByQuestionIdsAndSmiID(smi.Id, questionIds).ToList();
            List <QuestionFor> customQuestions =
                this.QuestionModel.GetCustomQuestionsByQuestionIdsWithTypes(
                    questionsSource.Select(x => new KeyValuePair <int, int>(x.Id, x.QuestionType.Id))).ToList();

            List <Distractor> distractors =
                this.DistractorModel.GetAllByQuestionsIds(questionsSource.Select(x => x.Id).ToList()).ToList();
            bool isInvalid;
            List <EdugameQuestion> edugameQuestions = this.GetEdugameQuestions(
                questionsSource,
                customQuestions,
                distractors,
                out isInvalid);

            if (!isInvalid)
            {
                if (edugameQuestions.Any())
                {
                    try
                    {
                        var list = new EdugameQuestions(smi.SubModuleCategory.SubModule.Id, edugameQuestions);
                        result = list.Serialize();
                    }

                    // ReSharper disable once EmptyGeneralCatchClause
                    catch
                    {
                        // It will be handled later.
                    }
                }
            }

            return(result);
        }
コード例 #17
0
 public TestWithSmiDTO(Test result, SubModuleItem smi = null)
     : base(result)
 {
     this.SmiVO = new SubModuleItemDTO(smi.Return(x => x, result.SubModuleItem));
 }
コード例 #18
0
        public IEnumerable <DistractorFromStoredProcedureDTO> GetDistractorsBySMIId(int smiId)
        {
            Distractor    d      = null;
            Question      q      = null;
            SubModuleItem smi    = null;
            File          f      = null;
            File          leftf  = null;
            File          rightf = null;
            DistractorFromStoredProcedureDTO dto = null;
            var qieryOver = new DefaultQueryOver <Distractor, int>().GetQueryOver(() => d)
                            .JoinQueryOver(x => x.Question, () => q, JoinType.InnerJoin)
                            .JoinQueryOver(() => q.SubModuleItem, () => smi, JoinType.InnerJoin)
                            .JoinQueryOver(() => d.Image, () => f, JoinType.LeftOuterJoin)
                            .JoinQueryOver(() => d.LeftImage, () => leftf, JoinType.LeftOuterJoin)
                            .JoinQueryOver(() => d.RightImage, () => rightf, JoinType.LeftOuterJoin)
                            .Where(() => q.SubModuleItem.Id == smiId && q.IsActive == true && d.IsActive == true)
                            .SelectList(res =>
                                        res.Select(Projections.Distinct(Projections.ProjectionList()
                                                                        .Add(Projections.Property(() => d.Id))
                                                                        .Add(Projections.Property(() => d.Question.Id))
                                                                        .Add(Projections.Property(() => d.DistractorType))
                                                                        .Add(Projections.Property(() => d.DistractorName))
                                                                        .Add(Projections.Property(() => d.DistractorOrder))
                                                                        .Add(Projections.Property(() => d.IsCorrect))
                                                                        .Add(Projections.Property(() => d.Image.Id))
                                                                        .Add(Projections.Property(() => d.LeftImage.Id))
                                                                        .Add(Projections.Property(() => d.RightImage.Id))
                                                                        .Add(Projections.Property(() => f.X))
                                                                        .Add(Projections.Property(() => f.Y))
                                                                        .Add(Projections.Property(() => f.Height))
                                                                        .Add(Projections.Property(() => f.Width))
                                                                        .Add(Projections.Property(() => q.Rows))
                                                                        ))
                                        .Select(() => d.Id)
                                        .WithAlias(() => dto.distractorId)
                                        .Select(() => d.Question.Id)
                                        .WithAlias(() => dto.questionId)
                                        .Select(() => d.DistractorType)
                                        .WithAlias(() => dto.distractorType)
                                        .Select(() => d.DistractorName)
                                        .WithAlias(() => dto.distractor)
                                        .Select(() => d.DistractorOrder)
                                        .WithAlias(() => dto.distractorOrder)
                                        .Select(() => d.IsCorrect)
                                        .WithAlias(() => dto.isCorrect)
                                        .Select(() => d.Image.Id)
                                        .WithAlias(() => dto.imageId)
                                        .Select(() => d.LeftImage.Id)
                                        .WithAlias(() => dto.leftImageId)
                                        .Select(() => d.RightImage.Id)
                                        .WithAlias(() => dto.rightImageId)
                                        .Select(() => f.X)
                                        .WithAlias(() => dto.x)
                                        .Select(() => f.Y)
                                        .WithAlias(() => dto.y)
                                        .Select(() => f.Height)
                                        .WithAlias(() => dto.height)
                                        .Select(() => f.Width)
                                        .WithAlias(() => dto.width)
                                        .Select(() => q.Rows)
                                        .WithAlias(() => dto.rows)
                                        ).TransformUsing(Transformers.AliasToBean <DistractorFromStoredProcedureDTO>());
            var result = Repository.FindAll <DistractorFromStoredProcedureDTO>(qieryOver).ToList();

            return(result);
        }
コード例 #19
0
        /// <summary>
        /// Get questions from imported file.
        /// </summary>
        /// <param name="fileId">
        /// Imported file id.
        /// </param>
        /// <param name="smiId">
        /// Sub module item id.
        /// </param>
        /// <param name="userId">
        /// The user Id.
        /// </param>
        /// <param name="format">
        /// Questions format.
        /// </param>
        /// <returns>
        /// The <see cref="ServiceResponse"/>.
        /// </returns>
        protected QuestionDTO[] Import(string fileId, int?smiId, int?userId, FormatsEnum format)
        {
            var   questionDtos = new List <QuestionDTO>();
            Error error        = null;

            try
            {
                SubModuleItem subModuleItem = smiId.HasValue
                                                  ? this.SubModuleItemModel.GetOneById(smiId.Value).Value
                                                  : null;
                User   creator    = userId.HasValue ? this.UserModel.GetOneById(userId.Value).Value : null;
                string fileName   = fileId + ".xml";
                string filePath   = Path.Combine(this.ImportPath, fileName);
                string schemaPath = Path.Combine(this.SchemasPath, format + ".xsd");

                if (subModuleItem == null && creator == null)
                {
                    throw new ArgumentException();
                }

                EdugameQuestions questions = this.DeserializeEdugameQuestions(format, filePath, schemaPath);

                QuestionModel   questionModel   = this.QuestionModel;
                DistractorModel distractorModel = this.DistractorModel;

                Func <string, string, File> saveImage = this.GetSaveImageRutine(subModuleItem, creator);

                List <QuestionType> questionTypes = this.QuestionTypeModel.GetAllActive().ToList();

                foreach (EdugameQuestion question in questions.Questions)
                {
                    Question convertedQuestion = EdugameConverter.Convert(question, questionTypes);
                    convertedQuestion.SubModuleItem = subModuleItem;
                    if (convertedQuestion.CreatedBy == null)
                    {
                        convertedQuestion.CreatedBy = subModuleItem.Return(x => x.CreatedBy, creator);
                    }

                    if (convertedQuestion.ModifiedBy == null)
                    {
                        convertedQuestion.ModifiedBy = convertedQuestion.CreatedBy;
                    }

                    File questionImage = saveImage(question.ImageName, question.Image);
                    if (questionImage != null)
                    {
                        convertedQuestion.Image = questionImage;
                    }
                    convertedQuestion.RandomizeAnswers =
                        convertedQuestion.QuestionType.Id == (int)QuestionTypeEnum.Sequence
                            ? (bool?)true
                            : null;

                    if (subModuleItem != null)
                    {
                        questionModel.RegisterSave(convertedQuestion);
                    }

                    QuestionFor customQuestion = this.ProcessCustomQuestionType(convertedQuestion, question);

                    ProcessDistractors(question, convertedQuestion, saveImage, subModuleItem, creator, distractorModel);

                    questionDtos.Add(new QuestionDTO(convertedQuestion, customQuestion));
                }

                System.IO.File.Delete(filePath);
            }
            catch (ArgumentException)
            {
                error = new Error(
                    Errors.CODE_ERRORTYPE_REQUEST_NOT_PROCESSED,
                    ErrorsTexts.ImportError_Subject,
                    ErrorsTexts.ImportError_NoData);
            }
            catch (SerializationException)
            {
                error = new Error(
                    Errors.CODE_ERRORTYPE_REQUEST_NOT_PROCESSED,
                    ErrorsTexts.ImportError_Subject,
                    ErrorsTexts.ImportError_InvalidFormat);
            }
            catch (FileNotFoundException)
            {
                error = new Error(
                    Errors.CODE_ERRORTYPE_REQUEST_NOT_PROCESSED,
                    ErrorsTexts.ImportError_Subject,
                    ErrorsTexts.ImportError_NotFound);
            }
            catch (Exception ex)
            {
                Logger.Error("Import", ex);
                error = new Error(
                    Errors.CODE_ERRORTYPE_REQUEST_NOT_PROCESSED,
                    ErrorsTexts.ImportError_Subject,
                    ErrorsTexts.ImportError_Unknown);
            }

            if (error != null)
            {
                this.LogError("Export.Import", error);
                throw new FaultException <Error>(error, error.errorMessage);
            }

            return(questionDtos.ToArray());
        }
コード例 #20
0
 private TestWithSmiDTO ConvertTestAndGetServiceResponse(TestDTO appletResultDTO, Test test, SubModuleItem smi, TestModel testModel)
 {
     test = ConvertDto(appletResultDTO, test);
     testModel.RegisterSave(test, true);
     return new TestWithSmiDTO(test, smi);
 }
コード例 #21
0
 public bool CheckIsExist(SubModuleItem subModuleItem)
 {
     return(subModuleItemRepository.Get(chk => chk.Name == subModuleItem.Name && chk.SubModuleId == subModuleItem.Id) == null ? false : true);
 }
コード例 #22
0
        public JsonResult CreateSubModuleItem(SubModuleItem subModuleItem)
        {
            const string url = "/SubModuleItem/Index";

            permission = (RoleSubModuleItem)cacheProvider.Get(cacheKey);
            if (permission == null)
            {
                permission = roleSubModuleItemService.GetRoleSubModuleItemBySubModuleIdandRole(url, Helpers.UserSession.GetUserFromSession().RoleId);
            }

            var isSuccess = false;
            var message   = string.Empty;
            var isNew     = subModuleItem.Id == 0 ? true : false;

            if (isNew)
            {
                if (permission.CreateOperation == true)
                {
                    if (!CheckIsExist(subModuleItem))
                    {
                        if (this.subModuleItemService.CreateSubModuleItem(subModuleItem))
                        {
                            var moduleIdList = this.moduleService.GetAllModuleByRoleId(Helpers.UserSession.GetUserFromSession().RoleId).Select(a => a.Id).Distinct().ToList();
                            foreach (var moduleId in moduleIdList)
                            {
                                cacheProvider.Invalidate("submodule" + moduleId.ToString() + Helpers.UserSession.GetUserFromSession().RoleId);
                            }

                            isSuccess = true;
                            message   = "Sub module item saved successfully!";
                        }
                        else
                        {
                            message = "Sub module item could not be saved!";
                        }
                    }
                    else
                    {
                        isSuccess = false;
                        message   = "Can't save. Same Sub module item name found!";
                    }
                }
                else
                {
                    message = "You don't have permission to create";
                }
            }
            else
            {
                if (permission.UpdateOperation == true)
                {
                    if (this.subModuleItemService.UpdateSubModuleItem(subModuleItem))
                    {
                        isSuccess = true;
                        message   = "SubModuleItem updated successfully!";
                        var moduleIdList = this.moduleService.GetAllModuleByRoleId(Helpers.UserSession.GetUserFromSession().RoleId).Select(a => a.Id).Distinct().ToList();
                        foreach (var moduleId in moduleIdList)
                        {
                            cacheProvider.Invalidate("submodule" + moduleId.ToString() + Helpers.UserSession.GetUserFromSession().RoleId);
                        }
                    }
                    else
                    {
                        message = "Sub module item could not be updated!";
                    }
                }
                else
                {
                    message = "You don't have permission to update";
                }
            }
            return(Json(new
            {
                isSuccess = isSuccess,
                message = message,
            }, JsonRequestBehavior.AllowGet));
        }
コード例 #23
0
        /// <summary>
        /// The get quiz result by adobe connect session id.
        /// </summary>
        /// <param name="adobeConnectSessionId">
        /// The adobe connect session id.
        /// </param>
        /// <param name="smiId">
        /// The sub module item id.
        /// </param>
        /// <returns>
        /// The <see cref="QuizResultDataDTO"/>.
        /// </returns>
        public TestResultDataDTO GetTestResultByACSessionId(int adobeConnectSessionId, int smiId)
        {
            var                 test      = this.testRepository.FindOne(new DefaultQueryOver <Test, int>().GetQueryOver().Where(x => x.SubModuleItem.Id == smiId).Take(1)).Value;
            var                 res       = new TestResultDataDTO();
            Question            q         = null;
            SubModuleItem       smi       = null;
            QuestionType        qt        = null;
            QuestionForAdminDTO dto       = null;
            var                 queryOver = new DefaultQueryOver <Question, int>().GetQueryOver(() => q)
                                            .JoinQueryOver(x => x.SubModuleItem, () => smi, JoinType.InnerJoin)
                                            .JoinQueryOver(() => q.QuestionType, () => qt, JoinType.InnerJoin)
                                            .Where(() => q.SubModuleItem.Id == smiId && q.IsActive == true)
                                            .SelectList(result =>
                                                        result.Select(() => q.Id)
                                                        .WithAlias(() => dto.questionId)
                                                        .Select(() => q.QuestionName)
                                                        .WithAlias(() => dto.question)
                                                        .Select(() => q.QuestionType.Id)
                                                        .WithAlias(() => dto.questionTypeId)
                                                        .Select(() => qt.Type)
                                                        .WithAlias(() => dto.questionTypeName)
                                                        ).TransformUsing(Transformers.AliasToBean <QuestionForAdminDTO>());
            var questionqs = questionRepository.FindAll <QuestionForAdminDTO>(queryOver).ToList();

            TestResult         tr  = null;
            TestQuestionResult tqr = null;

            q = null;
            var queryOver1 = new DefaultQueryOver <TestResult, int>().GetQueryOver(() => tr)
                             .JoinQueryOver(x => x.Results, () => tqr, JoinType.LeftOuterJoin)
                             .JoinQueryOver(() => tqr.QuestionRef, () => q, JoinType.LeftOuterJoin)
                             .Where(() => tr.ACSessionId == adobeConnectSessionId)
                             .SelectList(res1 =>
                                         res1.SelectGroup(() => q.Id)
                                         .WithAlias(() => dto.questionId)
                                         .Select(Projections.Sum(Projections.Cast(NHibernateUtil.Int32, Projections.Property(() => tqr.IsCorrect))))
                                         .WithAlias(() => dto.correctAnswerCount))
                             .TransformUsing(Transformers.AliasToBean <QuestionForAdminDTO>());
            var questionqsWithCorrectAnswerCount = Repository.FindAll <QuestionForAdminDTO>(queryOver1).ToList();

            questionqs.ForEach(x => x.correctAnswerCount = (questionqsWithCorrectAnswerCount.Any(t => t.questionId == x.questionId)? questionqsWithCorrectAnswerCount.First(t => t.questionId == x.questionId).correctAnswerCount: 0));
            res.questions = questionqs.ToArray();
            res.players   =
                this.Repository.StoreProcedureForMany <TestPlayerFromStoredProcedureDTO>(
                    "getTestResultByACSessionId",
                    new StoreProcedureParam <int>("acSessionId", adobeConnectSessionId),
                    new StoreProcedureParam <int>("subModuleItemId", smiId))
                .ToList()
                .Select(x => new TestPlayerDTO(x))
                .ToArray();

            if (res.players != null && res.players.Any())
            {
                foreach (var player in res.players)
                {
                    long duration     = (player.endTime.ConvertFromUnixTimeStamp() - player.startTime.ConvertFromUnixTimeStamp()).Ticks;
                    var  passingScore = test.PassingScore.HasValue ? (res.questions.Length * (test.PassingScore.Value / 100)) : 0;
                    bool scorePassed  = !test.PassingScore.HasValue ? player.score > 0 : test.PassingScore == 0 || passingScore <= player.score;
                    bool timePassed   = !test.TimeLimit.HasValue || test.TimeLimit == 0 || test.TimeLimit > TimeSpan.FromTicks(duration).TotalMinutes;
                    player.passingScore = passingScore;
                    player.timeLimit    = test.TimeLimit;
                    player.scorePassed  = scorePassed;
                    player.timePassed   = timePassed;
                }
            }

            var questionIds = res.questions.Select(question => question.questionId).ToList();

            var distractorsQuery = new DefaultQueryOver <Distractor, int>().GetQueryOver().WhereRestrictionOn(x => x.Question.Id).IsIn(questionIds);

            var distractors = this.distractorRepository.FindAll(distractorsQuery).ToList();

            foreach (var questionForAdminDTO in res.questions)
            {
                questionForAdminDTO.distractors = distractors.Where(x => x.Question.Id == questionForAdminDTO.questionId).Select(x => new DistractorDTO(x)).ToArray();
            }

            return(res);
        }
コード例 #24
0
        /// <summary>
        /// The get shared for user quizzes by user id.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{QuizFromStoredProcedureDTO}"/>.
        /// </returns>
        public IEnumerable <QuizFromStoredProcedureExDTO> GetSharedForUserQuizzesByUserId(int userId)
        {
            QueryOver <User, User> query =
                new DefaultQueryOver <User, int>().GetQueryOver()
                .Where(x => x.Id == userId)
                .Select(res => res.Company.Id);
            IFutureValue <int> id = this.userRepository.FindOne <int>(query);

            Quiz                         q         = null;
            SubModuleItem                smi       = null;
            SubModuleCategory            smc       = null;
            User                         u         = null;
            User                         u2        = null;
            QuizFromStoredProcedureExDTO dto       = null;
            QueryOver <Quiz, User>       queryOver =
                new DefaultQueryOver <Quiz, int>().GetQueryOver(() => q)
                .JoinQueryOver(x => x.SubModuleItem, () => smi, JoinType.InnerJoin)
                .Where(() => smi.IsActive == true && smi.IsShared == true && q.LmsQuizId == null)
                .JoinQueryOver(() => smi.SubModuleCategory, () => smc, JoinType.InnerJoin)
                .Where(() => smc.IsActive == true)
                .JoinQueryOver(() => smc.User, () => u, JoinType.InnerJoin)
                .JoinQueryOver(() => smi.CreatedBy, () => u2, JoinType.InnerJoin)
                .Where(() => u2.Id != userId && u2.Company.Id == id.Value && (int)u2.Status == 1)
                .SelectList(
                    res =>
                    res.Select(() => q.Description)
                    .WithAlias(() => dto.description)
                    .Select(() => q.QuizName)
                    .WithAlias(() => dto.quizName)
                    .Select(() => q.Id)
                    .WithAlias(() => dto.quizId)
                    .Select(() => u.LastName)
                    .WithAlias(() => dto.lastName)
                    .Select(() => u.FirstName)
                    .WithAlias(() => dto.firstName)
                    .Select(() => q.IsPostQuiz)
                    .WithAlias(() => dto.isPostQuiz)
                    .Select(() => q.PassingScore)
                    .WithAlias(() => dto.PassingScore)
                    .Select(() => u.Id)
                    .WithAlias(() => dto.userId)
                    .Select(() => u2.LastName)
                    .WithAlias(() => dto.createdByLastName)
                    .Select(() => u2.FirstName)
                    .WithAlias(() => dto.createdByName)
                    .Select(() => smi.CreatedBy.Id)
                    .WithAlias(() => dto.createdBy)
                    .Select(() => smi.DateModified)
                    .WithAlias(() => dto.dateModified)
                    .Select(() => smi.Id)
                    .WithAlias(() => dto.subModuleItemId)
                    .Select(() => smc.CategoryName)
                    .WithAlias(() => dto.categoryName)
                    .Select(() => smc.Id)
                    .WithAlias(() => dto.subModuleCategoryId))
                .TransformUsing(Transformers.AliasToBean <QuizFromStoredProcedureExDTO>());
            List <QuizFromStoredProcedureExDTO> result =
                this.Repository.FindAll <QuizFromStoredProcedureExDTO>(queryOver).ToList();

            return(result);
        }
コード例 #25
0
        /// <summary>
        /// The get quizzes by user id.
        /// </summary>
        /// <param name="userId">
        /// The user id.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{QuizFromStoredProcedureDTO}"/>.
        /// </returns>
        public IEnumerable <TestFromStoredProcedureDTO> GetTestsByUserId(int userId)
        {
            TestFromStoredProcedureExDTO dto = null;
            Test              t   = null;
            SubModuleItem     smi = null;
            SubModuleCategory smc = null;
            User              u   = null;
            User              u2  = null;

            var queryOver = new DefaultQueryOver <Test, int>().GetQueryOver(() => t)
                            .JoinQueryOver(x => x.SubModuleItem, () => smi, JoinType.InnerJoin).Where(() => smi.IsActive == true)
                            .JoinQueryOver(() => smi.SubModuleCategory, () => smc, JoinType.InnerJoin).Where(() => smc.IsActive == true)
                            .JoinQueryOver(() => smc.User, () => u, JoinType.InnerJoin)
                            .JoinQueryOver(() => smi.CreatedBy, () => u2, JoinType.LeftOuterJoin)
                            .Where(() => u2.Id == userId)
                            .SelectList(res =>
                                        res.Select(() => t.ScoreFormat)
                                        .WithAlias(() => dto.scoreFormat)
                                        .Select(() => t.InstructionDescription)
                                        .WithAlias(() => dto.instructionDescription)
                                        .Select(() => t.InstructionTitle)
                                        .WithAlias(() => dto.instructionTitle)
                                        .Select(() => t.TimeLimit)
                                        .WithAlias(() => dto.timeLimit)
                                        .Select(() => t.PassingScore)
                                        .WithAlias(() => dto.passingScore)
                                        .Select(() => t.Description)
                                        .WithAlias(() => dto.description)
                                        .Select(() => t.TestName)
                                        .WithAlias(() => dto.testName)
                                        .Select(() => t.Id)
                                        .WithAlias(() => dto.testId)
                                        .Select(() => u.LastName)
                                        .WithAlias(() => dto.lastName)
                                        .Select(() => u.FirstName)
                                        .WithAlias(() => dto.firstName)
                                        .Select(() => u.Id)
                                        .WithAlias(() => dto.userId)
                                        .Select(() => u2.LastName)
                                        .WithAlias(() => dto.createdByLastName)
                                        .Select(() => u2.FirstName)
                                        .WithAlias(() => dto.createdByName)
                                        .Select(() => smi.CreatedBy.Id)
                                        .WithAlias(() => dto.createdBy)
                                        .Select(() => smi.DateModified)
                                        .WithAlias(() => dto.dateModified)
                                        .Select(() => smi.Id)
                                        .WithAlias(() => dto.subModuleItemId)
                                        .Select(() => smc.CategoryName)
                                        .WithAlias(() => dto.categoryName)
                                        .Select(() => smc.Id)
                                        .WithAlias(() => dto.subModuleCategoryId)
                                        )
                            .TransformUsing(Transformers.AliasToBean <TestFromStoredProcedureExDTO>());

            var result =
                this.Repository.FindAll <TestFromStoredProcedureExDTO>(queryOver)
                .ToList()
                .Select(x => new TestFromStoredProcedureDTO(x));

            return(result);
        }