コード例 #1
0
        public ActionResult GetSectionStatus(string itemNumber, string yrq)
        {
            ScheduleManager manager = new ScheduleManager();

            var model = new ClassStatusModel();

            var sectMod = manager.GetSectionInformation(itemNumber, yrq);

            //start

            string ayr = manager.GetAcademicYear(yrq);
            string sess = manager.GetQuarterSession(yrq);

            WTSClass post = new WTSClass();
            post.Url = "https://transact.edcc.edu/cgi-bin/rq230.exe";
            post.PostItems.Add("item", itemNumber);
            post.PostItems.Add("returnurl", "");
            post.PostItems.Add("request", "classchd");
            post.PostItems.Add("ayr", ayr);
            post.PostItems.Add("sess", sess);
            post.Type = WTSClass.PostTypeEnum.Post;
            string result = post.Post();
            DateTime processTime = DateTime.Now;
            HttpStatusCode statusCode = post.StatusCode;

            string classStatus = "";
            if (statusCode == HttpStatusCode.OK && result.IndexOf("EDMONDS COMMUNITY COLLEGE") != -1)
            {
                string courseId;
                string sectionNumber;

                int courseIdHeaderIndex = result.IndexOf("Course Id");
                int couseIdTextIndex = result.IndexOf(": ", courseIdHeaderIndex) + 2;

                StringBuilder builder = new StringBuilder();

                for (int i = couseIdTextIndex; result[i] != ' '; i++)
                {
                    builder.Append(result[i]);
                }
                courseId = builder.ToString();
                builder.Length = 0;

                int sectionNumberHeaderIndex = result.IndexOf("Sect", couseIdTextIndex);
                int sectionNumberTextIndex = result.IndexOf(": ", sectionNumberHeaderIndex) + 2;

                for (int i = sectionNumberTextIndex; result[i] != '<'; i++)
                {
                    builder.Append(result[i]);
                }
                sectionNumber = builder.ToString();
                builder.Length = 0;

                int statusHeaderIndex = result.IndexOf("Class Status", sectionNumberTextIndex);
                int statusTextIndex = result.IndexOf(": ", statusHeaderIndex) + 2;

                for (int i = statusTextIndex; result[i] != ' '; i++)
                {
                    builder.Append(result[i]);
                }
                classStatus = builder.ToString();

                if (classStatus == "OPEN")
                {
                    string openSeats;

                    int openSeatsHeaderIndex = result.IndexOf("Seats Available", statusTextIndex);
                    int openSeatsTextIndex = result.IndexOf(": ", openSeatsHeaderIndex) + 2;

                    builder.Length = 0;
                    for (int i = openSeatsTextIndex; result[i] != '<'; i++)
                    {
                        builder.Append(result[i]);
                    }
                    openSeats = builder.ToString();
                    model.CurrentStatus = "Open";
                    //lblStatus.CssClass = "ClassStatusOpen";
                    model.ClassOpen = true;
                    model.OpenSeats = (int.Parse(openSeats)).ToString();

                    model.ServerDown = false;
                }
                else
                {

                    model.CurrentStatus = "Closed";
                    model.ClassOpen = false;
                    model.ServerDown = false;
                }

                model.CourseID = courseId;
                model.Section = sectionNumber;
                model.StatusDateTime = processTime.ToString("G");
                model.ServerDown = false;
            }
            else
            {
                //
                //the server is down oh no!
                model.ServerDown = true;
            }
            //end

            model.CourseID = sectMod.CourseID;
            model.CourseTitle = sectMod.CourseTitle;
            model.AllowOnlineReg = sectMod.OnlineRegistration;
            model.ItemNumber = sectMod.ItemNumber;

            //Added waitlist info to status popup.  5/15/13  Robert.Pan
            //NOTE: This code gets built into ClassSchedule.dll
            string szWaitListCount = "0", szWaitListCapacity = "0";

            //Remove conditional as of 6/5/13 as requested.  Robert.Pan
            //if ((classStatus.ToUpper() != "OPEN") && (classStatus != ""))
            //{
                string dbConnectionString = "Server=odie; Database=Student; Trusted_Connection=True;";
                string szClassID = itemNumber + yrq;

                SqlConnection myConnection = new SqlConnection(dbConnectionString);
                myConnection.Open();
                SqlCommand cmd = new SqlCommand("StudentWaitlistCount_sp", myConnection);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter ClassID = cmd.Parameters.Add("@ClassID", SqlDbType.NVarChar);
                ClassID.Direction = ParameterDirection.Input;
                ClassID.Value = szClassID;
                SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                if (dr.Read())
                {
                    szWaitListCount = dr["WaitListCount"].ToString();
                    szWaitListCapacity = dr["WaitListCapacity"].ToString();
                }
                myConnection.Close();   //Not needed because of CommandBehavior.CloseConnection - just being paranoid.

                model.debug = szClassID;
            //}
            model.WaitListCount = szWaitListCount;
            model.WaitListCapacity = szWaitListCapacity;
            //End added waitlist info.

            return PartialView("_SectionStatusView", model);
        }