コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
ファイル: UserBl.cs プロジェクト: TrainingTracker/TT
        /// <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);
        }
コード例 #3
0
        /// <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))
            });
        }
コード例 #4
0
ファイル: UserBl.cs プロジェクト: TrainingTracker/TT
        /// <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));
        }
コード例 #5
0
        /// <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));
        }
コード例 #6
0
ファイル: UserBl.cs プロジェクト: TrainingTracker/TT
        /// <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
            });
        }
コード例 #7
0
 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"
             }
         }
     });
 }
コード例 #8
0
 /// <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));
 }