예제 #1
0
        private void SaveTemplate(object sender, EventArgs e)
        {
            if (Configure == null)
            {
                return;
            }
            Configure.SchoolYear       = cboSchoolYear.Text;
            Configure.Semester         = cboSemester.Text;
            Configure.SelSetConfigName = cboConfigure.Text;
            if (Configure.RefenceExamRecord != null && Configure.RefenceExamRecord.Name == "")
            {
                Configure.RefenceExamRecord = null;
            }
            foreach (ListViewItem item in lvwSubjectName.Items)
            {
                if (item.Checked)
                {
                    if (!Configure.PrintSubjectList.Contains(item.Text))
                    {
                        Configure.PrintSubjectList.Add(item.Text);
                    }
                }
                else
                {
                    if (Configure.PrintSubjectList.Contains(item.Text))
                    {
                        Configure.PrintSubjectList.Remove(item.Text);
                    }
                }
            }

            Configure.TagRank1TagList.Clear();
            Configure.RankFilterTagList.Clear();

            Configure.Encode();
            Configure.Save();

            #region 樣板設定檔記錄用

            // 記錄使用這選的專案
            List <DAO.UDT_ScoreConfig> uList = new List <DAO.UDT_ScoreConfig>();
            foreach (DAO.UDT_ScoreConfig conf in _UDTConfigList)
            {
                if (conf.Type == Global._UserConfTypeName)
                {
                    conf.Name = cboConfigure.Text;
                    uList.Add(conf);
                    break;
                }
            }

            if (uList.Count > 0)
            {
                DAO.UDTTransfer.UpdateConfigData(uList);
            }
            else
            {
                // 新增
                List <DAO.UDT_ScoreConfig> iList = new List <DAO.UDT_ScoreConfig>();
                DAO.UDT_ScoreConfig        conf  = new DAO.UDT_ScoreConfig();
                conf.Name         = cboConfigure.Text;
                conf.ProjectName  = Global._ProjectName;
                conf.Type         = Global._UserConfTypeName;
                conf.UDTTableName = Global._UDTTableName;
                iList.Add(conf);
                DAO.UDTTransfer.InsertConfigData(iList);
            }
            #endregion
        }
예제 #2
0
        public ConfigForm()
        {
            InitializeComponent();
            List <ExamRecord> exams = new List <ExamRecord>();
            BackgroundWorker  bkw   = new BackgroundWorker();

            bkw.DoWork += delegate
            {
                bkw.ReportProgress(1);
                //預設學年度學期
                _DefalutSchoolYear = "" + K12.Data.School.DefaultSchoolYear;
                _DefaultSemester   = "" + K12.Data.School.DefaultSemester;
                bkw.ReportProgress(10);

                // 檢查預設樣板是否存在
                _UDTConfigList = DAO.UDTTransfer.GetDefaultConfigNameListByTableName(Global._UDTTableName);
                // 沒有設定檔,建立預設設定檔
                if (_UDTConfigList.Count < 2)
                {
                    bkw.ReportProgress(20);
                    foreach (string name in Global.DefaultConfigNameList())
                    {
                        Configure cn = new Configure();
                        cn.Name       = name;
                        cn.SchoolYear = K12.Data.School.DefaultSchoolYear;
                        cn.Semester   = K12.Data.School.DefaultSemester;
                        DAO.UDT_ScoreConfig conf = new DAO.UDT_ScoreConfig();
                        conf.Name         = name;
                        conf.UDTTableName = Global._UDTTableName;
                        conf.ProjectName  = Global._ProjectName;
                        conf.Type         = Global._DefaultConfTypeName;
                        _UDTConfigList.Add(conf);

                        // 設預設樣板
                        switch (name)
                        {
                        case "班級學期成績單13科":
                            cn.Template = new Document(new MemoryStream(Properties.Resources.高中班級學期成績單樣版));

                            break;

                        case "班級學期成績單24科":
                            cn.Template = new Document(new MemoryStream(Properties.Resources.班級_學期成績單24科50學生));
                            break;
                        }

                        if (cn.Template == null)
                        {
                            cn.Template = new Document(new MemoryStream(Properties.Resources.高中班級學期成績單樣版));
                        }

                        try
                        {
                            List <string> fields = new List <string>(cn.Template.MailMerge.GetFieldNames());
                            cn.SubjectLimit = 0;
                            while (fields.Contains("科目名稱" + (cn.SubjectLimit + 1)))
                            {
                                cn.SubjectLimit++;
                            }
                            cn.StudentLimit = 0;
                            while (fields.Contains("姓名" + (cn.StudentLimit + 1)))
                            {
                                cn.StudentLimit++;
                            }
                        }
                        catch (Exception ex)
                        { }

                        cn.Encode();
                        cn.Save();
                    }
                    if (_UDTConfigList.Count > 0)
                    {
                        DAO.UDTTransfer.InsertConfigData(_UDTConfigList);
                    }
                }
                bkw.ReportProgress(40);
                _Configures = _AccessHelper.Select <Configure>();
                //學生類別清單
                _TagConfigRecords = K12.Data.TagConfig.SelectByCategory(TagCategory.Student);
                #region 整理所有試別對應科目

                bkw.ReportProgress(60);
                // 取得班級學生(一般生)
                List <string> ClassStudentIDList = DAO.QueryData.GetClassStudentIDByClassID(K12.Presentation.NLDPanels.Class.SelectedSource);
                AccessHelper  accessHelper       = new AccessHelper();
                List <SmartSchool.Customization.Data.StudentRecord> StudentRecList = accessHelper.StudentHelper.GetStudents(ClassStudentIDList);
                bkw.ReportProgress(70);
                // 放入學生學期成績
                accessHelper.StudentHelper.FillSemesterSubjectScore(true, StudentRecList);
                bkw.ReportProgress(80);
                // 取得科目名稱
                foreach (SmartSchool.Customization.Data.StudentRecord stud in StudentRecList)
                {
                    foreach (SemesterSubjectScoreInfo ss in stud.SemesterSubjectScoreList)
                    {
                        string key = ss.SchoolYear + "^^" + ss.Semester;
                        if (!_ExamSubjectFull.ContainsKey(key))
                        {
                            _ExamSubjectFull.Add(key, new List <string>());
                        }
                        if (!_ExamSubjectFull[key].Contains(ss.Subject))
                        {
                            _ExamSubjectFull[key].Add(ss.Subject);
                        }
                    }
                }

                bkw.ReportProgress(90);
                foreach (var list in _ExamSubjectFull.Values)
                {
                    #region 排序
                    //list.Sort(new StringComparer("國文","國語文"
                    //                , "英文", "英語文"
                    //                , "數學"
                    //                , "理化"
                    //                , "生物"
                    //                , "社會"
                    //                , "物理"
                    //                , "化學"
                    //                , "歷史"
                    //                , "地理"
                    //                , "公民"));
                    list.Sort(new StringComparer(Utility.GetSubjectOrder().ToArray()));
                    #endregion
                }
                #endregion

                bkw.ReportProgress(100);
            };
            bkw.WorkerReportsProgress = true;
            bkw.ProgressChanged      += delegate(object sender, ProgressChangedEventArgs e)
            {
                circularProgress1.Value = e.ProgressPercentage;
            };
            bkw.RunWorkerCompleted += delegate
            {
                if (Configure == null)
                {
                    Configure = new Configure();
                }

                cboConfigure.Items.Clear();
                foreach (var item in _Configures)
                {
                    cboConfigure.Items.Add(item);
                }
                cboConfigure.Items.Add(new Configure()
                {
                    Name = "新增"
                });
                int i;
                if (int.TryParse(_DefalutSchoolYear, out i))
                {
                    for (int j = 0; j < 5; j++)
                    {
                        cboSchoolYear.Items.Add("" + (i - j));
                    }
                }
                cboSemester.Items.Add("1");
                cboSemester.Items.Add("2");

                List <string> prefix = new List <string>();
                List <string> tag    = new List <string>();
                foreach (var item in _TagConfigRecords)
                {
                    if (item.Prefix != "")
                    {
                        if (!prefix.Contains(item.Prefix))
                        {
                            prefix.Add(item.Prefix);
                        }
                    }
                    else
                    {
                        tag.Add(item.Name);
                    }
                }

                circularProgress1.Hide();
                if (_Configures.Count > 0)
                {
                    string userSelectConfigName = "";
                    // 檢查畫面上是否有使用者選的
                    foreach (DAO.UDT_ScoreConfig conf in _UDTConfigList)
                    {
                        if (conf.Type == Global._UserConfTypeName)
                        {
                            userSelectConfigName = conf.Name;
                            break;
                        }
                    }

                    cboConfigure.Text = userSelectConfigName;
                }
                else
                {
                    cboConfigure.SelectedIndex = -1;
                }
            };
            bkw.RunWorkerAsync();
        }