using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace IControls_FireManager { public partial class Form_System_UserEdit : Form { // GridEx 컬럼값 string[] ColumnNames_Headers = _Convert.String_to_ArrayString(_Text.UI_USER_LIST_COLUMNNAME); // 대화 팝업용 (모두 삭제 여부) Form DialogPopup_User_AllDelete = new Form(); // 대화 팝업용 (삭제 여부) Form DialogPopup_User_Delete = new Form(); // 대화 팝업용 (저장 여부) Form DialogPopup_User_Save = new Form(); // 선택한 사용자 string gridEX_Selected_User_ID = null; public Form_System_UserEdit() { /// /// 초기화 /// InitializeComponent(); Initialize_Defalut(false); /// /// DB 열기 /// GET_DB_USER_INFO(); /// /// 이벤트 /// // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용) this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing); // 윈도우 스타일 변경 이벤트 핸들러 등록 _Event.WindowStyleSet_SendMessage_Event += new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event); /// /// UI 셋팅 /// UI_GridEx_Initialize(); /// /// 스타일 변경 /// UI_Style_Initialize(); } // 윈도우 스타일 변경 이벤트 public void _Event_WindowStyleSet_SendMessage_Event() { UI_Style_Initialize(); } // 스타일 초기화 함수 private void UI_Style_Initialize() { this.uiGroupBox.VisualStyle = _Data.Style_PanelVisualStyle; this.uiButton_New.VisualStyle = _Data.Style_VisualStyle; this.GridEx_UserList.VisualStyle = _Style.Get_GridEXVisualStyle(_Data.Style_VisualStyle.ToString()); this.editBox_ID.VisualStyle = _Style.Get_GridEXVisualStyle(_Data.Style_VisualStyle.ToString()); this.editBox_PW.VisualStyle = _Style.Get_GridEXVisualStyle(_Data.Style_VisualStyle.ToString()); this.editBox_RePW.VisualStyle = _Style.Get_GridEXVisualStyle(_Data.Style_VisualStyle.ToString()); this.editBox_Name.VisualStyle = _Style.Get_GridEXVisualStyle(_Data.Style_VisualStyle.ToString()); this.editBox_CompanyName.VisualStyle = _Style.Get_GridEXVisualStyle(_Data.Style_VisualStyle.ToString()); this.editBox_CompanyPosition.VisualStyle = _Style.Get_GridEXVisualStyle(_Data.Style_VisualStyle.ToString()); this.editBox_Phone.VisualStyle = _Style.Get_GridEXVisualStyle(_Data.Style_VisualStyle.ToString()); this.uiButton_Save.VisualStyle = _Data.Style_VisualStyle; this.UiButton_SameIdChk.VisualStyle = _Data.Style_VisualStyle; } // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용) public void CreateForm_FormClosing(object sender, FormClosingEventArgs e) { // 윈도우 스타일 변경 이벤트 핸들러 해제 _Event.WindowStyleSet_SendMessage_Event -= new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event); } // 기본값 초기화 public void Initialize_Defalut(bool Enable) { // 중복 체크를 누르기 전까지는 모두 비활성화 this.editBox_ID.Enabled = !Enable; this.UiButton_SameIdChk.Enabled = !Enable; this.editBox_PW.Enabled = Enable; this.editBox_RePW.Enabled = Enable; this.editBox_Name.Enabled = Enable; this.editBox_CompanyName.Enabled = Enable; this.editBox_CompanyPosition.Enabled = Enable; this.editBox_Phone.Enabled = Enable; this.uiButton_Save.Enabled = Enable; } public void UI_EditBox_Clear() { // 중복 체크를 누르기 전까지는 모두 비활성화 this.editBox_ID.Text = null; this.editBox_PW.Text = null; this.editBox_RePW.Text = null; this.editBox_Name.Text = null; this.editBox_CompanyName.Text = null; this.editBox_CompanyPosition.Text = null; this.editBox_Phone.Text = null; } // 데이타베이스에서 USER 정보 가져오기 (DEVICE CONFIG 혹은 CARD REG 용인지 내부에서 구분해서 리스트 생성됨) public static bool GET_DB_USER_INFO() { try { // 초기화 _Data.HASH_USER.Clear(); _Data.LIST_USER_KEY.Clear(); /// /// DB -> 해쉬에 저장 /// DataRowCollection DB_TABLE_USER = null; DB_TABLE_USER = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_USERS", null)); if (DB_TABLE_USER != null) { foreach (DataRow dr in DB_TABLE_USER) { _USER USER = new _USER(); USER.USER_NO = dr["USER_NO"].ToString(); USER.USER_NAME = dr["USER_NAME"].ToString(); USER.USER_ID = dr["USER_ID"].ToString(); USER.USER_PW = dr["USER_PW"].ToString(); USER.USER_COMPANY = dr["USER_COMPANY"].ToString(); USER.USER_POSITION = dr["USER_POSITION"].ToString(); USER.USER_PHONE = dr["USER_PHONE"].ToString(); // 해쉬에 추가 (키값은 항상 String 으로 접근) if (_Hash.Add(_Data.HASH_USER, USER.USER_ID, USER) == true) { // 키리스트에 추가 _Data.LIST_USER_KEY.Add(USER.USER_ID); } } } return true; } catch (Exception e) { // LOG _Event.DebugView_SendMessage_Write(e.ToString()); return false; } } // 사용자 정보 리스트 초기화 public void UI_GridEx_Initialize() { // 초기화 this.GridEx_UserList.ClearItems(); int i = 0; foreach (string USER_KEY in _Data.LIST_USER_KEY) { // 접근하려는 USER 정보 추출 _USER USER = ((_USER)_Data.HASH_USER[USER_KEY]); // 기본 출력될 컬럼 string GridexAddItem = null; // 생성된 컬럼명에 맞게 데이타를 추가한다 GridexAddItem = // NO ColumnNames_Headers[0] + _Text.Equal + (++i).ToString() + _Text.SemiColon + // ID ColumnNames_Headers[1] + _Text.Equal + USER.USER_ID + _Text.SemiColon + // PW ColumnNames_Headers[2] + _Text.Equal + USER.USER_PW + _Text.SemiColon + // Name ColumnNames_Headers[3] + _Text.Equal + USER.USER_NAME + _Text.SemiColon + // Company_Name ColumnNames_Headers[4] + _Text.Equal + USER.USER_COMPANY + _Text.SemiColon + // Company_Positon ColumnNames_Headers[5] + _Text.Equal + USER.USER_POSITION + _Text.SemiColon + // Phone ColumnNames_Headers[6] + _Text.Equal + USER.USER_PHONE; // 컬럼추가 _Gridex.Column_Data_Add(this.GridEx_UserList, false, GridexAddItem); } } // 중복체크 버튼 누름 private void UiButton_SameIdChk_Click(object sender, EventArgs e) { // 자동으로 공백처리 this.editBox_ID.Text = this.editBox_ID.Text.Trim(); // 예외처리 string TempError = _Error.Data_Confirm_NotDefineString(this.editBox_ID.Text); if (TempError != null) { // 입력부 비활성화 Initialize_Defalut(false); // 경고 문구 _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 250, 150, TempError, 0); // 에러 문구 } // 그룹명을 지정해야만 한다 else if (this.editBox_ID.Text == null || this.editBox_ID.Text.Trim().Length == 0) { // 입력부 비활성화 Initialize_Defalut(false); // 경고 문구 _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 250, 150, _Text.NameNotInput, 0); // 이름을 입력해 주세요 } // 현재 등록하려는 아이디가 포함되는지 알아본다 else if (_Data.LIST_USER_KEY.Contains(this.editBox_ID.Text) == true) { // 입력부 비활성화 Initialize_Defalut(false); // 경고 문구 _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 400, 150, _Text.UserIDUsingFail, 0); } else { // 입력부 활성화 Initialize_Defalut(true); // 확인 문구 _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 400, 150, _Text.UserIDUsingSuccess, 0); } } // 저장버튼 누름 private void uiButton_Save_Click(object sender, EventArgs e) { // 패스워드 정보 체크 if (this.editBox_PW.Text != this.editBox_RePW.Text || this.editBox_PW.Text == null || this.editBox_PW.Text.Trim().Length == 0) { _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 250, 150, _Text.UserPWUsingFail, 0); return; } // 모든 입력 체크 if (this.editBox_Name.Text == null || this.editBox_Name.Text.Trim().Length == 0 || this.editBox_CompanyName.Text == null || this.editBox_CompanyName.Text.Trim().Length == 0 || this.editBox_Phone.Text == null || this.editBox_Phone.Text.Trim().Length == 0 || this.editBox_CompanyPosition.Text == null || this.editBox_CompanyPosition.Text.Trim().Length == 0 ) { _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 250, 150, _Text.UserInfoNot, 0); return; } // 사용자 저장합니다. 진행하시겠습니까? DialogPopup_User_Save = _PopupDialog.Create(Popup_Type.Dialog, Popup_Style.Normal, _Text.OK, 450, 150, _Text.UserSave_Continue, _Event_DialogPopup_User_Save_SendMessage_Event); } // 리스트에서 아이템 마우스 클릭 private void GridEx_UserList_MouseClick(object sender, MouseEventArgs e) { // 선택한 아이템이 없으면 if (this.GridEx_UserList.CurrentRow == null || this.GridEx_UserList.CurrentRow.Cells["ID"] == null || this.GridEx_UserList.CurrentRow.Cells["ID"].Value == null) return; // 오른쪽 마우스를 선택할 경우 if (e.Button == System.Windows.Forms.MouseButtons.Right) { //if (this.GridEx_UserList.CurrentRow.Cells["ID"].Value.ToString() != _Data.Super_User_ID) { _Contextmenustrip.Create(this.GridEx_UserList, e.Location, _Text.Delete + ";" + _Text.ContextStripSeparator + ";" + _Text.AllDelete, Selected_Menustrip_ItemClicked); } } // 선택한 그룹이름을 저장한다 gridEX_Selected_User_ID = this.GridEx_UserList.CurrentRow.Cells["ID"].Value.ToString(); // UI 표시 this.editBox_ID.Text = ((_USER)_Data.HASH_USER[gridEX_Selected_User_ID]).USER_ID; this.editBox_PW.Text = ((_USER)_Data.HASH_USER[gridEX_Selected_User_ID]).USER_PW; this.editBox_RePW.Text = ((_USER)_Data.HASH_USER[gridEX_Selected_User_ID]).USER_PW; this.editBox_Name.Text = ((_USER)_Data.HASH_USER[gridEX_Selected_User_ID]).USER_NAME; this.editBox_CompanyName.Text = ((_USER)_Data.HASH_USER[gridEX_Selected_User_ID]).USER_COMPANY; this.editBox_CompanyPosition.Text = ((_USER)_Data.HASH_USER[gridEX_Selected_User_ID]).USER_POSITION; this.editBox_Phone.Text = ((_USER)_Data.HASH_USER[gridEX_Selected_User_ID]).USER_PHONE; Initialize_Defalut(true); } /// /// 팝업 메뉴 선택 /// public void Selected_Menustrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { // 리스트에서 팝업창 메뉴중 전체 삭제를 선택 if (e.ClickedItem.Text == _Text.AllDelete) { // 시스템 사용자 모두 삭제됩니다. 계속 진행하시겠습니까?" DialogPopup_User_AllDelete = _PopupDialog.Create(Popup_Type.Dialog, Popup_Style.Normal, _Text.OK, 450, 150, _Text.UserAllDelete_Continue, _Event_DialogPopup_User_AllDelete_SendMessage_Event); } // 리스트에서 팝업창 메뉴중 삭제를 선택 else if (e.ClickedItem.Text == _Text.Delete) { // 시스템 사용자 삭제됩니다. 계속 진행하시겠습니까?" DialogPopup_User_Delete = _PopupDialog.Create(Popup_Type.Dialog, Popup_Style.Normal, _Text.OK, 450, 150, _Text.UserDelete_Continue, _Event_DialogPopup_User_Delete_SendMessage_Event); } } // 전체 삭제 여부 public void _Event_DialogPopup_User_AllDelete_SendMessage_Event(object sender, object etc) { // 대화 팝업 주체 Form popup = (Form)sender; if (DialogPopup_User_AllDelete.Name == popup.Name && etc.ToString() == _Text.OK) { // DB 삭제 _Db.Execute("DELETE FROM TB_USERS"); // DB 로 부터 해쉬 테이블 및 리스트 정리 GET_DB_USER_INFO(); // 선택한 아이디를 초기화 gridEX_Selected_User_ID = null; // UI 초기화 Initialize_Defalut(false); UI_EditBox_Clear(); // UI 갱신 UI_GridEx_Initialize(); } } // 삭제 여부 public void _Event_DialogPopup_User_Delete_SendMessage_Event(object sender, object etc) { // 대화 팝업 주체 Form popup = (Form)sender; if (DialogPopup_User_Delete.Name == popup.Name && etc.ToString() == _Text.OK) { // DB 삭제 string sql = string.Format("DELETE FROM TB_USERS WHERE USER_ID = '{0}'", gridEX_Selected_User_ID); _Db.Execute(sql); // DB 로 부터 해쉬 테이블 및 리스트 정리 GET_DB_USER_INFO(); // 선택한 아이디를 초기화 gridEX_Selected_User_ID = null; // UI 초기화 Initialize_Defalut(false); UI_EditBox_Clear(); // UI 갱신 UI_GridEx_Initialize(); } } // 저장 여부 public void _Event_DialogPopup_User_Save_SendMessage_Event(object sender, object etc) { // 대화 팝업 주체 Form popup = (Form)sender; if (DialogPopup_User_Save.Name == popup.Name && etc.ToString() == _Text.OK) { // 데이타 저장하자 _USER USER = new _USER(); USER.USER_ID = this.editBox_ID.Text; USER.USER_PW = this.editBox_PW.Text; USER.USER_NAME = this.editBox_Name.Text; USER.USER_COMPANY = this.editBox_CompanyName.Text; USER.USER_POSITION = this.editBox_CompanyPosition.Text; USER.USER_PHONE = this.editBox_Phone.Text; // 새로 추가인지 편집인지 구분해서 루틴을 타도록 한다 if (_Data.LIST_USER_KEY.Contains(USER.USER_ID) == false) { // 해쉬에 추가 if (_Hash.Add(_Data.HASH_USER, USER.USER_ID, USER) == true) { // 키리스트에 추가 _Data.LIST_USER_KEY.Add(USER.USER_ID); } // UI 표시 UI_GridEx_Initialize(); // DB 저장 string sql = string.Format("insert into TB_USERS(USER_NO,USER_ID,USER_PW,USER_NAME,USER_COMPANY,USER_POSITION,USER_PHONE,REG_TIME) values ({0},'{1}','{2}','{3}','{4}','{5}','{6}',current_timestamp)", _Data.LIST_USER_KEY.IndexOf(USER.USER_ID), USER.USER_ID, USER.USER_PW, USER.USER_NAME, USER.USER_COMPANY, USER.USER_POSITION, USER.USER_PHONE ); _Db.Execute(sql); } // 편집 else { // 해쉬에 내용 변경 ((_USER)_Data.HASH_USER[USER.USER_ID]).USER_PW = USER.USER_PW; ((_USER)_Data.HASH_USER[USER.USER_ID]).USER_NAME = USER.USER_NAME; ((_USER)_Data.HASH_USER[USER.USER_ID]).USER_COMPANY = USER.USER_COMPANY; ((_USER)_Data.HASH_USER[USER.USER_ID]).USER_POSITION = USER.USER_POSITION; ((_USER)_Data.HASH_USER[USER.USER_ID]).USER_PHONE = USER.USER_PHONE; // UI 표시 _Gridex.Column_Data_Edit(this.GridEx_UserList, ColumnNames_Headers[1] + _Text.Equal + USER.USER_ID, // PW ColumnNames_Headers[2] + _Text.Equal + USER.USER_PW + _Text.SemiColon + // Name ColumnNames_Headers[3] + _Text.Equal + USER.USER_NAME + _Text.SemiColon + // Company_Name ColumnNames_Headers[4] + _Text.Equal + USER.USER_COMPANY + _Text.SemiColon + // Company_Postion ColumnNames_Headers[5] + _Text.Equal + USER.USER_POSITION + _Text.SemiColon + // Phone ColumnNames_Headers[6] + _Text.Equal + USER.USER_PHONE); // DB 저장 string sql = string.Format("update TB_USERS set USER_PW='{1}',USER_NAME='{2}',USER_PHONE='{3}',USER_COMPANY='{4}',USER_POSITION='{5}',REG_TIME=current_timestamp where USER_ID='{0}'", USER.USER_ID, USER.USER_PW, USER.USER_NAME, USER.USER_PHONE, USER.USER_COMPANY, USER.USER_POSITION); _Db.Execute(sql); } // 선택한 아이디 초기화 gridEX_Selected_User_ID = null; // UI 초기화 Initialize_Defalut(false); UI_EditBox_Clear(); } // 팝업창 이벤트 처리 해제 //_Event.PopupClose_SendMessage_Event -= new _Event.PopupClose_SendMessage_Handler(_Event_DialogPopup_User_Save_SendMessage_Event); } // 새로 만들기 버튼 private void uiButton_New_Click(object sender, EventArgs e) { // 선택한 아이디 초기화 gridEX_Selected_User_ID = null; // UI 초기화 Initialize_Defalut(false); UI_EditBox_Clear(); } } }