/// <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)); }
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)); }
/// <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); }
/// <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); }
/// <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); } }
/// <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); }
/// <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); }
/// <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))); }
/// <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); }
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); }
/// <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); }
/// <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 })); }
/// <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); } }
/// <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); }
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()); }
/// <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); }
public TestWithSmiDTO(Test result, SubModuleItem smi = null) : base(result) { this.SmiVO = new SubModuleItemDTO(smi.Return(x => x, result.SubModuleItem)); }
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); }
/// <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()); }
private TestWithSmiDTO ConvertTestAndGetServiceResponse(TestDTO appletResultDTO, Test test, SubModuleItem smi, TestModel testModel) { test = ConvertDto(appletResultDTO, test); testModel.RegisterSave(test, true); return new TestWithSmiDTO(test, smi); }
public bool CheckIsExist(SubModuleItem subModuleItem) { return(subModuleItemRepository.Get(chk => chk.Name == subModuleItem.Name && chk.SubModuleId == subModuleItem.Id) == null ? false : true); }
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)); }
/// <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); }
/// <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); }
/// <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); }