public override void InitializeExport(SmartSchool.API.PlugIn.Export.ExportWizard wizard)
        {
            var 匯出代碼   = new SmartSchool.API.PlugIn.VirtualRadioButton("匯出校系代碼", true);
            var 匯出校系名稱 = new SmartSchool.API.PlugIn.VirtualRadioButton("匯出校系名稱", false);

            wizard.Options.Add(匯出代碼);
            wizard.Options.Add(匯出校系名稱);
            int         wishLimint = 5;
            List <分發設定> list       = _AccessHelper.Select <分發設定>();

            if (list.Count > 0)
            {
                wishLimint = list[0].志願上限;
            }
            for (int i = 1; i <= wishLimint; i++)
            {
                wizard.ExportableFields.Add("第" + i + "志願");
            }
            wizard.PackageLimit   = 200;
            wizard.ExportPackage += delegate(object sender, SmartSchool.API.PlugIn.Export.ExportPackageEventArgs e)
            {
                Dictionary <string, SmartSchool.API.PlugIn.RowData> dicRowDatas = new Dictionary <string, SmartSchool.API.PlugIn.RowData>();
                foreach (var refStudentID in e.List)
                {
                    SmartSchool.API.PlugIn.RowData rowData = new SmartSchool.API.PlugIn.RowData();
                    rowData.ID = refStudentID;
                    dicRowDatas.Add(refStudentID, rowData);
                    e.Items.Add(rowData);
                }
                FISCA.UDT.Condition.InCondition condition = new FISCA.UDT.Condition.InCondition();
                condition.Field = "RefStudentID";
                condition.Values.AddRange(e.List);
                var datas = _AccessHelper.Select <推甄學生資料>(condition);
                datas.取得志願組();
                foreach (var item in datas)
                {
                    int index = 1;
                    foreach (var wish in item.志願組)
                    {
                        dicRowDatas[item.StudentRecord.ID].Add("第" + index + "志願", (wish.校系資料 == null ? "校系資料已遺失" : (匯出代碼.Checked ? wish.校系資料.代碼 : (wish.校系資料.校名 + " " + wish.校系資料.系名))));
                        index++;
                    }
                }
                foreach (var item in dicRowDatas.Values)
                {
                    for (int i = 1; i <= wishLimint; i++)
                    {
                        if (!item.ContainsKey("第" + i + "志願"))
                        {
                            item.Add("第" + i + "志願", "");
                        }
                    }
                }
            };
        }
Ejemplo n.º 2
0
    public static void 取得志願組(this IEnumerable <推甄學生資料> items)
    {
        FISCA.UDT.Condition.InCondition RefStudentIDCondition = new FISCA.UDT.Condition.InCondition()
        {
            Field = "RefStudentID"
        };
        Dictionary <推甄學生資料, List <志願> > dicNewList = new Dictionary <推甄學生資料, List <志願> >();

        foreach (var item in items)
        {
            RefStudentIDCondition.Values.Add(item.StudentRecord.ID);
            if (!dicNewList.ContainsKey(item))
            {
                dicNewList.Add(item, new List <志願>());
            }
        }
        if (RefStudentIDCondition.Values.Count != 0)
        {
            foreach (var wish in new AccessHelper().Select <志願>(RefStudentIDCondition))
            {
                foreach (var item in items)
                {
                    if (item.StudentRecord.ID == wish.StudentRecord.ID)
                    {
                        dicNewList[item].Add(wish);
                        break;
                    }
                }
            }
        }
        foreach (var item in items)
        {
            dicNewList[item].Sort(delegate(志願 o1, 志願 o2)
            {
                return(o1.志願排序.CompareTo(o2.志願排序));
            });
            item.填入志願組(dicNewList[item].AsReadOnly());
        }
    }
Ejemplo n.º 3
0
        public override void InitializeImport(SmartSchool.API.PlugIn.Import.ImportWizard wizard)
        {
            List <推甄學生資料> importRecords = new List <推甄學生資料>();
            List <string> validatedID   = new List <string>();

            //可以匯入這麼多欄位喔~
            wizard.ImportableFields.AddRange("排名", "總分", "成績內容", "分發校系代碼", "分發學校", "分發科系", "確定分發結果", "組別", "梯次", "備註");
            //開始驗證前先收集一些資訊於驗證過程中使用
            wizard.ValidateStart += delegate(object sender, SmartSchool.API.PlugIn.Import.ValidateStartEventArgs e)
            {
                FISCA.UDT.Condition.InCondition condition = new FISCA.UDT.Condition.InCondition();
                condition.Field = "RefStudentID";
                condition.Values.AddRange(e.List);
                importRecords = new AccessHelper().Select <推甄學生資料>(condition);
                importRecords.取得志願組();
            };
            //每一列資料會觸發一次驗證
            wizard.ValidateRow += delegate(object sender, SmartSchool.API.PlugIn.Import.ValidateRowEventArgs e)
            {
                if (validatedID.Contains(e.Data.ID))
                {
                    e.ErrorMessage = "同一學生不應出現兩筆資料。";
                }
                else
                {
                    #region 驗證各欄位資料
                    validatedID.Add(e.Data.ID);
                    foreach (var field in e.SelectFields)
                    {
                        string value = e.Data[field];
                        switch (field)
                        {
                        case "排名":
                            int i = 0;
                            if (!int.TryParse(value, out i) || i <= 0)
                            {
                                e.ErrorFields.Add(field, "必需是大於0之整數。");
                            }
                            break;

                        case "總分":
                            decimal d;
                            if (e.Data[field] != "" && (!decimal.TryParse(value, out d) || d < 0m))
                            {
                                e.ErrorFields.Add(field, "必需為空白或大於等於0之數字。");
                            }
                            break;

                        case "成績內容":
                            break;

                        case "分發校系代碼":
                            if (value != "")
                            {
                                if (!校系資料庫.Items.ContainsKey(value))
                                {
                                    e.ErrorFields.Add(field, "查無此校系代碼。");
                                }
                                else
                                {
                                    bool match = false;
                                    foreach (var data in importRecords)
                                    {
                                        if (data.StudentRecord.ID == e.Data.ID)
                                        {
                                            foreach (var wish in data.志願組)
                                            {
                                                if (wish.校系資料.代碼 == value)
                                                {
                                                    match = true;
                                                    break;
                                                }
                                            }
                                            break;
                                        }
                                    }
                                    if (!match)
                                    {
                                        e.WarningFields.Add(field, "此分發結果不在該學生的志願中,可能導致統計數字錯誤。");
                                    }
                                }
                            }
                            break;

                        case "分發學校":
                            if (!e.SelectFields.Contains("分發校系代碼"))
                            {
                                e.ErrorFields.Add(field, "分發結果必須以校系代碼為主,無法單獨由分發學校判斷。");
                            }
                            else
                            {
                                if (校系資料庫.Items.ContainsKey(e.Data["分發校系代碼"]) && 校系資料庫.Items[e.Data["分發校系代碼"]].校名 != value)
                                {
                                    e.ErrorFields.Add(field, "校名與校系代碼不相同。");
                                }
                            }
                            break;

                        case "分發科系":
                            if (!e.SelectFields.Contains("分發校系代碼"))
                            {
                                e.ErrorFields.Add(field, "分發結果必須以校系代碼為主,無法單獨由分發科系判斷。");
                            }
                            else
                            {
                                if (校系資料庫.Items.ContainsKey(e.Data["分發校系代碼"]) && 校系資料庫.Items[e.Data["分發校系代碼"]].系名 != value)
                                {
                                    e.ErrorFields.Add(field, "系名與校系代碼不相同。");
                                }
                            }
                            break;

                        case "確定分發結果":
                            if (value != "" && value != "是" && value != "否" && value.ToLower() != "true" && value.ToLower() != "false")
                            {
                                e.ErrorFields.Add(field, "輸入值不允許,請輸入是或否,若保留空白則視為否。");
                            }
                            break;

                        case "梯次":
                            int j = 0;
                            if (value != "" && !int.TryParse(value, out j) || j <= 0)
                            {
                                e.ErrorFields.Add(field, "必需是大於0之整數或空白。");
                            }
                            break;

                        case "備註":
                            break;

                        default:
                            break;
                        }
                    }
                    #endregion
                }
            };
            //匯入會一次切一個package做批次,每次只處理package的資料匯入即可
            wizard.ImportPackage += delegate(object sender, SmartSchool.API.PlugIn.Import.ImportPackageEventArgs e)
            {
                List <推甄學生資料> importPackage = new List <推甄學生資料>();
                foreach (var rowData in e.Items)
                {
                    推甄學生資料 targetData = null;
                    foreach (var rec in importRecords)
                    {
                        if (rec.StudentRecord.ID == rowData.ID)
                        {
                            targetData = rec;
                            break;
                        }
                    }
                    if (targetData == null)
                    {
                        targetData = new 推甄學生資料();
                        targetData.StudentRecord = K12.Data.Student.SelectByID(rowData.ID);
                    }
                    importPackage.Add(targetData);
                    #region 填入資料
                    foreach (var field in e.ImportFields)
                    {
                        string value = rowData[field];
                        switch (field)
                        {
                        case "排名":
                            targetData.排名 = int.Parse(value);
                            break;

                        case "總分":
                            targetData.總分 = (value == "" ? null : new decimal?(decimal.Parse(value)));
                            break;

                        case "成績內容":
                            targetData.成績內容 = value;
                            break;

                        case "分發校系代碼":
                            targetData.分發結果 = (value == "" ? null : 校系資料庫.Items[value]);
                            break;

                        case "分發學校":
                            break;

                        case "分發科系":
                            break;

                        case "確定分發結果":
                            targetData.確定分發結果 = ((value == "" || value == "否" || value.ToLower() == "false") ? false : true);
                            break;

                        case "組別":
                            targetData.組別 = value;
                            break;

                        case "梯次":
                            targetData.梯次 = (value == "" ? null : new int?(int.Parse(value)));
                            break;

                        case "備註":
                            targetData.備註 = value;
                            break;

                        default:
                            break;
                        }
                    }
                    #endregion
                }
                importPackage.SaveAll();
            };
        }
Ejemplo n.º 4
0
        public override void InitializeExport(SmartSchool.API.PlugIn.Export.ExportWizard wizard)
        {
            wizard.ExportableFields.AddRange("身分證號", "排名", "總分", "成績內容", "分發校系代碼", "分發學校", "分發科系", "確定分發結果", "組別", "梯次", "備註");
            wizard.PackageLimit   = 200;
            wizard.ExportPackage += delegate(object sender, SmartSchool.API.PlugIn.Export.ExportPackageEventArgs e)
            {
                FISCA.UDT.Condition.InCondition condition = new FISCA.UDT.Condition.InCondition();
                condition.Field = "RefStudentID";
                condition.Values.AddRange(e.List);
                var datas = _AccessHelper.Select <推甄學生資料>(condition);
                foreach (var refStudentID in e.List)
                {
                    SmartSchool.API.PlugIn.RowData rowData = new SmartSchool.API.PlugIn.RowData();
                    rowData.ID = refStudentID;
                    #region 寫入預設值
                    foreach (var field in e.ExportFields)
                    {
                        switch (field)
                        {
                        case "排名":
                            rowData.Add(field, "");
                            break;

                        case "總分":
                            rowData.Add(field, "");
                            break;

                        case "身分證號":
                            rowData.Add(field, "");
                            break;

                        case "成績內容":
                            rowData.Add(field, "");
                            break;

                        case "分發校系代碼":
                            rowData.Add(field, "");
                            break;

                        case "分發學校":
                            rowData.Add(field, "");
                            break;

                        case "分發科系":
                            rowData.Add(field, "");
                            break;

                        case "確定分發結果":
                            rowData.Add(field, "");
                            break;

                        case "組別":
                            rowData.Add(field, "");
                            break;

                        case "梯次":
                            rowData.Add(field, "");
                            break;

                        case "備註":
                            rowData.Add(field, "");
                            break;
                        }
                    }
                    #endregion
                    foreach (var item in datas)
                    {
                        if (item.StudentRecord.ID == refStudentID)
                        {
                            #region 填入真值
                            foreach (var field in e.ExportFields)
                            {
                                switch (field)
                                {
                                case "排名":
                                    rowData[field] = "" + item.排名;
                                    break;

                                case "總分":
                                    rowData[field] = "" + item.總分;
                                    break;

                                case "身分證號":
                                    rowData[field] = item.StudentRecord.IDNumber;
                                    break;

                                case "成績內容":
                                    rowData[field] = item.成績內容;
                                    break;

                                case "分發校系代碼":
                                    rowData[field] = (item.分發結果 == null ? "" : item.分發結果.代碼);
                                    break;

                                case "分發學校":
                                    rowData[field] = (item.分發結果 == null ? "" : item.分發結果.校名);
                                    break;

                                case "分發科系":
                                    rowData[field] = (item.分發結果 == null ? "" : item.分發結果.系名);
                                    break;

                                case "確定分發結果":
                                    rowData[field] = (item.確定分發結果 ? "是" : "否");
                                    break;

                                case "組別":
                                    rowData[field] = "" + item.組別;
                                    break;

                                case "梯次":
                                    rowData[field] = "" + item.梯次;
                                    break;

                                case "備註":
                                    rowData[field] = item.備註;
                                    break;
                                }
                            }
                            #endregion
                            break;
                        }
                    }
                    e.Items.Add(rowData);
                }
            };
        }