Files
Groupware/SubProject/FPJ0000/OtConfirm/fHolyRequest.cs
2021-12-25 21:34:14 +09:00

338 lines
11 KiB
C#

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;
using util = FCOMMON.Util;
namespace FPJ0000
{
public partial class fHolyRequest : FCOMMON.fBase
{
int curLevel = 0;
string fn_fpcolsize = "";
public fHolyRequest()
{
InitializeComponent();
fn_fpcolsize = util.MakeFilePath(util.CurrentPath, "formSetting", "fp_" + this.Name + ".ini");
this.dSKuntae.EETGW_HolydayRequest.TableNewRow += Projects_TableNewRow;
this.FormClosed += __Closed;
dtSD.KeyDown += dtSD_KeyDown;
dtED.KeyDown += dtSD_KeyDown;
//관리자승인용 콤보박스 구성
var dtCmbCF = new DataTable();
dtCmbCF.Columns.Add("DP", typeof(String));
dtCmbCF.Columns.Add("VAL", typeof(Int32));
dtCmbCF.Rows.Add(new object[] { "선택안함", 0 });
dtCmbCF.Rows.Add(new object[] { "승인", 1 });
dtCmbCF.Rows.Add(new object[] { "거절", 2 });
cmbCf.DataSource = dtCmbCF;
cmbCf.DisplayMember = "DP";
cmbCf.ValueMember = "VAL";
dv1.EditMode = DataGridViewEditMode.EditProgrammatically;
}
void __Closed(object sender, FormClosedEventArgs e)
{
}
Boolean binit = false;
private void __Load(object sender, EventArgs e)
{
curLevel = Math.Max(FCOMMON.info.Login.level, FCOMMON.DBM.getAuth(FCOMMON.DBM.eAuthType.holyreq));
this.dtED.Text = DateTime.Now.AddMonths(1).ToShortDateString();// sdate.AddMonths(1).AddDays(-1).ToShortDateString();
this.dtSD.Text = DateTime.Now.AddMonths(-3).ToShortDateString();
btSave.Visible = curLevel >= 5;
btEdit.Text = curLevel >= 5 ? "승인(&E)" : "편집(&E)";
refreshData();
binit = true;
}
private bool getKisulInput
{
get
{
return FCOMMON.Util.getBit(
FCOMMON.info.Login.gpermission,
(int)FCOMMON.eGroupPermission.jobreport_kisul);
}
}
void dtSD_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter) return;
var tb = sender as ToolStripTextBox;
var input = tb.Text.Trim();
if (input == "") tb.Text = DateTime.Now.ToShortDateString();
else
{
string dt = string.Empty;
if (!util.MakeDateString(input, out dt))
{
FCOMMON.Util.MsgE("입력값이 올바르지 않습니다.");
tb.SelectAll();
tb.Focus();
return;
}
else
{
tb.Text = dt;
}
}
if (tb == dtSD)
{
dtED.Focus();
dtED.SelectAll();
}
else
{
btSearch.PerformClick();
tb.SelectAll();
}
}
void refreshData()
{
//dsMSSQL.JobReport.Clear();
var sd = dtSD.Text.Trim();
var ed = dtED.Text.Trim();
ta.Fill(this.dSKuntae.EETGW_HolydayRequest, FCOMMON.info.Login.gcode, sd, ed);
}
void funcSave()
{
this.Validate();
this.bs.EndEdit();
try
{
var cnt = ta.Update(this.dSKuntae.EETGW_HolydayRequest);
util.MsgI($"{cnt}건의 자료가 저장되었습니다");
}
catch (Exception ex)
{
FCOMMON.Util.MsgE("저장 실패\n" + ex.Message);
}
}
void Projects_TableNewRow(object sender, DataTableNewRowEventArgs e)
{
e.Row["gcode"] = FCOMMON.info.Login.gcode;
e.Row["wuid"] = FCOMMON.info.Login.no;
e.Row["wdate"] = DateTime.Now;
e.Row["uid"] = FCOMMON.info.Login.no;
e.Row["tel"] = FCOMMON.info.Login.tel;
e.Row["processs"] = FCOMMON.info.Login.process;
e.Row["name"] = FCOMMON.info.Login.nameK;
e.Row["dept"] = FCOMMON.info.Login.dept;
e.Row["conf"] = 0;
e.Row["remark"] = string.Empty;
e.Row["holydays"] = 0;
e.Row["holytimes"] = 0f;
}
private void btSearch_Click(object sender, EventArgs e)
{
}
private void btFind_Click(object sender, EventArgs e)
{
var search = tbFind.Text.Trim();
search = search.Replace("*", "x");
if (tbFind.Text != search) tbFind.Text = search;
try
{
if (search.Trim() == "")
{
this.bs.Filter = "";
tbFind.BackColor = Color.White;
}
else
{
search = search.Replace("'", "''");
var collist = new string[] { "requestpart", "package", "projectname", "process", "[type]", "description", "tag" };
string filter = ""; // "itemna like ? or package like ? or projectname like ? or process like ? or [type] like ? or description like ?";
foreach (var col in collist)
{
if (filter != "") filter += " or ";
filter += col + " like ?";
}
filter = filter.Replace("?", "'%" + search + "%'");
this.bs.Filter = filter;
tbFind.BackColor = Color.Lime;
}
tbFind.SelectAll();
tbFind.Focus();
}
catch (Exception ex)
{
this.tbFind.BackColor = Color.Tomato;
FCOMMON.Util.MsgE(ex.Message);
}
}
private void tbFind_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) btFind.PerformClick();
}
private void btEdit_Click(object sender, EventArgs e)
{
funcSave();
}
private void lbStt_Click(object sender, EventArgs e)
{
var f = new FCOMMON.fSelectDay(DateTime.Parse(dtSD.Text));
if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
var sdDate = f.dtPick.SelectionStart;// DateTime.Parse(DateTime.Now.ToString("yyyy-") + f.selectmon.ToString() + "-01");
dtSD.Text = sdDate.ToShortDateString();
if (f.dtPick.SelectionStart.ToShortDateString() == f.dtPick.SelectionEnd.ToShortDateString())
dtED.Text = sdDate.AddMonths(1).AddDays(-1).ToShortDateString();
else
dtED.Text = f.dtPick.SelectionEnd.ToShortDateString();
refreshData();
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
this.Close();
}
private void btSearch_ButtonClick(object sender, EventArgs e)
{
refreshData();
}
private void toolStripLabel4_Click(object sender, EventArgs e)
{
var f = new FCOMMON.fSelectDay(DateTime.Parse(dtED.Text));
if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
dtED.Text = f.dtPick.SelectionStart.ToShortDateString();
}
private void arDatagridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
}
private void btAdd_Click(object sender, EventArgs e)
{
var newdr = this.dSKuntae.EETGW_HolydayRequest.NewEETGW_HolydayRequestRow();
newdr.sdate = DateTime.Now.ToShortDateString();
newdr.edate = DateTime.Now.ToShortDateString();
newdr.HolyDays = 0;
newdr.HolyTimes = 0f;
newdr.cate = "연차";
var f = new OtConfirm.fHolyRequestAdd(newdr);
if (f.ShowDialog() == DialogResult.OK)
{
newdr.EndEdit();
this.dSKuntae.EETGW_HolydayRequest.AddEETGW_HolydayRequestRow(newdr);
try
{
var cnt = ta.Update(this.dSKuntae.EETGW_HolydayRequest);
dSKuntae.EETGW_HolydayRequest.AcceptChanges();
FCOMMON.Util.MsgI($"{cnt}건의 자료가 저장 되었습니다");
}
catch (Exception ex)
{
FCOMMON.Util.MsgE(ex.Message);
}
}
else
{
newdr.Delete();
}
}
private void btEdit_Click_1(object sender, EventArgs e)
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DSKuntae.EETGW_HolydayRequestRow;
//내자료가 아니면 편집할수없다
if (curLevel < 5)
{
if (dr.uid != FCOMMON.info.Login.no)
{
FCOMMON.Util.MsgE("담당자만 자료를 편집할 수 있습니다");
return;
}
}
var f = new OtConfirm.fHolyRequestAdd(dr);
if (f.ShowDialog() == DialogResult.OK)
{
dr.EndEdit();
try
{
var cnt = ta.Update(dr);
dr.AcceptChanges();
if(cnt == 0)
FCOMMON.Util.MsgE($"저장 실패");
}
catch (Exception ex)
{
FCOMMON.Util.MsgE(ex.Message);
}
}
else
{
dr.RejectChanges();
}
}
private void btDel_Click(object sender, EventArgs e)
{
//승인되자료는 삭제할수 없음
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DSKuntae.EETGW_HolydayRequestRow;
curLevel = Math.Max(FCOMMON.info.Login.level, FCOMMON.DBM.getAuth(FCOMMON.DBM.eAuthType.holyreq));
if (curLevel < 5)
{
if (dr.conf != 0)
{
FCOMMON.Util.MsgE("승인된 자료는 삭제할 수 없습니다");
return;
}
if (dr.uid != FCOMMON.info.Login.no)
{
FCOMMON.Util.MsgE("담당자만 자료를 삭제할 수 있습니다");
return;
}
}
var dlg = FCOMMON.Util.MsgQ("삭제할까요?");
if (dlg != DialogResult.Yes) return;
bs.RemoveCurrent();
var cnt = ta.Update(this.dSKuntae.EETGW_HolydayRequest);
if(cnt == 0)
FCOMMON.Util.MsgQ("삭제가 완료되지 않았습니다");
}
}
}