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); } }
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; } }
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(); } }
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; } }
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; }
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(); } }