/// <summary>
        /// 取得學生清單
        /// </summary>
        public Dictionary <string, OnlineStudent> GetStuentList(Connection me, Dictionary <string, OnlineSCJoin> SCJoinDic)
        {
            Envelope rsp      = me.SendRequest("_.GetStudentsCanChoose", new Envelope(RunService.GetRequest(null, null)));
            XElement students = XElement.Parse(rsp.Body.XmlString);

            Dictionary <string, OnlineStudent> StudentDic = new Dictionary <string, OnlineStudent>();

            foreach (XElement stud in students.Elements("Student"))
            {
                OnlineStudent os = new OnlineStudent(stud);
                os.School = me.AccessPoint.Name;

                if (!StudentDic.ContainsKey(os.Id))
                {
                    StudentDic.Add(os.Id, os);
                }

                //是否有社團參與記錄
                if (SCJoinDic.ContainsKey(os.Id))
                {
                    os.原有社團 = SCJoinDic[os.Id];
                }
            }
            return(StudentDic);
        }
        /// <summary>
        /// 學生是否符合本社團資格
        /// </summary>
        public string EligibilityCheck(OnlineStudent oStudent)
        {
            List <string> list = new List <string>();

            string message = "";

            //科別是否符合
            message = CheckDept(oStudent);
            if (!string.IsNullOrEmpty(message))
            {
                list.Add(message);
            }

            //男女是否符合
            message = CheckGender(oStudent);
            if (!string.IsNullOrEmpty(message))
            {
                list.Add(message);
            }

            //人數是否已達上限
            message = CheckLimit(oStudent);
            if (!string.IsNullOrEmpty(message))
            {
                list.Add(message);
            }

            return(string.Join(",", list));
        }
        /// <summary>
        /// 開始進行志願序資料整合
        /// </summary>
        public void 開始進行志願序資料整合()
        {
            //整理志願序資料
            foreach (OnlineVolunteer each in VolunteerList)
            {
                if (StudentDic.ContainsKey(each.RefStudentId))
                {
                    //學生
                    OnlineStudent OnlineStud = StudentDic[each.RefStudentId];

                    if (!string.IsNullOrEmpty(each.Content))
                    {
                        XmlElement xml        = DSXmlHelper.LoadXml(each.Content);
                        int        ClubNumber = 1;
                        foreach (XmlElement node in xml.SelectNodes("Club"))
                        {
                            if (node.GetAttribute("Index") == ClubNumber.ToString())
                            {
                                string clubID = node.GetAttribute("Ref_Club_ID");
                                if (ClubDic.ContainsKey(clubID))
                                {
                                    //社團
                                    OnlineClub OnlineClub = ClubDic[clubID];
                                    if (!OnlineStud.VolunteerList.ContainsKey(ClubNumber))
                                    {
                                        OnlineStud.VolunteerList.Add(ClubNumber, OnlineClub);
                                    }
                                }
                            }
                            ClubNumber++;
                        }
                    }
                }
            }
        }
        private int SortMergeList(OnlineStudent s1, OnlineStudent s2)
        {
            string ss1 = s1.SeatNo.PadLeft(3, '0');
            string ss2 = s2.SeatNo.PadLeft(3, '0');

            return(ss1.CompareTo(ss2));
        }
 /// <summary>
 /// 檢查科別
 /// </summary>
 private string CheckDept(OnlineStudent oStudent)
 {
     if (DeptRestrict.Count > 0)                        //無科別限制
     {
         if (!DeptRestrict.Contains(oStudent.DeptName)) //不包含在內,即為科別不符
         {
             return("科別不符");
         }
     }
     return("");
 }
 /// <summary>
 /// 檢查男女生
 /// </summary>
 private string CheckGender(OnlineStudent oStudent)
 {
     if (!string.IsNullOrEmpty(GenderRestrict))
     {
         if (oStudent.Gender != GenderRestrict)
         {
             return("男女性別不符");
         }
     }
     return("");
 }
 /// <summary>
 /// 減少人數
 /// </summary>
 public void Decrease(OnlineStudent student)
 {
     if (student.GradeYear == "1" || student.GradeYear == "4" || student.GradeYear == "7" || student.GradeYear == "10")
     {
         Grade1.SetDecrease(student.School, 1);
     }
     else if (student.GradeYear == "2" || student.GradeYear == "5" || student.GradeYear == "8" || student.GradeYear == "11")
     {
         Grade2.SetDecrease(student.School, 1);
     }
     else if (student.GradeYear == "3" || student.GradeYear == "6" || student.GradeYear == "9" || student.GradeYear == "12")
     {
         Grade3.SetDecrease(student.School, 1);
     }
     NowStudentCount--;
 }
        /// <summary>
        /// 檢查人數上限
        /// </summary>
        private string CheckLimit(OnlineStudent oStudent)
        {
            if (tool.CheckValue(Limit))
            {
                if (int.Parse(Limit) <= NowStudentCount)
                {
                    return("總人數已達上限");
                }
            }

            string message = oStudent.GradeYear + "年級人數已達上限";

            if (oStudent.GradeYear == "1" || oStudent.GradeYear == "4" || oStudent.GradeYear == "7" || oStudent.GradeYear == "10")
            {
                if (tool.CheckValue(Grade1Limit))
                {
                    if (int.Parse(Grade1Limit) <= Now_Grade1Limit)
                    {
                        return(message);
                    }
                }
            }
            else if (oStudent.GradeYear == "2" || oStudent.GradeYear == "5" || oStudent.GradeYear == "8" || oStudent.GradeYear == "11")
            {
                if (tool.CheckValue(Grade2Limit))
                {
                    if (int.Parse(Grade2Limit) <= Now_Grade2Limit)
                    {
                        return(message);
                    }
                }
            }
            else if (oStudent.GradeYear == "3" || oStudent.GradeYear == "6" || oStudent.GradeYear == "9" || oStudent.GradeYear == "12")
            {
                if (tool.CheckValue(Grade3Limit))
                {
                    if (int.Parse(Grade3Limit) <= Now_Grade3Limit)
                    {
                        return(message);
                    }
                }
            }

            return("");
        }
Пример #9
0
 /// <summary>
 /// 學生亂數排序
 /// </summary>
 private int SortStudent(OnlineStudent os1, OnlineStudent os2)
 {
     return(os1.Random_Number.CompareTo(os2.Random_Number));
 }
Пример #10
0
        /// <summary>
        /// 進行學生的志願分配
        /// </summary>
        private void VolunteersDistributor(OnlineStudent oStudent, int Number, bool IsStep1)
        {
            string message = "";

            if (oStudent.VolunteerList.Count != 0)
            {
                //如果學生身上有此志願,無此志願則視為選社失敗
                if (oStudent.VolunteerList.ContainsKey(Number))
                {
                    OnlineClub oc = oStudent.VolunteerList[Number];
                    if (IsStep1) //高優先權
                    {
                        if (oc.ClubName == oStudent.LastClubName)
                        {
                            #region 如果共同資源包含本社團

                            if (MergerClubDic.ContainsKey(oc.ClubName))
                            {
                                OnlineMergerClub Mclub = MergerClubDic[oc.ClubName];

                                //不符資格,將帶有錯誤訊息
                                oStudent.ErrorMessage = Mclub.EligibilityCheck(oStudent);

                                //符合資格
                                if (string.IsNullOrEmpty(oStudent.ErrorMessage))
                                {
                                    //符合資格
                                    oStudent.SuccessSetupClub(Mclub);

                                    LogAssignRecord lar = new LogAssignRecord();
                                    if (string.IsNullOrEmpty(LoginSchoolDic[oStudent.School]))
                                    {
                                        lar.部別 = oStudent.School + "(" + LoginSchoolDic[oStudent.School] + ")";
                                    }
                                    else
                                    {
                                        lar.部別 = oStudent.School;
                                    }
                                    lar.班級   = oStudent.ClassName;
                                    lar.姓名   = oStudent.Name;
                                    lar.座號   = oStudent.SeatNo;
                                    lar.志願   = Number.ToString();
                                    lar.社團名稱 = Mclub.ClubName;
                                    lar.其它   = "(高優先學生)";
                                    LogDic.Add(lar);
                                }
                            }

                            #endregion
                        }
                    }
                    else //第二優先權
                    {
                        #region 如果共同資源包含本社團

                        if (MergerClubDic.ContainsKey(oc.ClubName))
                        {
                            OnlineMergerClub Mclub = MergerClubDic[oc.ClubName];

                            //不符資格,將帶有錯誤訊息
                            oStudent.ErrorMessage = Mclub.EligibilityCheck(oStudent);

                            //符合資格
                            if (string.IsNullOrEmpty(oStudent.ErrorMessage))
                            {
                                //符合資格
                                oStudent.SuccessSetupClub(Mclub);

                                LogAssignRecord lar = new LogAssignRecord();

                                lar.部別   = GetSchoolName(oStudent.School);
                                lar.班級   = oStudent.ClassName;
                                lar.姓名   = oStudent.Name;
                                lar.座號   = oStudent.SeatNo;
                                lar.志願   = Number.ToString();
                                lar.社團名稱 = Mclub.ClubName;
                                lar.其它   = "";
                                LogDic.Add(lar);
                            }
                        }

                        #endregion
                    }
                }
            }
        }