/// <summary> /// The get applet sub module items by user id. /// </summary> /// <param name="userId"> /// The user id. /// </param> /// <returns> /// The <see cref="IEnumerable{SubModuleItem}"/>. /// </returns> public IEnumerable <SubModuleItemDTO> GetQuizSMItemsByUserId(int userId) { QueryOver <User, User> query = new DefaultQueryOver <User, int>().GetQueryOver() .Where(x => x.Id == userId) .Select(res => res.Company.Id); IFutureValue <int> companyId = this.userRepository.FindOne <int>(query); SubModuleItemFromStoredProcedureDTO dto = null; SubModuleItem smi = null; SubModuleCategory smc = null; Quiz quiz = null; SubModuleItemTheme theme = null; User u = null; var queryOver = new DefaultQueryOver <SubModuleItem, int>().GetQueryOver(() => smi) .JoinQueryOver(x => x.SubModuleCategory, () => smc) .JoinQueryOver(() => smi.Quizes, () => quiz) .JoinQueryOver(() => smi.Themes, () => theme, JoinType.LeftOuterJoin) .JoinQueryOver(() => smc.User, () => u, JoinType.InnerJoin) .Where(() => smi.CreatedBy != null && smc.User != null && ((smi.CreatedBy.Id == userId && smc.User.Id == userId) || (u.Company.Id == companyId.Value && quiz.LmsQuizId != null))) .SelectList(res => res.Select(() => smi.CreatedBy.Id) .WithAlias(() => dto.createdBy) .Select(() => smi.Id) .WithAlias(() => dto.subModuleItemId) .Select(() => smc.SubModule.Id) .WithAlias(() => dto.subModuleId) .Select(() => smi.SubModuleCategory.Id) .WithAlias(() => dto.subModuleCategoryId) .Select(() => smi.IsShared) .WithAlias(() => dto.isShared) .Select(() => smi.ModifiedBy.Id) .WithAlias(() => dto.modifiedBy) .Select(() => smi.DateCreated) .WithAlias(() => dto.dateCreated) .Select(() => smi.DateModified) .WithAlias(() => dto.dateModified) .Select(() => smi.IsActive) .WithAlias(() => dto.isActive) .Select(() => theme.Id) .WithAlias(() => dto.themeId)) .TransformUsing(Transformers.AliasToBean <SubModuleItemFromStoredProcedureDTO>()); var result = this.Repository.FindAll <SubModuleItemFromStoredProcedureDTO>(queryOver) .ToList() .Select(x => new SubModuleItemDTO(x)) .ToList(); var themeIds = result.Where(x => x.themeId.HasValue).Select(x => x.themeId.Value).ToList(); var themeQuery = new DefaultQueryOver <SubModuleItemTheme, int>().GetQueryOver().WhereRestrictionOn(x => x.Id).IsIn(themeIds); var themes = this.themeRepository.FindAll(themeQuery).ToList(); result.ForEach(x => x.themeVO = x.themeId.HasValue ? themes.FirstOrDefault(t => t.Id == x.themeId).Return(tt => new SubModuleItemThemeDTO(tt), null) : null); return(result); }
/// <summary> /// The get quiz sub module items by user id. /// </summary> /// <param name="userId"> /// The user id. /// </param> /// <returns> /// The <see cref="IEnumerable{SubModuleItemDTO}"/>. /// </returns> public IEnumerable <SubModuleItemDTO> GetQuizSubModuleItemsByUserId(int userId) { SubModuleItem smi = null; SubModuleCategory smc = null; Quiz q = null; SubModuleItemFromStoredProcedureDTO dto = null; var queryOver = new DefaultQueryOver <SubModuleItem, int>().GetQueryOver(() => smi) .JoinQueryOver(x => x.SubModuleCategory, () => smc, JoinType.InnerJoin) .JoinQueryOver(() => smi.Quizes, () => q, JoinType.LeftOuterJoin) .Where(() => smi.CreatedBy.Id == userId && smc.User.Id == userId && q.Id != 0) .SelectList(res => res.Select(() => smi.IsActive) .WithAlias(() => dto.isActive) .Select(() => smi.DateModified) .WithAlias(() => dto.dateModified) .Select(() => smi.DateCreated) .WithAlias(() => dto.dateCreated) .Select(() => smi.ModifiedBy.Id) .WithAlias(() => dto.modifiedBy) .Select(() => smi.IsShared) .WithAlias(() => dto.isShared) .Select(() => smi.CreatedBy.Id) .WithAlias(() => dto.createdBy) .Select(() => smi.SubModuleCategory.Id) .WithAlias(() => dto.subModuleCategoryId) .Select(() => smc.SubModule.Id) .WithAlias(() => dto.subModuleId) .Select(() => smi.Id) .WithAlias(() => dto.subModuleItemId)) .TransformUsing(Transformers.AliasToBean <SubModuleItemFromStoredProcedureDTO>()); var result = Repository.FindAll <SubModuleItemFromStoredProcedureDTO>(queryOver).ToList() .Select(x => new SubModuleItemDTO(x)) .ToList(); return(result); }