private void Inquire_Click(object sender, RoutedEventArgs e) { //TODO : 계정 권한에 따라 접근을 거부하는 코드 필요. string accType = ParentWindow.Client.AccountType; if (!AuthorityChecker.CheckAuthority(accType, null, null, AccessType.Inquire, ObjectToAccess.Accounts)) { MessageBox.Show("데이터에 접근할 권한이 없습니다.\n\n대기중인 계정 목록을 조회하려면 전 학년 총괄 관리자여야 합니다.", "권한 없음", MessageBoxButton.OK, MessageBoxImage.Error); return; } ParentWindow.ChildManager.TryToShow <LoadingWindow>("서버와 통신 중...", (WaitCallback)((o) => { ParentWindow.Dispatcher.BeginInvoke((Action)(() => { TcpDataSetRequirement dataReq = new TcpDataSetRequirement(new string[] { "[교사 ID]", "[성명]", "[계정 구분]" }, "[교사 목록]", $"[가입 허가 여부]=True", "[성명]"); ParentWindow.Client.RequestDataSet(dataReq); RecentTeachersReq = dataReq; })).Wait(); })); this.IsEnabled = false; }
private void Row_DoubleClick(object sender, MouseButtonEventArgs e) { DataRow selectedRow; try { selectedRow = mStuListTable.Rows[StuDataGrid.SelectedIndex]; SelectedStudentText.Text = $"현재 선택된 학생: {mCurrentGrade}학년 {mCurrentClass}반 {(string)selectedRow["번호"]}번 {(string)selectedRow["성명"]}"; } catch (Exception) { ParentWindow.Dispatcher.Invoke(() => MessageBox.Show("조회하고자 하는 학생을 정확히 선택해주십시오.", "학생 선택 실패", MessageBoxButton.OK, MessageBoxImage.Warning)); return; } // 선택된 학생의 정해진 기간의 출석부 조회. (무단 기록이 있는 것만) ParentWindow.ChildManager.TryToShow <LoadingWindow>("서버와 통신 중...", (WaitCallback)((o) => { ParentWindow.Dispatcher.BeginInvoke((Action)(() => { TcpDataSetRequirement dataReq = new TcpDataSetRequirement(new string[] { "*" }, "[출석부]", $"[일자] BETWEEN {mCurrentFirst.ToSQLString()} AND {mCurrentSecond.ToSQLString()} AND [학년]={mCurrentGrade.ToSQLString()} AND [반]={mCurrentClass.ToSQLString()} AND [번호]={((string)selectedRow["번호"]).ToSQLString()} AND ({ONLY_FAULTS_WHERE})", null); ParentWindow.Client.RequestDataSet(dataReq); RecentAttReq = dataReq; })).Wait(); })); mCurrentInquiredRow = selectedRow; this.IsEnabled = false; }
private void Inquire_Click(object sender, RoutedEventArgs e) { if (FirstDateControl.SelectedDate == null || SecondDateControl.SelectedDate == null) { ParentWindow.Dispatcher.Invoke(() => MessageBox.Show("기간을 설정해주십시오.", "기간 입력 없음", MessageBoxButton.OK, MessageBoxImage.Error)); return; } if (FirstDateControl.SelectedDate.Value > SecondDateControl.SelectedDate.Value) { ParentWindow.Dispatcher.Invoke(() => MessageBox.Show("기간이 올바르게 입력되지 않았습니다. 첫번째날이 두번째날보다 나중이여선 안됩니다.", "기간 입력 오류", MessageBoxButton.OK, MessageBoxImage.Error)); return; } string gradeStr = null, classStr = null; ParentWindow.Dispatcher.BeginInvoke((Action)(() => { gradeStr = ParentWindow.GradeCombo.Text; classStr = ParentWindow.ClassCombo.Text; })).Wait(); //TODO : 계정 권한에 따라 접근을 거부하는 코드 필요. string accType = ParentWindow.Client.AccountType; if (!AuthorityChecker.CheckAuthority(accType, gradeStr, classStr, AccessType.Inquire, ObjectToAccess.StudentList)) { MessageBox.Show("데이터에 접근할 권한이 없습니다.\n\n특정 학급의 출석부와 학생 명단을 조회하려면 그 학급의 담임이거나, 전 학년 총괄 관리자여야 합니다.", "권한 없음", MessageBoxButton.OK, MessageBoxImage.Error); return; } ToExcel.IsEnabled = false; mCurrentGrade = gradeStr; mCurrentClass = classStr; mCurrentFirst = FirstDateControl.SelectedDate.Value; mCurrentSecond = SecondDateControl.SelectedDate.Value; InquiredText.Text = $"{mCurrentFirst.ToShortDateString()} ~ {mCurrentSecond.ToShortDateString()}"; ParentWindow.ChildManager.TryToShow <LoadingWindow>("서버와 통신 중...", (WaitCallback)((o) => { // 해당 기간에 맞는 학생명단 요청 ParentWindow.Dispatcher.BeginInvoke((Action)(() => { TcpDataSetRequirement dataReq = new TcpDataSetRequirement(new string[] { "*" }, "[학생 명단]", $"[등록 날짜]<{SecondDateControl.SelectedDate.Value.ToSQLString()} AND [학년]={mCurrentGrade.ToSQLString()} AND [반]={mCurrentClass.ToSQLString()}", "Val([번호])"); ParentWindow.Client.RequestDataSet(dataReq); RecentStuListReq = dataReq; })).Wait(); })); this.IsEnabled = false; }
public static DataSet DBSelect(TcpDataSetRequirement requirement) { if (requirement == null) { throw new ArgumentNullException("requirement"); } return(DBSelect(string.Join(", ", requirement.Columns), requirement.TableName, requirement.Where, requirement.OrderBy)); }
public void Clear() { mCurrentClass = null; mCurrentGrade = null; mTable?.Clear(); mOriginal?.Clear(); RecentStuListReq = new TcpDataSetRequirement(); AddStu.IsEnabled = false; ToExcel.IsEnabled = false; }
private void Inquire_Click(object sender, RoutedEventArgs e) { string gradeStr = null, classStr = null; ParentWindow.Dispatcher.BeginInvoke((Action)(() => { gradeStr = ParentWindow.GradeCombo.Text; classStr = ParentWindow.ClassCombo.Text; })).Wait(); //TODO : 계정 권한에 따라 접근을 거부하는 코드 필요. string accType = ParentWindow.Client.AccountType; if (!AuthorityChecker.CheckAuthority(accType, gradeStr, classStr, AccessType.Inquire, ObjectToAccess.Attendance)) { MessageBox.Show("데이터에 접근할 권한이 없습니다.\n\n특정 학급의 출석부를 조회하려면 그 학급의 담임이거나, 전 학년 총괄 관리자여야 합니다.", "권한 없음", MessageBoxButton.OK, MessageBoxImage.Error); return; } MessageBoxResult?checkResult = CheckSave(true); if (checkResult != null) { if (checkResult.Value != MessageBoxResult.Yes && checkResult.Value != MessageBoxResult.No) { return; } } if (DateControl.SelectedDate == null) { return; } mCurrentGrade = gradeStr; mCurrentClass = classStr; ParentWindow.ChildManager.TryToShow <LoadingWindow>("서버와 통신 중...", (WaitCallback)((o) => { // 해당 날짜, 반에 대한 출석부가 생성되었는지 확인 ParentWindow.Dispatcher.BeginInvoke((Action)(() => { TcpDataSetRequirement dataReq = new TcpDataSetRequirement(new string[] { "*" }, "[출석부]", $"[일자]={DateControl.SelectedDate.Value.ToSQLString()} AND [학년]={mCurrentGrade.ToSQLString()} AND [반]={mCurrentClass.ToSQLString()}", "Val([번호])"); ParentWindow.Client.RequestDataSet(dataReq); RecentAttReq = dataReq; })).Wait(); })); this.IsEnabled = false; }
public void Clear() { mTable?.Clear(); mOriginal?.Clear(); mCurrentClass = null; mCurrentGrade = null; RecentAttReq = new TcpDataSetRequirement(); DateControl.SelectedDate = DateTime.Now; ToExcel.IsEnabled = false; ToExcel_Selected.IsEnabled = false; TopCheckBox.IsChecked = false; }
public void Clear() { mCurrentGrade = null; mCurrentClass = null; RecentAttReq = new TcpDataSetRequirement(); mStuPenaltyList?.Clear(); ToExcel.IsEnabled = false; FirstDateControl.SelectedDate = DateTime.Now; SecondDateControl.SelectedDate = DateTime.Now; MainDataGrid.DataContext = null; InquiredText.Text = "- ~ -"; RefText.Text = "0"; }
public void Clear() { mStuListTable?.Clear(); mFaultsTable?.Clear(); mCurrentClass = null; mCurrentGrade = null; mCurrentInquiredRow = null; RecentAttReq = new TcpDataSetRequirement(); RecentStuListReq = new TcpDataSetRequirement(); FirstDateControl.SelectedDate = DateTime.Now; SecondDateControl.SelectedDate = DateTime.Now; ToExcel.IsEnabled = false; TopCheckBox.IsChecked = false; InquiredText.Text = "- ~ -"; SelectedStudentText.Text = ""; }
public void Clear() { if (mLoading != null) { mLoading.Close(); } mStudents?.Clear(); mFaultsTable?.Clear(); RecentAttReq = new TcpDataSetRequirement(); FirstDateControl.SelectedDate = DateTime.Now; SecondDateControl.SelectedDate = DateTime.Now; InquiredText.Text = "- ~ -"; SelectedStudentText.Text = ""; ToExcel.IsEnabled = false; }
static void Main(string[] args) { DatabaseManager.Initialize(); Console.Write("서버 데이터베이스 accdb 파일의 경로를 입력하십시오: "); string path = Console.ReadLine(); ServerDatabaseManager.Initialize(path); TcpDataSetRequirement stuListReq = new TcpDataSetRequirement(new string[] { "*" }, "[학생 명단]", null, "Val([번호])"); DataSet stuList = DatabaseManager.DBSelect(stuListReq); int attEdited, stuEdited; int attEdited_Sum = 0, stuEdited_Sum = 0; foreach (DataRow row in stuList.Tables[0].Rows) { Console.WriteLine($"{row["학년"].ToString()}학년 {row["반"].ToString()}반 {row["번호"].ToString()}번호 작업 중..."); TcpDataUpdate update = new TcpDataUpdate(); update.TableName = "[출석부]"; update.Setter.Add("[성명]", row["성명"].ToString().ToSQLString()); update.Where = $"[학년]={row["학년"].ToString().ToSQLString()} AND [반]={row["반"].ToString().ToSQLString()} AND [번호]={row["번호"].ToString().ToSQLString()}"; attEdited = ServerDatabaseManager.DBUpdate(update); update = new TcpDataUpdate(); update.TableName = "[학생 명단]"; update.Setter.Add("[성명]", row["성명"].ToString().ToSQLString()); update.Where = $"[학년]={row["학년"].ToString().ToSQLString()} AND [반]={row["반"].ToString().ToSQLString()} AND [번호]={row["번호"].ToString().ToSQLString()}"; stuEdited = ServerDatabaseManager.DBUpdate(update); Console.WriteLine($"출석부에서 {attEdited}개, 학생 명단에서 {stuEdited}개 레코드 편집됨.\n"); attEdited_Sum += attEdited; stuEdited_Sum += stuEdited; } Console.WriteLine($"최종적으로, 전체 출석부에서 {attEdited_Sum}개 레코드, 학생 명단에서 {stuEdited_Sum}개 레코드 편집됨."); ServerDatabaseManager.Close(); DatabaseManager.Close(); }
private void Inquire_Click(object sender, RoutedEventArgs e) { string gradeStr = null, classStr = null; ParentWindow.Dispatcher.BeginInvoke((Action)(() => { gradeStr = ParentWindow.GradeCombo.Text; classStr = ParentWindow.ClassCombo.Text; })).Wait(); //TODO : 계정 권한에 따라 접근을 거부하는 코드 필요. string accType = ParentWindow.Client.AccountType; if (!AuthorityChecker.CheckAuthority(accType, gradeStr, classStr, AccessType.Inquire, ObjectToAccess.StudentList)) { MessageBox.Show("데이터에 접근할 권한이 없습니다.\n\n특정 학급의 학생 명단을 조회하려면 그 학급의 담임이거나, 전 학년 총괄 관리자여야 합니다.", "권한 없음", MessageBoxButton.OK, MessageBoxImage.Error); return; } ToExcel.IsEnabled = false; mCurrentGrade = gradeStr; mCurrentClass = classStr; // 정해진 기간중 근태 불량 상태가 있는 출석부만 조회. ParentWindow.ChildManager.TryToShow <LoadingWindow>("서버와 통신 중...", (WaitCallback)((o) => { ParentWindow.Dispatcher.BeginInvoke((Action)(() => { TcpDataSetRequirement dataReq = new TcpDataSetRequirement(new string[] { "*" }, "[학생 명단]", $"[학년]={mCurrentGrade.ToSQLString()} AND [반]={mCurrentClass.ToSQLString()}", "Val([번호])"); ParentWindow.Client.RequestDataSet(dataReq); RecentStuListReq = dataReq; })).Wait(); })); this.IsEnabled = false; }
public void Clear() { mTable?.Clear(); mOriginal?.Clear(); mEdited?.Clear(); mCurrentClass = null; mCurrentGrade = null; RecentAttReq = new TcpDataSetRequirement(); RecentStuListReq = new TcpDataSetRequirement(); DateControl.SelectedDate = DateTime.Now; ToExcel.IsEnabled = false; Set1.IsEnabled = false; Set2.IsEnabled = false; Set3.IsEnabled = false; Set4.IsEnabled = false; Set5.IsEnabled = false; Set6.IsEnabled = false; Save.IsEnabled = false; Cancel.IsEnabled = false; TopCheckBox.IsChecked = false; }
public void Clear() { mTable?.Clear(); TopCheckBox.IsChecked = false; RecentTeachersReq = new TcpDataSetRequirement(); }
public void Clear() { mTable?.Clear(); RecentTeachersReq = new TcpDataSetRequirement(); }
private void Client_ReceivedDataSetResult(object sender, ReceivedDataSetResultEventArgs e) { if (!e.Result.Success) { Debug.Error("서버로부터 데이터를 수신하는데 실패하였습니다."); } if (RecentAttReq.Equals(e.Result.Requirement)) { this.Dispatcher.Invoke(() => { // 출석부가 이미 존재함. 준비 완료. if (e.Result.Data.Tables[0].Rows.Count > 0) { ShowData(e.Result.Data.Tables[0]); this.IsEnabled = true; Set1.IsEnabled = true; Set2.IsEnabled = true; Set3.IsEnabled = true; Set4.IsEnabled = true; Set5.IsEnabled = true; Set6.IsEnabled = true; Save.IsEnabled = false; Cancel.IsEnabled = false; ToExcel.IsEnabled = true; mEdited = new HashSet <int>(); } // 출석부가 존재하지 않음. 학생 목록을 요청해서 새롭게 생성해야 함. (계정 권한에 관계없이 항상 추가) else { TcpDataSetRequirement stuListReq = new TcpDataSetRequirement(new string[] { "*" }, "[학생 명단]", $"[학년]={mCurrentGrade.ToSQLString()} AND [반]={mCurrentClass.ToSQLString()}", null); ParentWindow.Client.RequestDataSet(stuListReq); RecentStuListReq = stuListReq; } }); return; } if (RecentStuListReq.Equals(e.Result.Requirement)) { this.Dispatcher.Invoke(() => { // 학생 목록을 가져왔음. 이제 이를 이용하여 default 출석부 입력. if (e.Result.Data.Tables[0].Rows.Count > 0) { ParentWindow.Client.InsertedData += Client_InsertedData; InsertDefaultAttToServer(e.Result.Data.Tables[0]); } // 학생 목록 없음. 출석부 조회 불가. else { ParentWindow.Dispatcher.Invoke(() => MessageBox.Show("서버에 해당 학급 학생명단이 입력되지 않았습니다. 서버에 학생명단을 입력한 뒤 다시 시도하십시오.", "학생 명단 없음", MessageBoxButton.OK, MessageBoxImage.Warning)); this.IsEnabled = true; Set1.IsEnabled = false; Set2.IsEnabled = false; Set3.IsEnabled = false; Set4.IsEnabled = false; Set5.IsEnabled = false; Set6.IsEnabled = false; Save.IsEnabled = false; Cancel.IsEnabled = false; ToExcel.IsEnabled = false; mTable?.Clear(); mOriginal?.Clear(); } }); return; } }
private void Inquire_Click(object sender, RoutedEventArgs e) { if (FirstDateControl.SelectedDate == null || SecondDateControl.SelectedDate == null) { ParentWindow.Dispatcher.Invoke(() => MessageBox.Show("기간을 설정해주십시오.", "기간 입력 없음", MessageBoxButton.OK, MessageBoxImage.Error)); return; } if (FirstDateControl.SelectedDate.Value > SecondDateControl.SelectedDate.Value) { ParentWindow.Dispatcher.Invoke(() => MessageBox.Show("기간이 올바르게 입력되지 않았습니다. 첫번째날이 두번째날보다 나중이여선 안됩니다.", "기간 입력 오류", MessageBoxButton.OK, MessageBoxImage.Error)); return; } if (MessageBox.Show("전교의 벌점을 조회하는 과정은 오래 걸릴 수 있습니다.\n계속하시겠습니까?", "전교 조회 전 경고", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes) { return; } //TODO : 계정 권한에 따라 접근을 거부하는 코드 필요. string accType = ParentWindow.Client.AccountType; if (!AuthorityChecker.CheckAuthority(accType, null, null, AccessType.Inquire, ObjectToAccess.Attendance)) { MessageBox.Show("데이터에 접근할 권한이 없습니다.\n\n전교의 출석부를 조회하려면 전 학년 총괄 관리자여야 합니다.", "권한 없음", MessageBoxButton.OK, MessageBoxImage.Error); return; } mCurrentFirst = FirstDateControl.SelectedDate.Value; mCurrentSecond = SecondDateControl.SelectedDate.Value; InquiredText.Text = $"{mCurrentFirst.ToShortDateString()} ~ {mCurrentSecond.ToShortDateString()}"; mLoading = new LoadingWindow("출석부를 가져오는 중..."); double top = 0, left = 0; ParentWindow.Dispatcher.BeginInvoke((Action)(() => { top = ParentWindow.Top + ParentWindow.Height / 2 - mLoading.Height / 2; left = ParentWindow.Left + ParentWindow.Width / 2 - mLoading.Width / 2; })).Wait(); mLoading.Top = top; mLoading.Left = left; mLoading.Owner = ParentWindow; mLoading.Show(); // 해당 기간에 맞는 불량사항 있는 출석부 모두 요청 ParentWindow.Dispatcher.BeginInvoke((Action)(() => { TcpDataSetRequirement dataReq = new TcpDataSetRequirement(new string[] { "*" }, "[출석부]", $"[일자] BETWEEN {mCurrentFirst.ToSQLString()} AND {mCurrentSecond.ToSQLString()} AND ({ONLY_FAULTS_WHERE})", null); ParentWindow.Client.RequestDataSet(dataReq); RecentAttReq = dataReq; })); this.IsEnabled = false; }