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