Пример #1
0
        /// <summary>
        /// Data Access method to get Survey Questions
        /// </summary>
        /// <param name="teamId">team id</param>
        /// <returns>Survey instance</returns>
        public Common.Entity.Survey GetWeeklySurveySetForTeam(int teamId)
        {
            try
            {
                using (TrainingTrackerEntities context = new TrainingTrackerEntities())
                {
                    Common.Entity.Survey survey = context.Teams.Where(x => x.TeamId == teamId)
                                                  .Include(x => x.Survey)
                                                  .Include(x => x.Survey.SurveySections)
                                                  .Include(x => x.Survey.SurveySections
                                                           .Select(y => y.SurveyQuestions
                                                                   .Select(z => z.SurveyAnswers)))
                                                  .AsEnumerable()
                                                  .Select(x => new Common.Entity.Survey
                    {
                        SurveyId    = x.Survey.SurveyId,
                        Description = x.Survey.Description,

                        SurveySubSections = x.Survey.SurveySections
                                            .Where(yS => yS.IsDeleted == false)
                                            .Select(y => new SurveySection
                        {
                            Id        = y.SurveySectionId,
                            Header    = y.SectionHeader,
                            SortOrder = y.SortOrder,
                            Questions = y.SurveyQuestions
                                        .Where(yQ => yQ.IsDeleted == false)
                                        .Select(q => new Common.Entity.SurveyQuestion
                            {
                                SurveyQuestionId       = q.SurveyQuestionId,
                                HelpText               = q.HelpText,
                                AdditionalNoteRequired = q.AdditionalNoteRequired,
                                IsMandatory            = q.IsMandatory,
                                QuestionText           = q.QuestionText,
                                ResponseTypeId         = q.ResponseTypeId,
                                SortOrder              = q.SortOrder,
                                Answers = q.SurveyAnswers
                                          .Where(yA => yA.IsDeleted == false)
                                          .Select(a => new Common.Entity.SurveyAnswer
                                {
                                    Id         = a.SurveyAnswerId,
                                    OptionText = a.OptionText,
                                    SortOrder  = a.SortOrder
                                }).OrderBy(so => so.SortOrder)
                                          .ToList()
                            }).OrderBy(so => so.SortOrder)
                                        .ToList()
                        }).OrderBy(so => so.SortOrder)
                                            .ToList(),
                    }).FirstOrDefault();
                    return(survey);
                }
            }
            catch (Exception ex)
            {
                LogUtility.ErrorRoutine(ex);
                return(null);
            }
        }
Пример #2
0
        /// <summary>
        /// Data Access method to Save response for the survey
        /// </summary>
        /// <param name="response">instance of response</param>
        /// <param name="survey">instance of survey</param>
        /// <returns>id of saved feedback</returns>
        public int SaveWeeklySurveyResponseForTrainee(Common.Entity.SurveyResponse response, Common.Entity.Survey survey)
        {
            try
            {
                using (TrainingTrackerEntities context = new TrainingTrackerEntities())
                {
                    SurveyCompletedMetaData instanceMetaData = new SurveyCompletedMetaData
                    {
                        SurveyId      = survey.SurveyId,
                        SurveyTakenBy = response.AddedBy.UserId,
                        DateCompleted = DateTime.Now
                    };

                    Feedback feedback = new Feedback
                    {
                        AddedBy      = response.Feedback.AddedBy.UserId,
                        AddedFor     = response.Feedback.AddedFor.UserId,
                        AddedOn      = DateTime.Now,
                        SkillId      = 0,
                        FeedbackText = response.Feedback.FeedbackText,
                        FeedbackType = response.Feedback.FeedbackType.FeedbackTypeId,
                        Title        = response.Feedback.FeedbackType.Description,
                        StartDate    = response.Feedback.StartDate,
                        EndDate      = response.Feedback.EndDate,
                        ProjectId    = 0,
                        Rating       = (short?)response.Feedback.Rating
                    };

                    foreach (var ans in response.Response)
                    {
                        instanceMetaData.SurveyResponses.Add(new SurveyResponse
                        {
                            SurveyQuestionId = ans.QuestionId,
                            SurveyAnswerId   = ans.AnswerId,
                            AdditionalNote   = ans.AdditionalNotes,
                            DateCreated      = DateTime.Now
                        });
                    }
                    context.SurveyCompletedMetaDatas.Add(instanceMetaData);
                    context.Feedbacks.Add(feedback);
                    context.WeeklyFeedbackSurveyMappings.Add(new WeeklyFeedbackSurveyMapping
                    {
                        FeedbackId = feedback.FeedbackId,
                        SurveyCompletedMetaDataId = instanceMetaData.SurveyCompletedMetaDataId
                    });
                    context.SaveChanges();
                    return(feedback.FeedbackId);
                }
            }
            catch (Exception ex)
            {
                LogUtility.ErrorRoutine(ex);
                return(-1);
            }
        }