/// <summary> /// Save weekly feedback and corresponding survey response /// </summary> /// <param name="response">instance of response</param> /// <returns>success flag </returns> public bool SaveWeeklySurveyResponseForTrainee(SurveyResponse response) { // Weekly feedback must have team associated with it. if (!response.AddedBy.TeamId.HasValue) { return(false); } try { Survey survey = SurveyDataAccesor.GetWeeklySurveySetForTeam(response.AddedBy.TeamId.Value); Feedback lastWeeklyFeedback = FeedbackDataAccesor.GetUserFeedback(response.AddedFor.UserId, 1, (int)Common.Enumeration.FeedbackType.Weekly) .FirstOrDefault(); response.CodeReviewForTheWeek = FeedbackDataAccesor.GetUserFeedback(response.AddedFor.UserId, 1000, (int)Common.Enumeration.FeedbackType.CodeReview) .Where(x => x.AddedOn.Date >= response.Feedback.StartDate && (lastWeeklyFeedback == null || x.AddedOn >= lastWeeklyFeedback.AddedOn)) .ToList(); response.Feedback.FeedbackText = GenerateHtmlforFeedback(response, survey); response.Feedback.FeedbackId = SurveyDataAccesor.SaveWeeklySurveyResponseForTrainee(response, survey); return(response.Feedback.FeedbackId > 0 && new NotificationBl().AddFeedbackNotification(response.Feedback)); } catch (Exception ex) { LogUtility.ErrorRoutine(ex); return(false); } }
/// <summary> /// fetches the user feedback based on filters /// </summary> /// <param name="traineeId">trainee's id</param> /// <param name="startDate">start date</param> /// <param name="endDate">end date</param> /// <param name="arrayFeedbackType">array of feedback type</param> /// <param name="trainerId">trainer id</param> /// <returns>returns instances of Feedback Plots</returns> public FeedbackPlot GetUserFeedbackOnFilterForPlot(int traineeId, DateTime?startDate, DateTime?endDate, string arrayFeedbackType, int trainerId) { FeedbackPlot objfeedbackPlot = new FeedbackPlot { AssignmentFeedbacks = new List <Feedback>(), CodeReviewFeedbacks = new List <Feedback>(), WeeklyFeedbacks = new List <Feedback>() }; if (string.IsNullOrEmpty(arrayFeedbackType)) { return(objfeedbackPlot); } int[] feedbackTypes = Array.ConvertAll(arrayFeedbackType.Split(','), int.Parse); foreach (var type in feedbackTypes) { switch (type) { case 3: objfeedbackPlot.AssignmentFeedbacks = FeedbackDataAccesor.GetUserFeedback(traineeId, 1000, type) .Where(x => (trainerId == 0 || x.AddedBy.UserId == trainerId) && (!startDate.HasValue || x.AddedOn > startDate.Value.AddDays(-1)) && (!endDate.HasValue || x.AddedOn < endDate.Value.AddDays(1)) ) .ToList(); break; case 4: // var testtt = FeedbackDataAccesor.GetUserFeedback(traineeId, 1000, type); objfeedbackPlot.CodeReviewFeedbacks = FeedbackDataAccesor.GetUserFeedback(traineeId, 1000, type) .Where(x => (trainerId == 0 || x.AddedBy.UserId == trainerId) && (!startDate.HasValue || x.AddedOn > startDate.Value.AddDays(-1)) && (!endDate.HasValue || x.AddedOn < endDate.Value.AddDays(1)) ) .ToList(); break; case 5: objfeedbackPlot.WeeklyFeedbacks = FeedbackDataAccesor.GetUserFeedback(traineeId, 1000, type) .Where(x => (trainerId == 0 || x.AddedBy.UserId == trainerId) && ((!startDate.HasValue || x.StartDate > startDate.Value.AddDays(-1)) && (!endDate.HasValue || x.EndDate < endDate.Value.AddDays(1))) ) .ToList(); break; } } return(objfeedbackPlot); }
/// <summary> /// Bussiness method to Fecth weekly survey Questions for team /// </summary> /// <param name="traineeId">trainee id</param> /// <param name="startDate">feedback start Date</param> /// <param name="endDate">feedback end date</param> /// <param name="teamId">team id</param> /// <returns>Instance of survey id</returns> public SurveyVm FetchWeeklySurveyQuestionForTeam(int traineeId, DateTime startDate, DateTime endDate, int teamId) { Feedback lastWeeklyFeedback = FeedbackDataAccesor.GetUserFeedback(traineeId, 1, (int)Common.Enumeration.FeedbackType.Weekly) .FirstOrDefault(); return(new SurveyVm() { Survey = SurveyDataAccesor.GetWeeklySurveySetForTeam(teamId), IsCodeReviewedForTrainee = FeedbackDataAccesor.GetUserFeedback(traineeId, 1000, (int)Common.Enumeration.FeedbackType.CodeReview).Any(x => x.AddedOn.Date >= startDate.Date && (lastWeeklyFeedback == null || x.AddedOn >= lastWeeklyFeedback.AddedOn)) }); }
/// <summary> /// Fetches user Feedback based on filter /// </summary> /// <param name="userId">user id</param> /// <param name="pageSize">no of record count</param> /// <param name="feedbackId">feedback type id</param> /// <param name="startAddedOn">start date </param> /// <param name="endAddedOn">end date</param> /// <returns></returns> public List <Feedback> GetUserFeedbackOnFilter(int userId, int pageSize, int feedbackId, DateTime?startAddedOn = null, DateTime?endAddedOn = null) { // truncate any time part from the filter, if only if the variables have any value if (startAddedOn.HasValue) { startAddedOn = startAddedOn.Value.Date; } if (endAddedOn.HasValue) { endAddedOn = endAddedOn.Value.Date; } return(FeedbackDataAccesor.GetUserFeedback(userId, pageSize, feedbackId, startAddedOn, endAddedOn)); }
/// <summary> /// Fetch Weekly feedback preview generated by survey /// </summary> /// <param name="response">instance of response</param> /// <returns>generated Html</returns> public string FetchWeeklyFeedbackPreview(SurveyResponse response) { // Weekly feedback must have team associated with it. if (!response.AddedBy.TeamId.HasValue) { return(string.Empty); } Survey survey = SurveyDataAccesor.GetWeeklySurveySetForTeam(response.AddedBy.TeamId.Value); Feedback lastWeeklyFeedback = FeedbackDataAccesor.GetUserFeedback(response.AddedFor.UserId, 1, (int)Common.Enumeration.FeedbackType.Weekly) .FirstOrDefault(); response.CodeReviewForTheWeek = FeedbackDataAccesor.GetUserFeedback(response.AddedFor.UserId, 1000, (int)Common.Enumeration.FeedbackType.CodeReview) .Where(x => x.AddedOn.Date >= response.Feedback.StartDate && (lastWeeklyFeedback == null || x.AddedOn >= lastWeeklyFeedback.AddedOn)) .ToList(); return(GenerateHtmlforFeedback(response, survey)); }
/// <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 UserProfileVm GetUserProfileVm(int userId) { return(new UserProfileVm { User = UserDataAccesor.GetUserById(userId), Skills = SkillDataAccesor.GetSkillsByUserId(userId), AllSkills = SkillDataAccesor.GetAllSkillsForApp(), Sessions = SessionDataAccesor.GetSessionsByUserId(userId), Projects = ProjectDataAccesor.GetProjectsByUserId(userId), Feedbacks = FeedbackDataAccesor.GetUserFeedback(userId, 5), RecentCrFeedback = FeedbackDataAccesor.GetUserFeedback(userId, 100, 4), FeedbackTypes = new List <FeedbackType> { new FeedbackType { FeedbackTypeId = 1, Description = "Comment" }, new FeedbackType { FeedbackTypeId = 2, Description = "Skill" }, new FeedbackType { FeedbackTypeId = 3, Description = "Assignment" }, new FeedbackType { FeedbackTypeId = 4, Description = "Code Review" }, new FeedbackType { FeedbackTypeId = 5, Description = "Weekly Feedback" } } }); }
/// <summary> /// Fetches user Feedback based on filter /// </summary> /// <param name="userId"></param> /// <param name="pageSize"></param> /// <param name="feedbackId"></param> /// <returns></returns> public List <Feedback> GetUserFeedbackOnFilter(int userId, int pageSize, int feedbackId) { return(FeedbackDataAccesor.GetUserFeedback(userId, pageSize, feedbackId)); }