/// <summary>
        /// Get a data table comprising the search results.
        /// </summary>
        /// <param name="staffName"></param>
        /// <param name="staffID"></param>
        /// <param name="staffTypes"></param>
        /// <param name="clusters"></param>
        /// <param name="schoolTypes"></param>
        /// <param name="schoolID"></param>
        /// <returns></returns>
        private DataTable GetResultsTable(string staffName, string staffID, List<string> staffTypes, List<string> clusters, List<string> schoolTypes, string schoolName)
        {
            // The stored proc doesn't like passing null. Pass empty strings for null values.
            if (staffName == null)
            {
                staffName = string.Empty;
            }

            if (staffID == null)
            {
                staffID = string.Empty;
            }

            // We have to generate a list of school ids for these criteria.
            List<Thinkgate.Base.Classes.School> schoolList = new List<Thinkgate.Base.Classes.School>();
            if (clusters != null && clusters.Count > 0)
            {
                schoolList.AddRange(SchoolMasterList.GetSchoolsForCriteria(clusters, null, null, null));
            }

            if (!string.IsNullOrEmpty(schoolName))
            {
                schoolList.AddRange(SchoolMasterList.GetSchoolsForCriteria(null, null, schoolName, null));
            }
            else if (schoolTypes != null && schoolTypes.Count > 0)
            {
                schoolList.AddRange(SchoolMasterList.GetSchoolsForCriteria(null, schoolTypes, null, null));
            }

            schoolList = schoolList.Distinct().ToList();
            List<int> schoolIdList = (from sc in schoolList select sc.ID).Distinct().ToList();

            // If we are not searching on school, we must list all possible schools for this user.
            if (schoolIdList.Count == 0)
            {
                schoolIdList = SchoolMasterList.GetSchoolTableIdsForUser(SessionObject.LoggedInUser);
            }

            DataSet filteredStaffDataSet = Thinkgate.Base.DataAccess.ThinkgateDataAccess.FetchDataSet(
                "E3_Staff_Search",
                new object[] { staffName, staffID, staffTypes.ToSql(), clusters.ToSql(), schoolTypes.ToSql(), schoolIdList.ToSql() });

            filteredStaffDataSet = RenameResultSets(filteredStaffDataSet);

            // Now we have to build a single data table to show in the grid.
            DataTable dt = new DataTable();
            DataColumn nameCol = dt.Columns.Add("Name");
            DataColumn userIDCol = dt.Columns.Add("UserID");
            DataColumn userPageCol = dt.Columns.Add("UserPage", typeof(int));
            DataColumn userTypeCol = dt.Columns.Add("UserType");
            DataColumn schoolCol = dt.Columns.Add("School");

            foreach (DataRow infoRow in filteredStaffDataSet.Tables["StaffInfo"].Rows)
            {
                DataRow resultRow = dt.NewRow();
                resultRow[nameCol] = infoRow["UserFullName"];
                resultRow[userIDCol] = infoRow["UserName"];
                resultRow[userPageCol] = infoRow["UserPage"];

                List<string> userTypes = (from t in filteredStaffDataSet.Tables["StaffRoles"].AsEnumerable()
                                          where t.Field<Guid>("UserID") == (Guid)infoRow["UserID"]
                                          select t.Field<string>("RoleName")).Distinct().ToList();

                resultRow[userTypeCol] = string.Join(", ", userTypes);

                List<string> schools = (from t in filteredStaffDataSet.Tables["StaffSchools"].AsEnumerable()
                                        where t.Field<Guid>("UserID") == (Guid)infoRow["UserID"]
                                        select t.Field<string>("SchoolName")).Distinct().ToList();

                resultRow[schoolCol] = string.Join(", ", schools);

                dt.Rows.Add(resultRow);
            }

            return dt;
        }
Example #2
0
 public void Assign( List<string> p )
 {
     if( _type != MyParameterDataTypes.Strings ) throw new Exception( "wrong parm type" );
     if( p == null || p.Count == 0 ) throw new Exception( "list parm can't be null or 0 items" );
     _content = p.ToSql();
 }
        private void LoadAssessments()
        {
            String gradeFilter = (String)ViewState[_gradeFilterKey];
            String subjectFilter = (String)ViewState[_subjectFilterKey];
            Thinkgate.Base.Classes.CourseList courses = Thinkgate.Base.Classes.CourseMasterList.CurrCourseList;
            courses = courses.FilterByGradeAndSubject((gradeFilter == "All") ? null : gradeFilter, (subjectFilter == "All") ? null : subjectFilter);
            List<Int32> courseIds = new List<int>();
            foreach (Thinkgate.Base.Classes.Course c in courses)
                courseIds.Add(c.ID);
            List<ThinkgateSchool> schools = SessionObject.LoggedInUser.Schools;
            List<Int32> schoolIds = new List<Int32>(); 
            //PLH - 01/15/2013 - Drill down to school for Classroom Assessments from Classes Folder ONLY
            if (_schoolID != 0)
            {
                schoolIds.Add(_schoolID);
            }
            else
            {
                schoolIds = (from s in schools select s.Id).ToList();
            }
            List<ThinkgateRole> roles = SessionObject.LoggedInUser.Roles;
            List<String> roleNames = (from r in roles select r.RoleName).ToList();

            dtAssessment = Thinkgate.Base.Classes.Assessment.LoadAssessments(_category, _level.ToString(), _levelID,
                                                                                                                 courseIds.ToSql(), (String)ViewState[_termFilterKey],
                                                                                                                 (String)ViewState[_testTypeFilterKey], (String)ViewState[_statusFilterKey],
                                                                                                                 schoolIds.ToSql(), roleNames.ToSql(), UserHasPermission(Permission.User_Cross_Schools), SessionObject.GlobalInputs, false);

            while (dtAssessment.Rows.Count > _maxAssessments)
                dtAssessment.Rows.RemoveAt(dtAssessment.Rows.Count - 1);

            dtAssessment = Standpoint.Core.Classes.Encryption.EncryptDataTableColumn(dtAssessment, "TestID", "TestID_Encrypted");

            // We must sometimes truncate the test description so that it can fit in the area provided.
            // When truncated we add ellipsis (...).
            DataColumn listDescCol = dtAssessment.Columns.Add("ListDescription");
            DataColumn graphicDescCol = dtAssessment.Columns.Add("GraphicDescription");
            DataColumn dateEdited = dtAssessment.Columns.Add("DateEdited");
            DataColumn percentage = dtAssessment.Columns.Add("Percentage", typeof(Int32));

            const Int32 listChars = 47, graphicChars = 36;
            for (Int32 i = 0; i < dtAssessment.Rows.Count; i++)
            {
                DataRow row = dtAssessment.Rows[i];
                String name = row["TestName"] != DBNull.Value ? (String)row["TestName"] : "";
                String listDesc = (row["Description"] is String && !String.IsNullOrEmpty((String)row["Description"])) ? " - " + (String)row["Description"] : "";
                String graphicDesc = listDesc;

                if (name.Length + listDesc.Length > listChars)
                    listDesc = listDesc.Substring(0, Math.Max(0, listChars - name.Length - 3)) + "...";
                row[listDescCol] = listDesc;

                if (name.Length + graphicDesc.Length > graphicChars)
                    graphicDesc = graphicDesc.Substring(0, Math.Max(0, graphicChars - name.Length - 3)) + "...";
                row[graphicDescCol] = graphicDesc;

                // Stored proc sometimes returns the number of scored students as null.
                if (!(row["Scored"] is Int32))
                    row["Scored"] = 0;
                if (!(row["Seated"] is Int32))
                    row["Seated"] = 0;

                row[dateEdited] = ((DateTime)row["DateUpdated"]).ToShortDateString();

                // Add the percentage scored entry.
                Int32 scored = (Int32)row["Scored"];
                Int32 seated = (Int32)row["Seated"];
                row[percentage] = (seated <= 0) ? 0 : (Int32)Math.Round(100.0 * scored / seated);
            }

            // Add an empty row at the end if we have the maximum number of assessments.
            // This is used as a placeholder for the 'More Results...' line.
            if (dtAssessment.Rows.Count >= _maxAssessments)
            {
                DataRow newRow = dtAssessment.NewRow();
                dtAssessment.Rows.Add(newRow);
            }

            Boolean isEmpty = dtAssessment.Rows.Count == 0;

            lbxList.DataSource = dtAssessment;
            lbxList.DataBind();
            lbxList.Visible = !isEmpty;
            pnlListNoResults.Visible = isEmpty;

            lbxGraphic.DataSource = dtAssessment;
            lbxGraphic.DataBind();
            lbxGraphic.Visible = !isEmpty;
            pnlGraphicNoResults.Visible = isEmpty;
        }
        private void LoadAssessments(bool IsSecure)
        {
            string selectedGrade = cmbGrade.SelectedItem.Value;
            string selectedSubject = cmbSubject.SelectedItem.Value;
            string selectedTerm = cmbTerm.SelectedItem.Value;
            string selectedTestType = cmbTestType.SelectedItem.Value;
            string selectedStatus = (_category == "District" && !UserHasPermission(Permission.Edit_AssessmentDistrict_Unproofed)) ? "Proofed" : cmbStatus.SelectedItem.Value;

            Thinkgate.Base.Classes.CourseList courses = Thinkgate.Base.Classes.CourseMasterList.GetCurrCoursesForUser(SessionObject.LoggedInUser);

            //PLH - quick hack to make Class Assessment Tiles populate correctly. TODO: Change to better method
            if (_level == EntityTypes.Class)
            {
                Base.Classes.Class selectedClass = Base.Classes.Class.GetClassByID(_levelID);
                courses = CourseMasterList.GetCurrCourseForClass(selectedClass);
            }
            else
            {
                string gradeParm = selectedGrade == "All" ? null : selectedGrade;
                string subjectParm = selectedSubject == "All" ? null : selectedSubject;
                courses = courses.FilterByGradeAndSubject(gradeParm, subjectParm);
            }

            List<int> courseIDs = new List<int>();
            foreach (Base.Classes.Course c in courses)
            {
                courseIDs.Add(c.ID);
            }

            List<int> schoolIDs = new List<int>();
            if (_schoolID != 0)
            {
                schoolIDs.Add(_schoolID);
            }
            else
            {
                schoolIDs = (from s in SessionObject.LoggedInUser.Schools select s.Id).ToList();
            }

            List<string> roleNames = (from r in SessionObject.LoggedInUser.Roles select r.RoleName).ToList();

            DataTable dtAssessment = Base.Classes.Assessment.LoadAssessments(_category,
                                                                            _level.ToString(),
                                                                            _levelID,
                                                                            courseIDs.ToSql(),
                                                                            selectedTerm,
                                                                            selectedTestType,
                                                                            selectedStatus,
                                                                            schoolIDs.ToSql(),
                                                                            roleNames.ToSql(),
                                                                            UserHasPermission(Permission.User_Cross_Schools),
                                                                            SessionObject.GlobalInputs,
                                                                            false, IsSecure);
            if (dtAssessment.Rows.Count > 0)
            {
                dtAssessment = Cryptography.EncryptDataTableColumn(dtAssessment, "TestID", "TestID_Encrypted",
                    SessionObject.LoggedInUser.CipherKey);
                ListOfTests = new List<int>();
                foreach (DataRow row in dtAssessment.Rows)
                {
                    ListOfTests.Add(DataIntegrity.ConvertToInt(row["TestID"]));
                }
            }
            dtPrintDateAllTest_district = Thinkgate.Base.Classes.Assessment.GetPrintSecurity_Secutity_Status_AllTest("Assessment", "District", ListOfTests);
            dtPrintDateAllTest_school = Thinkgate.Base.Classes.Assessment.GetPrintSecurity_Secutity_Status_AllTest("school", _schoolId.ToString(), ListOfTests);
            foreach (DataRow dr in dtAssessment.Rows)
            {
                if (dr["Description"].ToString().Length > 36)
                {
                    dr["Description"] = dr["Description"].ToString().Remove(35, dr["Description"].ToString().Length - 36);
                }
            }


            rlbSecure.Visible = dtAssessment.Rows.Count > 0;

            if (!IsSecure)
            {
                lbx.Visible = dtAssessment.Rows.Count > 0;
                pnlNoResults.Visible = dtAssessment.Rows.Count == 0;
                if (dtAssessment.Rows.Count > 0)
                {
                    lbx.DataSource = dtAssessment;
                    lbx.DataBind();

                }

            }
            else
            {

                rlbSecure.Visible = dtAssessment.Rows.Count > 0;
                pnlNoResultsSecure.Visible = dtAssessment.Rows.Count == 0;
                if (dtAssessment.Rows.Count > 0)
                {
                    rlbSecure.DataSource = dtAssessment;
                    rlbSecure.DataBind();

                }

            }
        }