Ejemplo n.º 1
0
        private void cmb_SelectUserReport_SelectedIndexChanged(object sender, EventArgs e)
        {
            string Username      = cmb_SelectUserReport.Text;
            int    SelectedIndex = cmb_SelectUserReport.SelectedIndex;

            listView_UserReports.Items.Clear();
            listView_AttitudeReports.Items.Clear();

            if (Username == "*" || SelectedIndex == -1)
            {
                return;
            }

            UserModelDataTransferObject SelectedUser;

            using (UserController userController = new UserController())
                SelectedUser = userController.GetUserByName(Username);
            long UserID = SelectedUser.UserID;

            List <Result> UserResults;

            using (ResultController resultController = new ResultController())
                UserResults = resultController.GetForUser(UserID);

            UserResults = UserResults.OrderBy(r => r.SurveyID).ThenByDescending(r => r.Date).ToList();

            SurveyController surveyController = new SurveyController();

            foreach (Result result in UserResults)
            {
                string SurveyName = surveyController.Get(result.SurveyID).SurveyName;
                listView_UserReports.Items.Add(new ListViewItem(listView_UserReports.Groups["default"])
                {
                    Text = result.ToString(), Tag = result.ResultID
                });
            }

            //Get list of lastest User Reports
            List <long>   UsedSurveyID    = new List <long>();
            List <Result> LastUserReports = new List <Result>();

            foreach (Result result in UserResults)
            {
                if (!UsedSurveyID.Contains(result.SurveyID))
                {
                    UsedSurveyID.Add(result.SurveyID);
                    LastUserReports.Add(result);
                }
            }
            UsedSurveyID = null;

            //Calculate Attitude Score
            using (AttitudeController attitudeController = new AttitudeController())
                using (AttitudeDefinitionController attitudeDefinitionController = new AttitudeDefinitionController())
                    using (ResultDefinitionController resultDefinitionController = new ResultDefinitionController())
                    {
                        List <Attitude> attitudes = attitudeController.GetAttitudes();

                        listView_AttitudeReports.Items.Clear();

                        foreach (Attitude attitude in attitudes)
                        {
                            long AttitudeSum = 0;
                            bool Found       = false;

                            List <AttitudeDefinition> attitudeDefinitions = attitudeDefinitionController.GetRelation(attitude.AttitudeID);
                            foreach (AttitudeDefinition attitudeDefinition in attitudeDefinitions)
                            {
                                long QuestionID = attitudeDefinition.QuestionID;


                                foreach (Result result in LastUserReports)
                                {
                                    List <ResultDefinition> resultDefinitions = resultDefinitionController.Get(result.ResultID);
                                    Found = false;
                                    foreach (ResultDefinition resultDefinition in resultDefinitions)
                                    {
                                        if (resultDefinition.QuestionID == QuestionID)
                                        {
                                            AttitudeSum += resultDefinition.ResultAnswer;
                                            Found        = true;
                                            break;
                                        }
                                    }
                                    if (Found)
                                    {
                                        break;
                                    }
                                }

                                string SurveyName = surveyController.GetByQuestion(QuestionID).SurveyName;

                                if (!Found)
                                {
                                    listView_AttitudeReports.Items.Add(
                                        new ListViewItem(listView_AttitudeReports.Groups["default"])
                                    {
                                        ForeColor = Color.Red,
                                        Text      = attitude.AttitudeName + " - requires '" + SurveyName + "'",
                                        Tag       = attitude.AttitudeID
                                    });
                                    break;
                                }
                            }

                            if (Found)
                            {
                                listView_AttitudeReports.Items.Add(
                                    new ListViewItem(listView_AttitudeReports.Groups["default"])
                                {
                                    Text = attitude.AttitudeName + " - " + AttitudeSum,
                                    Tag  = attitude.AttitudeID
                                });
                            }
                        }
                    }
        }