예제 #1
0
        private void cbxEventItem_SelectedIndexChanged(object sender, EventArgs e)
        {
            lblTeamType.Text = "";
            // 檢查所選的是團體或個人賽
            _selectedEvent = null;
            SetLblPlayerCount(0);
            SetLblTeamCount(0);

            if (_eventItemEventDict.ContainsKey(cbxEventItem.Text))
            {
                _selectedEvent = _eventItemEventDict[cbxEventItem.Text];
            }

            bool isTeamEnable = true;

            if (_selectedEvent != null)
            {
                _selectedTeamUID = "";
                if (_selectedEvent.IsTeam)
                {
                    lblTeamType.Text = "團體賽";
                }
                else
                {
                    lblTeamType.Text = "個人賽";
                    isTeamEnable     = false;
                }
            }

            SetTeamFuncEnable(isTeamEnable);

            LoadSearch();
        }
        private void btnEdit_Click(object sender, EventArgs e)
        {
            if (dgData.SelectedRows.Count == 0)
            {
                FISCA.Presentation.Controls.MsgBox.Show("請選擇項目");
            }
            else
            {
                SetEditButtonEnable(false);
                UDT.Events   selectEvent = dgData.SelectedRows[0].Tag as UDT.Events;
                frmSubEvents editForm    = new frmSubEvents();
                editForm.SetEvents(selectEvent);
                editForm.SetIsAddMode(false);
                editForm.SetGameTypesDict(_GameTypesDict);
                editForm.SetGroupTypesDict(_GroupTypesDict);
                editForm.SetScoreTypesDict(_ScoreTypesDict);

                if (editForm.ShowDialog() == DialogResult.OK)
                {
                    // 資料重整
                    _bgw.RunWorkerAsync();
                }
                else
                {
                    SetEditButtonEnable(true);
                }
            }
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            UDT.Events addEvents = null;
            SetEditButtonEnable(false);
            // 因為之後使用複製功能,樣板先不用
            //frmEventsTemplateAdd1 feta = new frmEventsTemplateAdd1();
            //if (feta.ShowDialog() == DialogResult.OK)
            //{
            //    addEvents = feta.GetEvents();
            //}

            frmSubEvents addForm = new frmSubEvents();

            addForm.SetEvents(addEvents);
            addForm.SetIsAddMode(true);
            addForm.SetGameTypesDict(_GameTypesDict);
            addForm.SetGroupTypesDict(_GroupTypesDict);
            addForm.SetScoreTypesDict(_ScoreTypesDict);
            if (addForm.ShowDialog() == DialogResult.OK)
            {
                addEvents = addForm.GetEventData();
                // 資料重整
                _bgw.RunWorkerAsync();
            }
            else
            {
                SetEditButtonEnable(true);
            }
        }
예제 #4
0
 private UDT.Events CopyItem(UDT.Events sourceEvent, int NewSchoolYear, string Category, string Name, int GroupTypeID)
 {
     UDT.Events evItem = new UDT.Events();
     evItem.SchoolYear     = NewSchoolYear;
     evItem.Category       = Category;
     evItem.Name           = Name;
     evItem.RefGroupTypeId = GroupTypeID;
     return(evItem);
 }
 public void SetEvents(UDT.Events data)
 {
     if (data == null)
     {
         _EventData = new UDT.Events();
     }
     else
     {
         _EventData = data;
     }
 }
예제 #6
0
 private void cbxEventItem_SelectedIndexChanged(object sender, EventArgs e)
 {
     cbxEventItem.Enabled = false;
     // 取得畫面所選 event uid
     _selectedEvent = null;
     if (_EventItemDict.ContainsKey(cbxEventItem.Text))
     {
         _selectedEvent = _EventItemDict[cbxEventItem.Text];
         _bgwLoadPlayer.RunWorkerAsync();
     }
 }
예제 #7
0
        private void btnCopy_Click(object sender, EventArgs e)
        {
            btnCopy.Enabled = false;
            _TargetEventsList.Clear();

            foreach (DataGridViewRow drv in dgTarget.Rows)
            {
                UDT.Events ev = drv.Tag as UDT.Events;
                if (ev != null)
                {
                    _TargetEventsList.Add(ev);
                }
            }

            _bgwSaveData.RunWorkerAsync();
        }
        private void btnDel_Click(object sender, EventArgs e)
        {
            if (dgData.SelectedRows.Count == 0)
            {
                FISCA.Presentation.Controls.MsgBox.Show("請選擇項目");
            }
            else
            {
                SetEditButtonEnable(false);
                UDT.Events selectEvent = dgData.SelectedRows[0].Tag as UDT.Events;

                if (FISCA.Presentation.Controls.MsgBox.Show("當選「是」將刪除競賽項目與相關聯成績,請問是否刪除?", "刪除競賽項目", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                    selectEvent.Deleted = true;
                    selectEvent.Save();
                    // 資料重整
                    _bgw.RunWorkerAsync();
                }
            }
        }
 private void btnOk_Click(object sender, EventArgs e)
 {
     if (dgData.SelectedRows.Count == 0)
     {
         FISCA.Presentation.Controls.MsgBox.Show("請選擇項目");
         return;
     }
     else
     {
         UDT.EventTemplates temp = dgData.SelectedRows[0].Tag as UDT.EventTemplates;
         _AddEvents                   = new UDT.Events();
         _AddEvents.Category          = temp.Category;
         _AddEvents.Name              = temp.Name;
         _AddEvents.IsTeam            = temp.IsTeam;
         _AddEvents.RefScoreTypeId    = temp.RefScoreTypeId;
         _AddEvents.MaxMemberCount    = temp.MaxMemberCount;
         _AddEvents.MinMemberCount    = temp.MinMemberCount;
         _AddEvents.AthleticOnly      = temp.AthleticOnly;
         _AddEvents.RefItemTemplateId = int.Parse(temp.UID);
         _AddEvents.SchoolYear        = iptSchoolYear.Value;
     }
     this.DialogResult = DialogResult.OK;
 }
        private void LoadDataToGridView(bool isAll)
        {
            int rowCount = 0;

            dgData.Rows.Clear();
            if (isAll)
            {
            }
            else
            {
                if (_EventsDict.ContainsKey(_selectEventID))
                {
                    UDT.Events ev     = _EventsDict[_selectEventID];
                    string     gpName = "";

                    if (_GroupTypesDict.ContainsKey(ev.RefGroupTypeId))
                    {
                        gpName = _GroupTypesDict[ev.RefGroupTypeId].Name;
                    }

                    // 列隊
                    if (_teamDict.ContainsKey(_selectEventID) && ev.IsTeam)
                    {
                        foreach (UDT.Teams t in _teamDict[_selectEventID])
                        {
                            int rowIdx = dgData.Rows.Add();

                            UDT.HistoricalRecords hr = null;

                            foreach (UDT.HistoricalRecords rec in _HistoricalRecordsList)
                            {
                                if (rec.RefEventId == _selectEventID && rec.TeamName == t.Name)
                                {
                                    hr = rec;
                                }
                            }

                            if (hr == null)
                            {
                                hr            = new UDT.HistoricalRecords();
                                hr.RefEventId = _selectEventID;
                                hr.TeamName   = t.Name;
                            }


                            dgData.Rows[rowIdx].Cells[colSchoolYear.Index].Value    = ev.SchoolYear;
                            dgData.Rows[rowIdx].Cells[colEventCategory.Index].Value = ev.Category;
                            dgData.Rows[rowIdx].Cells[colEventName.Index].Value     = ev.Name;
                            dgData.Rows[rowIdx].Cells[colGroupType.Index].Value     = gpName;
                            dgData.Rows[rowIdx].Cells[colIsTeam.Index].Value        = ev.IsTeam ? "是" : "否";
                            dgData.Rows[rowIdx].Cells[colTeamName.Index].Value      = t.Name;

                            if (hr.Rank.HasValue)
                            {
                                dgData.Rows[rowIdx].Cells[colRank.Index].Value = hr.Rank.Value;
                            }

                            if (_teamPlayerDict.ContainsKey(t.UID))
                            {
                                List <string> name = new List <string>();
                                List <string> jSON = new List <string>();

                                foreach (UDT.Players p in _teamPlayerDict[t.UID])
                                {
                                    name.Add(p.Name);
                                    jSON.Add(parsePlayerToJSonString(p));
                                }
                                dgData.Rows[rowIdx].Cells[colPlayer.Index].Value = string.Join(",", name.ToArray());

                                if (jSON.Count > 0)
                                {
                                    hr.Players = $"[{string.Join(",", jSON.ToArray())}]";
                                }
                            }

                            dgData.Rows[rowIdx].Tag = hr;

                            rowCount++;
                        }
                    }

                    // 列選手
                    if (_playerDict.ContainsKey(_selectEventID) && ev.IsTeam == false)
                    {
                        foreach (UDT.Players p in _playerDict[_selectEventID])
                        {
                            int rowIdx = dgData.Rows.Add();
                            dgData.Rows[rowIdx].Cells[colSchoolYear.Index].Value    = ev.SchoolYear;
                            dgData.Rows[rowIdx].Cells[colEventCategory.Index].Value = ev.Category;
                            dgData.Rows[rowIdx].Cells[colEventName.Index].Value     = ev.Name;
                            dgData.Rows[rowIdx].Cells[colGroupType.Index].Value     = gpName;
                            dgData.Rows[rowIdx].Cells[colIsTeam.Index].Value        = ev.IsTeam ? "是" : "否";
                            dgData.Rows[rowIdx].Cells[colTeamName.Index].Value      = "";
                            dgData.Rows[rowIdx].Cells[colPlayer.Index].Value        = p.Name;


                            UDT.HistoricalRecords hr = null;

                            foreach (UDT.HistoricalRecords rec in _HistoricalRecordsList)
                            {
                                // 比對學生系統編號

                                string key = $"\"ref_student_id\":{p.RefStudentId}";

                                if (rec.RefEventId == _selectEventID && rec.Players.Contains(key))
                                {
                                    hr = rec;
                                }
                            }

                            if (hr == null)
                            {
                                hr            = new UDT.HistoricalRecords();
                                hr.RefEventId = _selectEventID;
                                hr.Players    = $"[{parsePlayerToJSonString(p)}]";
                            }

                            if (hr.Rank.HasValue)
                            {
                                dgData.Rows[rowIdx].Cells[colRank.Index].Value = hr.Rank.Value;
                            }

                            dgData.Rows[rowIdx].Tag = hr;

                            rowCount++;
                        }
                    }
                }
            }

            SetDataGridViewCellsReadOnlyColor();

            lblRowCount.Text = $"共{rowCount}筆";
        }
        private void BindData()
        {
            if (_EventData == null)
            {
                _EventData = new UDT.Events();
            }

            // 學年度
            iptSchoolYear.Value = _EventData.SchoolYear;
            // 競賽類別
            txtCategory.Text = _EventData.Category;
            // 競賽名稱
            txtName.Text = _EventData.Name;

            // 運動會
            chkSportMeet.Checked = true;// 目前只用運動會功能 _EventData.IsSportMeet;
            chkSportMeet.Enabled = false;

            // 參賽組別
            string RefGroupTypeId = _EventData.RefGroupTypeId.ToString();

            if (_GroupTypesDict.ContainsKey(RefGroupTypeId))
            {
                cbxGroupType.Text = _GroupTypesDict[RefGroupTypeId].Name;
            }

            // 賽制
            string RefGameTypeId = _EventData.RefGameTypeId.ToString();

            if (_GameTypesDict.ContainsKey(RefGameTypeId))
            {
                cbxGameType.Text = _GameTypesDict[RefGameTypeId].Name;
            }
            // 計分方式
            string RefScoreTypeId = _EventData.RefScoreTypeId.ToString();

            if (_ScoreTypesDict.ContainsKey(RefScoreTypeId))
            {
                cbxScoreType.Text = _ScoreTypesDict[RefScoreTypeId].Name;
            }

            // 公告日期
            if (_EventData.AnnouncementDate.HasValue)
            {
                dtAnnouncementDate.Value = _EventData.AnnouncementDate.Value;
            }

            // 報名開始日期
            if (_EventData.RegStartDate.HasValue)
            {
                dtRegStartDate.Value = _EventData.RegStartDate.Value;
            }

            // 報名結束日期
            if (_EventData.RegEndDate.HasValue)
            {
                dtRegEndDate.Value = _EventData.RegEndDate.Value;
            }

            // 活動開始日期
            if (_EventData.EventStartDate.HasValue)
            {
                dtEventStartDate.Value = _EventData.EventStartDate.Value;
            }

            // 活動結束日期
            if (_EventData.EventEndDate.HasValue)
            {
                dtEventEndDate.Value = _EventData.EventEndDate.Value;
            }

            // 抽籤
            chkIsDrawLots.Checked = _EventData.IsDrawLots;

            // 抽籤開始日期
            if (_EventData.DrawLotsStartDate.HasValue)
            {
                dtDrawLotsStartDate.Value = _EventData.DrawLotsStartDate.Value;
            }

            // 抽籤結束日期
            if (_EventData.DrawLotsEndDate.HasValue)
            {
                dtDrawLotsEndDate.Value = _EventData.DrawLotsEndDate.Value;
            }

            // 全校學生
            rbAllStud.Checked = _EventData.IsRegAll;

            // 僅體育股長
            rbAthleticOnly.Checked = _EventData.AthleticOnly;

            // 僅限制人員
            rbLimit.Checked = _EventData.IsRegLimit;

            // 個人賽、團體賽
            if (_EventData.IsTeam)
            {
                rbTeam.Checked     = true;
                rbPersonal.Checked = false;
            }
            else
            {
                rbTeam.Checked     = false;
                rbPersonal.Checked = true;
            }

            // 報名人數上限
            iptMaxMemberCount.Value = _EventData.MaxMemberCount;

            // 報名人數下限
            iptMinMemberCount.Value = _EventData.MinMemberCount;

            // 競賽說明
            txtEventDescription.Text = _EventData.EventDescription;

            // 當畫面上學年度0,使用預設學年度學期
            if (iptSchoolYear.Value == 0)
            {
                iptSchoolYear.Value = int.Parse(K12.Data.School.DefaultSchoolYear);
            }

            // 畫面合理處理
            // 當抽籤沒勾,日期無法使用
            dtDrawLotsStartDate.Enabled = dtDrawLotsEndDate.Enabled = _EventData.IsDrawLots;

            // 人數上下限用在團體賽
            iptMaxMemberCount.Enabled = iptMinMemberCount.Enabled = _EventData.IsTeam;

            // 限制條件都沒選,選僅體育股長
            if (_EventData.IsRegAll == _EventData.IsRegLimit == _EventData.AthleticOnly == false)
            {
                rbAthleticOnly.Checked = true;
            }
        }
예제 #12
0
        private void btnPreView_Click(object sender, EventArgs e)
        {
            if (dgSource.SelectedRows.Count < 1)
            {
                FISCA.Presentation.Controls.MsgBox.Show("請選擇競賽項目");
                return;
            }

            btnPreView.Enabled = false;
            _SelectedItemDict.Clear();
            _TargetItemDict.Clear();

            foreach (DataGridViewRow drv in dgSource.SelectedRows)
            {
                string     itemName = drv.Cells[colEventItem.Index].Value.ToString();
                UDT.Events ev       = drv.Tag as UDT.Events;
                if (!_SelectedItemDict.ContainsKey(itemName))
                {
                    _SelectedItemDict.Add(itemName, ev);
                }
            }

            // 使用參賽組別
            if (rbGroupType.Checked)
            {
                List <string> NewItemNameList = new List <string>();
                foreach (UDT.Events ev in _SelectedItemDict.Values)
                {
                    foreach (int key in _GroupTypesDict.Keys)
                    {
                        // 相同不複製
                        if (ev.RefGroupTypeId == key)
                        {
                            continue;
                        }

                        string gpName = _GroupTypesDict[key].Name;

                        string     itemName = $"{ev.Category}_{ev.Name}_{gpName}";
                        UDT.Events newEvent = CopyItem(ev, ev.SchoolYear, ev.Category, ev.Name, key);

                        if (!_TargetItemDict.ContainsKey(itemName))
                        {
                            _TargetItemDict.Add(itemName, newEvent);
                        }
                    }
                }

                LoadTargetItemToDataGridView();
            }

            // 使用學年度
            if (rbSchoolYear.Checked)
            {
                // 取得所選學年度
                int newSchoolYear = iptTSchoolYear.Value;
                if (newSchoolYear == iptSSchoolYear.Value)
                {
                    FISCA.Presentation.Controls.MsgBox.Show("與來源相同學年度無法複製。");
                    btnPreView.Enabled = true;
                    return;
                }

                List <string> NewItemNameList = new List <string>();
                foreach (UDT.Events ev in _SelectedItemDict.Values)
                {
                    if (_GroupTypesDict.ContainsKey(ev.RefGroupTypeId))
                    {
                        string     gpName   = _GroupTypesDict[ev.RefGroupTypeId].Name;
                        string     itemName = $"{ev.Category}_{ev.Name}_{gpName}";
                        UDT.Events newEvent = CopyItem(ev, newSchoolYear, ev.Category, ev.Name, ev.RefGroupTypeId);

                        if (!_TargetItemDict.ContainsKey(itemName))
                        {
                            _TargetItemDict.Add(itemName, newEvent);
                        }
                    }
                }

                LoadTargetItemToDataGridView();
            }

            btnPreView.Enabled = true;
        }
예제 #13
0
        private void btnAddPlayer_Click(object sender, EventArgs e)
        {
            string refEventID = "";


            // 檢查競賽項目
            if (_eventItemDict.ContainsKey(cbxEventItem.Text))
            {
                refEventID = _eventItemDict[cbxEventItem.Text];
            }
            else
            {
                FISCA.Presentation.Controls.MsgBox.Show("請選擇競賽項目");
                return;
            }
            UDT.Events curEvent = null;
            // 取得競賽 udt
            if (_eventDict.ContainsKey(refEventID))
            {
                curEvent = _eventDict[refEventID];
            }

            // 檢查活動報名日期與結束日期
            if (_selectedEvent.RegStartDate.HasValue && _selectedEvent.RegEndDate.HasValue)
            {
                DateTime dt = System.DateTime.Now;
                if (dt >= _selectedEvent.RegStartDate.Value && dt <= _selectedEvent.RegEndDate.Value)
                {
                    // 可報名
                }
                else
                {
                    FISCA.Presentation.Controls.MsgBox.Show("非報名期間內無法報名。");
                    return;
                }
            }
            else
            {
                FISCA.Presentation.Controls.MsgBox.Show("沒有設定報名開始日期或報名結束日期無法報名。");
                return;
            }

            int maxCount = 0;

            if (curEvent != null)
            {
                maxCount = curEvent.MaxMemberCount;
            }
            UDT.GroupTypes curGp = null;
            // 取得 group
            if (_groupDict.ContainsKey(curEvent.RefGroupTypeId.ToString()))
            {
                curGp = _groupDict[curEvent.RefGroupTypeId.ToString()];
            }

            // 檢查隊員是否超過最大人數,如果超過無法新增。

            if (dgPlayerData.Rows.Count == curEvent.MaxMemberCount)
            {
                FISCA.Presentation.Controls.MsgBox.Show("參賽人數已達最多人數" + curEvent.MaxMemberCount + "人,無法新增。");
                return;
            }

            frmRegRecordAddPlayer frrap = new frmRegRecordAddPlayer();

            if (curGp != null)
            {
                if (curGp.Grade.HasValue)
                {
                    frrap.SetGradeYearFilter(curGp.Grade.Value.ToString());
                }

                if (curGp.Gender == "M" || curGp.Gender == "F")
                {
                    frrap.SetGenderFilter(curGp.Gender);
                }
            }

            // 判斷如果是個人賽傳入 null,團體賽取得 ID 傳入
            if (_selectedEvent != null && _selectedEvent.IsTeam)
            {
                // 團體,取得畫面上所選隊伍 ID
                if (dgTeamData.SelectedRows.Count == 1)
                {
                    int tid = int.Parse(dgTeamData.SelectedRows[0].Tag.ToString());
                    frrap.SetTeamID(tid);
                    frrap.SetTeamName(dgTeamData.SelectedRows[0].Cells[colTeamName.Index].Value.ToString());
                }
                else
                {
                    FISCA.Presentation.Controls.MsgBox.Show("請選擇隊伍");
                    return;
                }
            }
            else
            {
                // 個人
                frrap.SetTeamID(null);
            }

            frrap.SetEventID(int.Parse(refEventID));

            // 設定最多人數
            maxCount = maxCount - dgPlayerData.Rows.Count;
            frrap.SetMaxCount(maxCount);

            if (frrap.ShowDialog() == DialogResult.Yes)
            {
                _bgSearch.RunWorkerAsync();
            }
        }