using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace FPJ0000.OtConfirm { public partial class fHolyRequestAdd : Form { DSKuntae.EETGW_HolydayRequestRow dr; public fHolyRequestAdd(DSKuntae.EETGW_HolydayRequestRow dr_) { InitializeComponent(); dr = dr_; var 구분목록 = FCOMMON.DBM.getCodeList("50"); var 사유목록 = FCOMMON.DBM.getCodeList("51"); var 위치목록 = FCOMMON.DBM.getCodeList("52"); var 백업목록 = FCOMMON.DBM.getCodeList("53"); tbCate.Items.Clear(); tbReason.Items.Clear(); tbLocation.Items.Clear(); tbBackup.Items.Clear(); foreach (var item in 구분목록) tbCate.Items.Add(item.Value); foreach (var item in 사유목록) tbReason.Items.Add(item.Value); foreach (var item in 위치목록) tbLocation.Items.Add(item.Value); foreach (var item in 백업목록) tbBackup.Items.Add(item.Value); if (dr.RowState == DataRowState.Detached) { this.Text = "휴가신청 추가"; tbName.Text = FCOMMON.info.Login.nameK; tbProcess.Text = FCOMMON.info.Login.process; tbTel.Text = FCOMMON.info.Login.tel; } else { this.Text = "휴가신청 편집"; tbName.Text = dr.name; tbProcess.Text = dr.processs; tbTel.Text = dr.tel; } if (dr.conf == 1) rad1.Checked = true; else if (dr.conf == 2) rad2.Checked = true; else rad0.Checked = true; tbCate.Text = dr.cate; tbRemark.Text = dr.Remark; tbResponse.Text = dr.Response; tbSD.Value = DateTime.Parse(dr.sdate); tbED.Value = DateTime.Parse(dr.edate); tbReason.Text = dr.HolyReason; tbLocation.Text = dr.HolyLocation; tbBackup.Text = dr.HolyBackup; tbDays.Text = dr.HolyDays.ToString(); //211224 tbTimes.Text = dr.HolyTimes.ToString(); if(dr.cate == "대체") { tbTimes.Enabled = true; tbDays.Enabled = false; tbCate.Enabled = false; radTime.Checked = true; } else { tbCate.Enabled = true; tbTimes.Enabled = false; tbDays.Enabled = true; radioButton2.Checked = true; } } int curLevel = 0; private void fHolyRequestAdd_Load(object sender, EventArgs e) { curLevel = Math.Max(FCOMMON.info.Login.level, FCOMMON.DBM.getAuth(FCOMMON.DBM.eAuthType.holyreq)); //관리자라면 관리자패널을 활성해준다. if (dr.RowState == DataRowState.Detached) { grpAdmin.Enabled = false; UpdateStatus(); } else { grpAdmin.Enabled = curLevel >= 5; var 관리자사전멘트 = FCOMMON.DBM.getCodeList("54"); cmbPreset.Items.Clear(); cmbPreset.Items.Add(" -- 저장된 문구를 선택하세요(공용:54) --"); cmbPreset.Items.AddRange(관리자사전멘트.Select(t => t.Value).ToArray()); cmbPreset.SelectedIndex = 0; } } private void button1_Click(object sender, EventArgs e) { var cate = tbCate.Text.Trim(); if (radTime.Checked) cate = "대체"; var remark = tbRemark.Text.Trim(); var response = tbResponse.Text.Trim(); if (string.IsNullOrEmpty(cate)) { FCOMMON.Util.MsgE("구분을 입력하세요"); tbCate.Focus(); return; } if (tbED.Value.ToShortDateString().CompareTo(tbSD.Value.ToShortDateString()) < 0) { FCOMMON.Util.MsgE("시작일~종료일 범위를 확인하세요"); return; } var vDay = 0; var vTime = 0f; if (tbDays.Enabled == false) tbDays.Text = string.Empty; if (tbTimes.Enabled == false) tbTimes.Text = string.Empty; if (tbDays.Text.IsNumeric()) vDay = int.Parse(tbDays.Text.Trim()); if (tbTimes.Text.IsNumeric()) vTime = float.Parse(tbTimes.Text.Trim()); if (vDay > 0 && vTime > 0) { FCOMMON.Util.MsgE("사용일/시간을 동시에 입력할 수는 없습니다.\r\n" + "대체휴가의 경우에만 시간을 입력하시기 바랍니다"); return; } if (vDay < 1 && vTime < 0.1) { FCOMMON.Util.MsgE("사용 일/시간 값을 입력해주세요\n대체휴가에는 시간을 입력하세요"); return; } //하나도 입력안했다면 경고한다 if(tbReason.Text.isEmpty() && tbLocation.Text.isEmpty() && tbBackup.Text.isEmpty() && tbRemark.Text.isEmpty()) { FCOMMON.Util.MsgE("비고를 입력해주세요"); tbRemark.Focus(); return; } if (dr.RowState == DataRowState.Detached) { var dlg = FCOMMON.Util.MsgQ("입력을 완료하시겠습니까?\r\n관리자에게 메일로 알림이 발생 합니다"); if (dlg != DialogResult.Yes) return; } if (curLevel >= 5 && rad2.Checked) { if (string.IsNullOrEmpty(response)) { FCOMMON.Util.MsgE("거절 사유를 입력 해주세요"); tbResponse.Focus(); return; } } dr.HolyReason = tbReason.Text.Trim(); dr.HolyLocation = tbLocation.Text.Trim(); dr.HolyBackup = tbBackup.Text.Trim(); dr.cate = cate;// tbCate.Text.Trim(); dr.Remark = tbRemark.Text.Trim(); dr.Response = tbResponse.Text.Trim(); dr.sdate = tbSD.Value.ToShortDateString(); dr.edate = tbED.Value.ToShortDateString(); dr.sendmail = chkSendMail.Checked; //220104 dr.HolyDays = vDay; dr.HolyTimes = vTime;// if (rad0.Checked) dr.conf = 0; else if (rad1.Checked) dr.conf = 1; else if (rad2.Checked) dr.conf = 2; else dr.conf = 0; dr.EndEdit(); DialogResult = DialogResult.OK; } private void button2_Click(object sender, EventArgs e) { } private void cmbPreset_SelectedIndexChanged(object sender, EventArgs e) { if (cmbPreset.SelectedIndex > 0) tbResponse.Text = cmbPreset.Text; } private void tbED_ValueChanged(object sender, EventArgs e) { UpdateStatus(); } void UpdateStatus() { //해당 값이 오늘보다 이전이라면 메일전송을 자동 해제하낟. var v = tbED.Value.ToShortDateString(); var s = tbSD.Value.ToShortDateString(); var c = DateTime.Now.ToShortDateString(); if (v.CompareTo(c) < 0) chkSendMail.Checked = false; else chkSendMail.Checked = true; //일수계산 var term = tbED.Value - tbSD.Value; var days = term.Days + 1; if (radTime.Checked == false) { //if(tbDays.Text.isEmpty() || tbDays.Text=="0") { tbDays.Text = (days).ToString(); } } else { //여기는 시간 //if (tbTimes.Text.isEmpty() || tbTimes.Text == "0") { tbTimes.Text = (days * 8).ToString(); } } } private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (radTime.Checked) { tbCate.Enabled = false; tbDays.Enabled = false; tbTimes.Enabled = true; tbDays.BackColor = Color.DimGray; tbTimes.BackColor = Color.Gold; } else { tbCate.Enabled = true; tbDays.Enabled = true; tbTimes.Enabled = false; tbTimes.BackColor = Color.DimGray; tbDays.BackColor = Color.Gold; } UpdateStatus(); } } }