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 Project._Common { public partial class fAddNewUser : Form // FCOMMON.fBase { string p_dept = string.Empty; string p_id = string.Empty; short deflevel = 1; public fAddNewUser(string dept, string id, short _deflevel = 1) { InitializeComponent(); p_dept = dept; p_id = id; this.deflevel = _deflevel; this.tbDept.Text = dept; this.StartPosition = FormStartPosition.CenterScreen; this.tbId.Text = id; //자료를 불러와서 먼저 불러온다 if (id.isEmpty() == false) { tbId.Enabled = false; button1.Enabled = false; btChangePW.Enabled = true; var db = new EEEntitiesMain(); var db_user = db.Users.Where(t => t.id == id).FirstOrDefault(); var db_guser = db.EETGW_GroupUser.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.uid == id).FirstOrDefault(); if (db_user != null) { tbNameK.Text = db_user.name; tbNameE.Text = db_user.nameE; tbDept.Text = db_user.dept; tbEmail.Text = db_user.email; tbTel.Text = db_user.tel; tbHp.Text = db_user.hp; tbDateIn.Text = db_user.indate; tbDateO.Text = db_user.outdate; tbGrade.Text = db_user.grade; tbMemo.Text = db_user.memo; } if (db_guser != null) { tbProcess.Text = db_guser.Process; tbState.Text = db_guser.state; //this.chkJobReport.Checked = (db_guser.useJobReport == null ? false : (bool)db_guser.useJobReport); this.chkJobReport.Checked = (db_guser.useJobReport == null ? false : (bool)db_guser.useJobReport); this.chkUseState.Checked = (db_guser.useUserState == null ? false : (bool)db_guser.useUserState); this.chkExceptHoly.Checked = (db_guser.exceptHoly == null ? false : (bool)db_guser.exceptHoly); } this.Text = "사용자 정보 변경"; } else { this.Text = "사용자 정보 추가"; btChangePW.Enabled = false; } } private void fUserInfo_Load(object sender, EventArgs e) { int curLevel = Math.Max(FCOMMON.info.Login.level, FCOMMON.DBM.getAuth(FCOMMON.DBM.eAuthType.account)); if (this.deflevel < 1) { chkExceptHoly.Visible = false; chkJobReport.Visible = false; chkUseState.Visible = false; chkExceptHoly.Checked = false; chkJobReport.Checked = false; ; chkUseState.Checked = false; } else { chkExceptHoly.Enabled = curLevel > 4; chkJobReport.Enabled = curLevel > 4; chkUseState.Enabled = curLevel > 4; } } private void button1_Click(object sender, EventArgs e) { //입력한 id확인해서 잇으면 해당 자료를 표시해준다. var id = this.tbId.Text.Trim(); if (id.isEmpty()) { FCOMMON.Util.MsgE("id를 입력하세요"); this.tbId.SelectAll(); this.tbId.Focus(); return; } var db = new EEEntitiesMain(); var dr_user = db.Users.Where(t => t.id == id).FirstOrDefault(); if (dr_user == null) { FCOMMON.Util.MsgE("등록된 자료가 없습니다"); tbNameK.Focus(); } else { tbNameK.Text = dr_user.name; tbNameE.Text = dr_user.nameE; if (tbDept.Text.isEmpty()) tbDept.Text = dr_user.dept; tbEmail.Text = dr_user.email; tbTel.Text = dr_user.tel; tbHp.Text = dr_user.hp; tbDateIn.Text = dr_user.indate; tbDateO.Text = dr_user.outdate; tbGrade.Text = dr_user.grade; tbMemo.Text = dr_user.memo; tbProcess.Text = string.Empty; //부서가잇다면 해당 부서에서 해당 사용자의 공정을 찾는다 if (tbDept.Text.isEmpty() == false) { var drGrp = db.vGroupUser.Where(t => t.id == id).FirstOrDefault(); if (drGrp != null) { tbProcess.Text = drGrp.processs; } } } } private void button2_Click(object sender, EventArgs e) { this.Validate(); //var db = new EEEntitiesMain(); //해당 그룹에 데이터를 추가한다. //var drDept = db.UserGroup.Where(t => t.dept == tbDept.Text).FirstOrDefault(); //if (drDept == null) //{ // FCOMMON.Util.MsgE("해당 부서정보가 존재하지 않습니다\n\n부서를 신규로 추가할 수는 없습니다\n관리자에 문의하세요"); // return; //} var gcode = FCOMMON.info.Login.gcode; var uid = (p_id.isEmpty() ? tbId.Text.Trim() : p_id); //if (FCOMMON.info.Login.no.isEmpty()) FCOMMON.info.Login.no = uid; //해당 그룹에 해당 사용자가 존재하는지 확이한다. var taUserGrp = new dsMSSQLTableAdapters.EETGW_GroupUserTableAdapter(); var dtUserGrp = taUserGrp.GetData(gcode); var drGuser = dtUserGrp.Where(t => t.uid == uid).FirstOrDefault(); if (drGuser != null) { drGuser.Process = this.tbProcess.Text.Trim(); drGuser.state = this.tbState.Text.Trim(); if (deflevel > 0) { drGuser.useJobReport = chkJobReport.Checked; drGuser.useUserState = chkUseState.Checked; drGuser.exceptHoly = chkExceptHoly.Checked; } if (drGuser.level == 0) { FCOMMON.Util.MsgE($"이미 존재하는 사용자 정보입니다\n"+ "아직 관리자 승인이 되지 않은 상태입니다\n"+ "계정관리자 통해서 계정을 활성화를 하세요"); } else FCOMMON.Util.MsgI($"이미 존재하는 사용자 정보입니다\n" + "기존 정보가 업데이트 됩니다"); } else { //불러온경우 if (tbId.Enabled == false) { FCOMMON.Util.MsgE("사용자 ID정보가 없어 진행할 수 없습니다"); return; } drGuser = dtUserGrp.NewEETGW_GroupUserRow(); drGuser.wuid = FCOMMON.info.Login.no; drGuser.wdate = DateTime.Now; drGuser.gcode = gcode; drGuser.level = this.deflevel; drGuser.uid = this.tbId.Text.Trim(); drGuser.state = this.tbState.Text.Trim(); drGuser.Process = this.tbProcess.Text.Trim(); //drGuser.useJobReport = this.chkJobReport.Checked; drGuser.useJobReport = this.chkJobReport.Checked; drGuser.useUserState = this.chkUseState.Checked; drGuser.exceptHoly = this.chkExceptHoly.Checked; dtUserGrp.AddEETGW_GroupUserRow(drGuser); } //사용자 목록에 없다면 추가한다 var tauser = new dsMSSQLTableAdapters.UsersTableAdapter(); var dtuser = tauser.GetID(uid); var drUser = dtuser.FirstOrDefault(); if (drUser == null) { drUser = dtuser.NewUsersRow(); drUser.wuid = FCOMMON.info.Login.no; drUser.wdate = DateTime.Now; drUser.gcode = gcode; drUser.level = this.deflevel; drUser.id = tbId.Text.Trim(); drUser.password = newpassword;// "B6589FC6AB0DC82CF12099D1C2D40AB994E8410C"; //기본값0 drUser.name = tbNameK.Text.Trim(); drUser.nameE = tbNameE.Text.Trim(); drUser.dept = this.tbDept.Text.Trim(); drUser.email = tbEmail.Text; drUser.tel = tbTel.Text; drUser.hp = tbHp.Text; drUser.indate = tbDateIn.Text; drUser.outdate = tbDateO.Text; drUser.memo = tbMemo.Text; drUser.processs = tbProcess.Text; drUser.grade = tbGrade.Text.Trim(); dtuser.AddUsersRow(drUser); } else { if (string.IsNullOrEmpty(drUser.password)) //암호가 아에없다면 기본 0으로 설정 drUser.password = "B6589FC6AB0DC82CF12099D1C2D40AB994E8410C"; else if (newpassword.isEmpty() == false) drUser.password = newpassword;// "B6589FC6AB0DC82CF12099D1C2D40AB994E8410C"; drUser.name = tbNameK.Text.Trim(); drUser.nameE = tbNameE.Text.Trim(); drUser.dept = this.tbDept.Text.Trim(); drUser.email = tbEmail.Text; drUser.tel = tbTel.Text; drUser.hp = tbHp.Text; drUser.indate = tbDateIn.Text; drUser.outdate = tbDateO.Text; drUser.memo = tbMemo.Text; drUser.processs = tbProcess.Text; drUser.grade = tbGrade.Text.Trim(); drUser.EndEdit(); } try { var cnt1 = taUserGrp.Update(dtUserGrp); var cnt2 = tauser.Update(dtuser); if(cnt1 +cnt2 != 2) { FCOMMON.Util.MsgE("저장에 문제가 생겼습니다\n관리자에게 문의 하시기 바랍니다"); } taUserGrp.Dispose(); tauser.Dispose(); this.DialogResult = DialogResult.OK; } catch (Exception ex) { FCOMMON.Util.MsgE("save error\n" + ex.Message); } } private void chkUserSt_CheckedChanged(object sender, EventArgs e) { } private void chkJobReport_CheckedChanged(object sender, EventArgs e) { } string newpassword = "";//"B6589FC6AB0DC82CF12099D1C2D40AB994E8410C"; //기본값 0 private void btChangePW_Click(object sender, EventArgs e) { var f = new fNewPassword(this.tbId.Text); if (f.ShowDialog() == DialogResult.OK) { var opass = Pub.MakePasswordEnc(f.tbPassO.Text); //해당 그룹에 해당 사용자가 존재하는지 확이한다. var gcode = FCOMMON.info.Login.gcode; var uid = tbId.Text; var db = new EEEntitiesMain(); var drUser = db.Users.SingleOrDefault(t => t.id == uid); if (drUser != null) { if (opass.Equals(drUser.password) == false) { Util.MsgE("기존 암호가 일치하지 않습니다"); return; } } else { Util.MsgE("사용자 정보가 없어 처리할 수 없습니다"); return; } newpassword = Pub.MakePasswordEnc(f.newpassword); Util.MsgI($"암호가 변경되었습니다.[저장] 버튼을 누르면 적용 됩니다"); } } } }