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 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); }