using System; using CLIP.eForm.Consent.UI.HospitalSvcRef; using System.Windows.Forms; using System.Collections.Generic; using System.ComponentModel; namespace CLIP.eForm.Consent.UI { public partial class SetSupportDeptsForm : Form { //private IConsentMain consentMain = null; //private ConsentCommandCtrl commandControl = null; private HospitalSvcRef.HospitalSvcSoapClient hospitalWebService = null; //private ConsentSvcRef.ConsentSvcSoapClient consentWebService = null; private string instcd = string.Empty; private string userid = string.Empty; private string suDeptNm = string.Empty; private string hospitalSvcUrl = string.Empty; public string supportDeptCd { get; set; } public string supportBaseCd { get; set; } private BindingList checkboxItems = null; public SetSupportDeptsForm() { InitializeComponent(); } public SetSupportDeptsForm(string instcd, string userId, string supportDeptCd, string supportBaseCd, string hospitalSvcUrl) { // UI 초기화 InitializeComponent(); this.instcd = instcd; this.userid = userId; this.supportDeptCd = supportDeptCd; this.supportBaseCd = supportBaseCd; this.hospitalSvcUrl = hospitalSvcUrl; } //Dictionary configDic = ConsentMainControl.GetConfigDictionary(m_ServerName); //hospitalWebService = WebMethodCommon.GetHospitalWebService(configDic["hospitalSvcUrl"]); private void initData() { DeptListVO[] deptList = hospitalWebService.GetSupportDeptList(); //InspectionVO[] deptList = null ; //deptList = hospitalWebService.GetInspectingRoomName(supportDeptCd); // 지원부서코드 if(deptList != null && deptList.Length > 0) { DeptListVO vo = new DeptListVO(); vo.deptAbbr = ""; vo.deptCd = ""; vo.deptNm = "지원부서를 선택해주세요."; vo.sort = 0; deptList.SetValue(vo, 0); // 초기화 시 콤보 박스 이벤트 해제 comboUserDept.SelectedIndexChanged -= new System.EventHandler(comboUserDept_SelectedIndexChanged); comboUserDept.DataSource = deptList; comboUserDept.DisplayMember = "deptNm"; comboUserDept.ValueMember = "deptCd"; // 사용자 부서가 있다면 if (!string.IsNullOrEmpty(this.supportDeptCd)) { // 현재 콤보 박스를 선택된 값으로 comboUserDept.SelectedValue = this.supportDeptCd; // 지원부서 목록을 조회 후 체크박스 리스트를 업데이트 한다 updateCheckedListBox(this.supportDeptCd); // 현재 사용자의 basecd 를 체크한다. updateUserSupportBaseCd(); } // 봄보 박스 이벤트 추가 comboUserDept.SelectedIndexChanged += new System.EventHandler(comboUserDept_SelectedIndexChanged); } } /// /// 사용자가 기존에 설정하였던 지원부서를 체크한다 /// private void updateUserSupportBaseCd() { if(cbListSupportBaseCd.Items.Count < 1 || this.supportBaseCd.Length < 1) { return; } string[] baseCds = this.supportBaseCd.Split(','); for (int i = 0; i < cbListSupportBaseCd.Items.Count; i++) { foreach (var baseCd in baseCds) { var obj = cbListSupportBaseCd.Items[i] as InspectionVO; if (baseCd.Trim().Equals(obj.baseCd.Trim())) { cbListSupportBaseCd.SetItemChecked(i, true); } } } //string[] tempBaseCds = this.supportBaseCd.Split(','); } private void updateCheckedListBox(string dept) { // 먼저 미리 체크되어 있는 항목이 있으면 체크를 해제하여 준다 if(cbListSupportBaseCd.CheckedItems.Count > 0) { for(int i = 0; i < cbListSupportBaseCd.CheckedItems.Count; i++) { cbListSupportBaseCd.SetItemChecked(i, false); } } InspectionVO[] inspectionVOs = hospitalWebService.GetInspectingRoomName(dept); if (inspectionVOs != null && inspectionVOs.Length > 0) { // 지원부서 체크박스 리스트를 생성한다. // 바인딩 리스트로 형변환 checkboxItems = new BindingList(inspectionVOs); } else { checkboxItems = null; } ((ListBox) cbListSupportBaseCd).DataSource = inspectionVOs; ((ListBox) cbListSupportBaseCd).DisplayMember = "supportDeptNm"; ((ListBox) cbListSupportBaseCd).ValueMember = "supportDeptCd"; for(int i = 0; i < cbListSupportBaseCd.Items.Count; i++) { InspectionVO vo = cbListSupportBaseCd.Items[i] as InspectionVO; if (supportBaseCd.IndexOf(vo.baseCd) > 0) { //cbListSupportBaseCd.I cbListSupportBaseCd.SetItemChecked(i, true); } //if (supportDeptCd) } //checkboxItems. //for(int i = 0; i < checkboxItems.DataBindings.Count; i++) { // var temp = 0; //} // 체크박스 리스트 업데이트 cbListSupportBaseCd.Invalidate(); cbListSupportBaseCd.Update(); } private void btnClose_Click(object sender, EventArgs e) { string value = string.Empty; foreach (InspectionVO vo in cbListSupportBaseCd.CheckedItems) { value += "'"; value += vo.baseCd.ToString(); value += "',"; } value = value.TrimEnd(','); supportBaseCd = value; this.DialogResult = DialogResult.OK; this.Close(); } /// /// 초기화 /// /// /// private void SetSupportDeptsForm_Load(object sender, EventArgs e) { Dictionary configDic = ConsentMainControl.GetConfigDictionary(hospitalSvcUrl); hospitalWebService = WebMethodCommon.GetHospitalWebService(configDic["hospitalSvcUrl"]); initData(); } /// /// 지원부서 콤보 박스 아이템 변경 이벤트 /// /// /// private void comboUserDept_SelectedIndexChanged(object sender, EventArgs e) { DeptListVO selectedDept = comboUserDept.SelectedItem as DeptListVO; supportDeptCd = selectedDept.deptCd; suDeptNm = selectedDept.deptNm; updateCheckedListBox(supportDeptCd); } /// /// 버튼 클릭 시 사용자가 체크한 값을 저장 한다 /// /// /// private void btnSave_Click(object sender, EventArgs e) { if(cbListSupportBaseCd.CheckedItems.Count != 0) { string value = string.Empty; foreach (InspectionVO vo in cbListSupportBaseCd.CheckedItems) { value += "'"; value += vo.baseCd.ToString(); value += "',"; } value = value.TrimEnd(','); supportBaseCd = value; SingleReturnData result = hospitalWebService.SetSupportUserData(userid, value, supportDeptCd, supportBaseCd, Common.getMacAddress()); if (!string.IsNullOrEmpty(result.responseData)) { MessageBox.Show("지원부서 설정이 저장되었습니다."); } } else { MessageBox.Show("선택된 값이 없습니다."); return; } } } }