Пример #1
0
 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));
 }
Пример #2
0
 /// <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);
 }
Пример #3
0
        public int AddCourseSubtopic(CourseSubtopic subtopicToAdd)
        {
            subtopicToAdd.Description = subtopicToAdd.Description ?? "";
            subtopicToAdd.IsActive    = true;
            subtopicToAdd.CreatedOn   = DateTime.Now;

            return(LearningPathDataAccessor.AddCourseSubtopic(subtopicToAdd));
        }
Пример #4
0
        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));
        }
Пример #5
0
        public Course GetCourseWithSubtopics(int courseId)
        {
            var courseDetails = LearningPathDataAccessor.GetCourseWithSubtopics(courseId);

            if (courseDetails != null)
            {
                courseDetails.AuthorName = UserDataAccesor.GetUserById(courseDetails.AddedBy).FirstName;
            }
            return(courseDetails);
        }
Пример #6
0
        /// <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));
        }
Пример #7
0
        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);
        }
Пример #8
0
 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);
 }
Пример #9
0
        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);
        }
Пример #10
0
        /// <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));
        }
Пример #11
0
        /// <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
            });
        }
Пример #12
0
        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);
        }
Пример #13
0
 public bool SaveSubtopicOrder(List <CourseSubtopic> data)
 {
     return(LearningPathDataAccessor.SaveSubtopicOrder(data));
 }
Пример #14
0
 public bool DeleteCourseSubtopic(int id)
 {
     return(LearningPathDataAccessor.DeleteCourseSubtopic(id));
 }
Пример #15
0
 public bool UpdateCourseSubtopic(CourseSubtopic subtopicToUpdate)
 {
     subtopicToUpdate.Description = subtopicToUpdate.Description ?? "";
     return(LearningPathDataAccessor.UpdateCourseSubtopic(subtopicToUpdate));
 }
Пример #16
0
        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);
        }
Пример #17
0
 public bool UpdateCourse(Course courseToUpdate)
 {
     courseToUpdate.Description = courseToUpdate.Description ?? "";
     courseToUpdate.Icon        = courseToUpdate.Icon ?? Constants.DefaultCourseIcon;
     return(LearningPathDataAccessor.UpdateCourse(courseToUpdate));
 }
Пример #18
0
 public bool DeleteAssignment(int id)
 {
     return(LearningPathDataAccessor.DeleteAssignment(id));
 }
Пример #19
0
 /// <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));
 }
Пример #20
0
 public List <Course> GetAllCourses(User currentUser)
 {
     return(currentUser.IsTrainee ? LearningPathDataAccessor.GetAllCourses(currentUser.UserId)
                                  : LearningPathDataAccessor.GetAllCourses());
 }
Пример #21
0
 public List <SubtopicContent> GetSubtopicContents(int subtopicId)
 {
     return(LearningPathDataAccessor.GetSubtopicContents(subtopicId));
 }
Пример #22
0
 public bool UpdateSubtopicContent(SubtopicContent dataToUpdate)
 {
     dataToUpdate.Description = dataToUpdate.Description ?? "";
     return(LearningPathDataAccessor.UpdateSubtopicContent(dataToUpdate));
 }
Пример #23
0
 public List <Assignment> GetAssignments(int subtopicContentId)
 {
     return(LearningPathDataAccessor.GetAssignments(subtopicContentId));
 }
Пример #24
0
 public bool DeleteSubtopicContent(int id)
 {
     return(LearningPathDataAccessor.DeleteSubtopicContent(id));
 }
Пример #25
0
 public bool SaveSubtopicContentOrder(List <SubtopicContent> data)
 {
     return(LearningPathDataAccessor.SaveSubtopicContentOrder(data));
 }
Пример #26
0
 public bool PublishCourse(int id)
 {
     return(LearningPathDataAccessor.PublishCourse(id));
 }
Пример #27
0
 public List <Course> GetAllCourses()
 {
     return(LearningPathDataAccessor.GetAllCourses());
 }