public bool AddSubtopicContent(SubtopicContent dataToAdd, out int id) { dataToAdd.IsActive = true; dataToAdd.CreatedOn = DateTime.Now; dataToAdd.Description = dataToAdd.Description ?? String.Empty; return(LearningPathDataAccessor.AddSubtopicContent(dataToAdd, out id)); }
/// <summary> /// Update the Current User's and course Mapping /// </summary> /// <param name="currentUser">Session instance of current user</param> /// <param name="courseId">course id to be mapped</param> /// <returns>Status if mapping added or not.</returns> /// <exception >on exception return false</exception> public bool StartCourseForTrainee(User currentUser, int courseId) { if (currentUser != null && currentUser.IsTrainee && currentUser.UserId > 0 && courseId > 0) { return(LearningPathDataAccessor.StartCourseForTrainee(currentUser, courseId)); } return(false); }
public int AddCourseSubtopic(CourseSubtopic subtopicToAdd) { subtopicToAdd.Description = subtopicToAdd.Description ?? ""; subtopicToAdd.IsActive = true; subtopicToAdd.CreatedOn = DateTime.Now; return(LearningPathDataAccessor.AddCourseSubtopic(subtopicToAdd)); }
public int AddCourse(Course courseToAdd) { courseToAdd.IsActive = true; courseToAdd.Icon = courseToAdd.Icon ?? Constants.DefaultCourseIcon; courseToAdd.CreatedOn = DateTime.Now; courseToAdd.Description = courseToAdd.Description ?? ""; return(LearningPathDataAccessor.AddCourse(courseToAdd)); }
public Course GetCourseWithSubtopics(int courseId) { var courseDetails = LearningPathDataAccessor.GetCourseWithSubtopics(courseId); if (courseDetails != null) { courseDetails.AuthorName = UserDataAccesor.GetUserById(courseDetails.AddedBy).FirstName; } return(courseDetails); }
/// <summary> /// Method validates wether is allowed to access the course or not /// </summary> /// <param name="requestedCourseId">course id to validated to allow access</param> /// <param name="currentUser">requested user instance</param> /// <returns>success flag for user permission to acces the page</returns> public bool AuthorizeCurrentUserForCourse(int requestedCourseId, User currentUser) { // skip check for non trainee role if (currentUser.IsTrainer || currentUser.IsManager || currentUser.IsAdministrator) { return(true); } return(LearningPathDataAccessor.AuthorizeUserForCourse(requestedCourseId, currentUser)); }
public bool UpdateAssignment(Assignment dataToUpdate) { dataToUpdate.Description = dataToUpdate.Description ?? ""; bool fileCopied = true; if (!String.IsNullOrEmpty(dataToUpdate.AssignmentAsset) && (fileCopied = UtilityFunctions.CopyFile(dataToUpdate.AssignmentAsset, LearningAssetsPath.TempFile, LearningAssetsPath.Assignment))) { UtilityFunctions.DeleteFile(dataToUpdate.AssignmentAsset, LearningAssetsPath.TempFile); } return(LearningPathDataAccessor.UpdateAssignment(dataToUpdate) && fileCopied); }
public bool SaveSubtopicContentProgress(int subtopicContentId, int userId) { if ((subtopicContentId > 0 && userId > 0) && LearningPathDataAccessor.SaveSubtopicContentProgress(subtopicContentId, userId)) { CourseTrackerDetails courseDetails = LearningPathDataAccessor.GetCourseDetailBasedOnParameters(userId, 0, subtopicContentId); if (courseDetails != null && courseDetails.PercentageCompleted.CompareTo(100) == 0) { return(LearningPathDataAccessor.CompleteCourseForTrainee(courseDetails.Id, userId) && new FeedbackBl().GenerateCourseFeedback(courseDetails.Id, userId)); } return(true); } return(false); }
public bool AddAssignment(Assignment dataToAdd, out int id) { dataToAdd.Description = dataToAdd.Description ?? ""; dataToAdd.CreatedOn = DateTime.Now; dataToAdd.IsActive = true; bool fileCopied = true; if (!String.IsNullOrEmpty(dataToAdd.AssignmentAsset) && (fileCopied = UtilityFunctions.CopyFile(dataToAdd.AssignmentAsset, LearningAssetsPath.TempFile, LearningAssetsPath.Assignment))) { UtilityFunctions.DeleteFile(dataToAdd.AssignmentAsset, LearningAssetsPath.TempFile); } return(LearningPathDataAccessor.AddAssignment(dataToAdd, out id) && fileCopied); }
/// <summary> /// Private to class method to generate course /// </summary> /// <param name="courseId">Course Id</param> /// <param name="userId">User Id</param> /// <returns>success flag for the event</returns> internal bool GenerateCourseFeedback(int courseId, int userId) { Course course = LearningPathDataAccessor.GetCourseWithAllData(courseId, userId); Feedback feedback = new Feedback { AddedBy = new User { UserId = Constants.AppBotUserId }, AddedFor = new User { UserId = userId }, FeedbackType = new Common.Entity.FeedbackType { FeedbackTypeId = (int)FeedbackType.Course }, FeedbackText = UtilityFunctions.GenerateHtmlForCourseFeedback(course), Title = course.Name }; return(AddFeedback(feedback)); }
/// <summary> /// Get view model for user profile page /// </summary> /// <param name="userId">user id</param> /// <param name="loggedInUser"></param> /// <returns>instance of User vm</returns> public UserProfileVm GetUserProfileVm(int userId, User loggedInUser) { User requestedUser = userId == loggedInUser.UserId ? loggedInUser : UserDataAccesor.GetUserById(userId); CodeReview codeReview = loggedInUser.IsTrainer || loggedInUser.IsManager ? CodeReviewConverter.ConvertFromCore(UnitOfWork.CodeReviewRepository.GetSavedCodeReviewForTrainee(userId, loggedInUser.UserId)) : null; var commonTags = UnitOfWork.CodeReviewRepository .GetCommonlyUsedTags(userId, 5) .Select(skill => new CodeReviewTag { CodeReviewTagId = 0, Skill = new Skill { Name = skill.Name, SkillId = skill.SkillId } }).ToList(); if (codeReview != null) { codeReview.CodeReviewPreviewHtml = UtilityFunctions.GenerateCodeReviewPreview(codeReview, true); codeReview.SystemRating = new FeedbackBl().CalculateCodeReviewRating(codeReview); } return(new UserProfileVm { User = userId == loggedInUser.UserId ? null : requestedUser, Skills = requestedUser.IsTrainee ? SkillDataAccesor.GetSkillsByUserId(userId) : null, TraineeSynopsis = requestedUser.IsTrainee ? FeedbackDataAccesor.GetTraineeFeedbackSynopsis(requestedUser.UserId) : null, Sessions = requestedUser.IsTrainee ? SessionConverter.ConvertListFromCore(UnitOfWork.SessionRepository.GetAllSessionForAttendee(userId)) : null, Projects = null, Feedbacks = requestedUser.IsTrainee ? FeedbackDataAccesor.GetUserFeedback(userId, 5) : FeedbackDataAccesor.GetFeedbackAddedByUser(userId), TrainorSynopsis = requestedUser.IsTrainer || requestedUser.IsManager ? FeedbackDataAccesor.GetTrainorFeedbackSynopsis(requestedUser.UserId) : null, AllAssignedCourses = requestedUser.IsTrainee ? LearningPathDataAccessor.GetAllCoursesForTrainee(requestedUser.UserId).OrderByDescending(x => x.PercentageCompleted).ToList() : new List <CourseTrackerDetails>(), SavedCodeReview = codeReview, CommonTags = commonTags // SavedCodeReviewData = logedInUser.IsTrainer && (codeReview != null && codeReview.Id > 0) ? UtilityFunctions.GenerateCodeReviewPreview(codeReview, true) : string.Empty }); }
public Course GetCourseWithAllData(int courseId, User currentUser, int userId = 0) { Course courseDetails; if (!currentUser.IsTrainee) { if (userId > 0) { courseDetails = LearningPathDataAccessor.GetCourseWithAllData(courseId, userId); courseDetails.TrackerDetails = LearningPathDataAccessor.GetAllCoursesForTrainee(userId).FirstOrDefault(x => x.Id == courseId); } else { courseDetails = LearningPathDataAccessor.GetCourseWithAllData(courseId); } } else { courseDetails = LearningPathDataAccessor.GetCourseWithAllData(courseId, userId); } if (courseDetails != null) { User userData = UserDataAccesor.GetUserById(courseDetails.AddedBy); courseDetails.AuthorName = userData.FirstName; courseDetails.AuthorMailId = userData.Email; if (currentUser.IsTrainee && !courseDetails.IsStarted) { courseDetails.LoadAlert = true; foreach (CourseSubtopic subtopic in courseDetails.CourseSubtopics) { subtopic.Assignments = new Collection <Assignment>(); subtopic.SubtopicContents = new Collection <SubtopicContent>(); } } } return(courseDetails); }
public bool SaveSubtopicOrder(List <CourseSubtopic> data) { return(LearningPathDataAccessor.SaveSubtopicOrder(data)); }
public bool DeleteCourseSubtopic(int id) { return(LearningPathDataAccessor.DeleteCourseSubtopic(id)); }
public bool UpdateCourseSubtopic(CourseSubtopic subtopicToUpdate) { subtopicToUpdate.Description = subtopicToUpdate.Description ?? ""; return(LearningPathDataAccessor.UpdateCourseSubtopic(subtopicToUpdate)); }
public bool UpdateAssignmentProgress(Assignment data, User currentUser, out int feedbackId) { feedbackId = 0; bool isAssignmentFeedback = false; if (data != null && data.TraineeId > 0) { // return false if trainee will not allowed to approve the completion of assignment or trainer cannot mark assignment as completed or trainer cannot approve/reassign assignment without feedback. if ((currentUser.IsTrainee && data.TraineeId != currentUser.UserId && data.IsApproved) || (!currentUser.IsTrainee && data.IsCompleted && !data.IsApproved) || (!currentUser.IsTrainee && data.Feedback.Count < 1)) { return(false); } if (!currentUser.IsTrainee) { var feedback = data.Feedback.FirstOrDefault(x => x.FeedbackId == 0); feedback.AddedBy = currentUser; feedback.AddedFor = new UserBl().GetUserByUserId(data.TraineeId); feedback.AddedOn = DateTime.Now; if (feedback.FeedbackType.FeedbackTypeId == (int)Common.Enumeration.FeedbackType.Comment) { feedback.Rating = 0; } feedback.Skill = new Skill(); feedback.Project = new Project(); feedbackId = FeedbackDataAccesor.AddFeedback(feedback); if (feedbackId == 0 || !FeedbackDataAccesor.AddFeedbackAssignmentMapping(feedbackId, data.Id)) { return(false); } feedback.FeedbackId = feedbackId; new NotificationBl().AddFeedbackNotification(feedback); data.ApprovedBy = currentUser.UserId; if (feedback.FeedbackType.FeedbackTypeId == (int)Common.Enumeration.FeedbackType.Assignment) { isAssignmentFeedback = true; } } var status = LearningPathDataAccessor.UpdateAssignmentProgress(data); if (!status || !isAssignmentFeedback || currentUser.IsTrainee) { return(status); } CourseTrackerDetails courseDetails = LearningPathDataAccessor.GetCourseDetailBasedOnParameters(data.TraineeId, data.Id); if (courseDetails != null && courseDetails.PercentageCompleted.CompareTo(100) == 0) { return(LearningPathDataAccessor.CompleteCourseForTrainee(courseDetails.Id, data.TraineeId) && new FeedbackBl().GenerateCourseFeedback(courseDetails.Id, data.TraineeId)); } return(true); } return(false); }
public bool UpdateCourse(Course courseToUpdate) { courseToUpdate.Description = courseToUpdate.Description ?? ""; courseToUpdate.Icon = courseToUpdate.Icon ?? Constants.DefaultCourseIcon; return(LearningPathDataAccessor.UpdateCourse(courseToUpdate)); }
public bool DeleteAssignment(int id) { return(LearningPathDataAccessor.DeleteAssignment(id)); }
/// <summary> /// Fetches all courses based on filter /// </summary> /// <param name="currentUser">Current user instance</param> /// <param name="searchKeyword">search keyword for free text search</param> /// <returns>List of Courses on filter</returns> public List <Course> FilterCourses(User currentUser, string searchKeyword) { return(currentUser.IsTrainee ? LearningPathDataAccessor.FilterCourses(searchKeyword, currentUser.UserId) : LearningPathDataAccessor.FilterCourses(searchKeyword)); }
public List <Course> GetAllCourses(User currentUser) { return(currentUser.IsTrainee ? LearningPathDataAccessor.GetAllCourses(currentUser.UserId) : LearningPathDataAccessor.GetAllCourses()); }
public List <SubtopicContent> GetSubtopicContents(int subtopicId) { return(LearningPathDataAccessor.GetSubtopicContents(subtopicId)); }
public bool UpdateSubtopicContent(SubtopicContent dataToUpdate) { dataToUpdate.Description = dataToUpdate.Description ?? ""; return(LearningPathDataAccessor.UpdateSubtopicContent(dataToUpdate)); }
public List <Assignment> GetAssignments(int subtopicContentId) { return(LearningPathDataAccessor.GetAssignments(subtopicContentId)); }
public bool DeleteSubtopicContent(int id) { return(LearningPathDataAccessor.DeleteSubtopicContent(id)); }
public bool SaveSubtopicContentOrder(List <SubtopicContent> data) { return(LearningPathDataAccessor.SaveSubtopicContentOrder(data)); }
public bool PublishCourse(int id) { return(LearningPathDataAccessor.PublishCourse(id)); }
public List <Course> GetAllCourses() { return(LearningPathDataAccessor.GetAllCourses()); }