using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; namespace FPJ0000 { public partial class fProjectData : FCOMMON.fBase { dsPRJ.ProjectsRow dr = null; public fProjectData(dsPRJ.ProjectsRow pidx_) { InitializeComponent(); this.UseFormSetting = false; this.dr = pidx_; this.dsPRJ.ProjectsHistory.TableNewRow += ProjectsHistory_TableNewRow; } void ProjectsHistory_TableNewRow(object sender, DataTableNewRowEventArgs e) { e.Row["wuid"] = FCOMMON.info.Login.no; e.Row["wdate"] = DateTime.Now; e.Row["pidx"] = this.dr.idx; e.Row["div"] = ""; e.Row["remark"] = string.Empty; e.Row["pdate"] = DateTime.Now.ToShortDateString(); } private void fProjectData_Load(object sender, EventArgs e) { //상태 var dt_eetproc = FCOMMON.DBM.getCodeTable("10"); this.cmbProcess.DisplayMember = "Value"; this.cmbProcess.ValueMember = "Value"; this.cmbProcess.DataSource = dt_eetproc; //분류 - 190903 var dt_cate = FCOMMON.DBM.getCodeTable("20", "code"); this.cmbCate.DisplayMember = "Value"; this.cmbCate.ValueMember = "Value"; this.cmbCate.DataSource = dt_cate; //공정 var dt_status = FCOMMON.DBM.getCodeTable("01"); this.cmbState.DisplayMember = "Value"; this.cmbState.ValueMember = "Value"; this.cmbState.DataSource = dt_status; //파트 var dt_part = FCOMMON.DBM.getCodeTable("11"); this.cmbPart.DisplayMember = "Value"; this.cmbPart.ValueMember = "Value"; this.cmbPart.DataSource = dt_part; this.bs.DataSource = dr; if (string.IsNullOrEmpty(dr.CMP_After) == false) rtAft.Rtf = dr.CMP_After; if (string.IsNullOrEmpty(dr.CMP_Before) == false) rtBef.Rtf = dr.CMP_Before; if (string.IsNullOrEmpty(dr.CMP_Description) == false) rtDesc.Rtf = dr.CMP_Description; if (string.IsNullOrEmpty(dr.CMP_Background) == false) rtBack.Rtf = dr.CMP_Background; //주간일지내역을 업데이트 refresh_History(); //일업무현황 업데이트 this.taHistD.Fill(this.dsPRJ.EETGW_ProjecthistoryD, this.dr.idx); //todo 업데이트 refreshTodo(); try { if (dr.idx >= 0) this.taSchedule.Fill(this.dsPRJ.ProjectsSchedule, this.dr.idx); } catch (System.Exception ex) { rtBack.Text = rtDesc.Text = rtAft.Text = rtBef.Text = ""; System.Windows.Forms.MessageBox.Show(ex.Message); } this.cmbProcess.Text = dr.process; this.cmbState.Text = dr.status; this.cmbPart.Text = dr.part; this.cmbCate.Text = dr.category; //신규데이터는 추가정보를 바로 저장할 수 없다. if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Deleted) { FCOMMON.Util.MsgI("신규자료는 저장을 하기 전에는 파트리스트/IO맵/주간업무등의 서브데이터를 추가할 수 없습니다."); btPart.Enabled = false; } btIO.Enabled = btPart.Enabled; //btWeek.Enabled = btPart.Enabled; btMailAddr.Enabled = btPart.Enabled; btPath.Enabled = btPart.Enabled; btSendMail.Enabled = btPart.Enabled; //일반사용자의경우에는 상태를 변경하지 못한다. int curLevel = Math.Max(FCOMMON.info.Login.level, FCOMMON.DBM.getAuth(FCOMMON.DBM.eAuthType.project)); if (curLevel >= 5) { } else { tbPath.ReadOnly = true; } } private void btSave_Click(object sender, EventArgs e) { this.dr.process = cmbProcess.Text; this.dr.status = cmbState.Text; this.dr.part = cmbPart.Text; this.dr.category = cmbCate.Text; this.dr.CMP_After = rtAft.Rtf; this.dr.CMP_Before = rtBef.Rtf; this.dr.CMP_Description = rtDesc.Rtf; this.dr.CMP_Background = rtBack.Rtf; this.Validate(); this.bs.EndEdit(); this.bsHistWeek.EndEdit(); this.bsHistDay.EndEdit(); this.bsTodo.EndEdit(); this.taToDo.Update(this.dsPRJ.EETGW_ProjectToDo); this.taHist.Update(this.dsPRJ.ProjectsHistory); this.taHistD.Update(this.dsPRJ.EETGW_ProjecthistoryD); this.DialogResult = System.Windows.Forms.DialogResult.OK; //this.tableAdapterManager.UpdateAll(this.dsPRJ); } private void btMailAddr_Click(object sender, EventArgs e) { fMailList f = new fMailList(this.dr.idx); f.ShowDialog(); } private void btPath_Click(object sender, EventArgs e) { string path = tbPath.Text.Trim(); if (path == "") { path = "\\10.131.32.29\\Data\\Projects\\"; path += tbIdx.Text; tbPath.Text = path; } var dlg = FCOMMON.Util.MsgQ("다음 폴더를 표시할까요?\n\n" + path); if (dlg == System.Windows.Forms.DialogResult.Yes) FCOMMON.Util.RunExplorer(path); } private void btPart_Click(object sender, EventArgs e) { var f = new fPartList(dr.idx); f.ShowDialog(); } private void btIO_Click(object sender, EventArgs e) { var f = new fProjectIOMap(dr.idx); f.ShowDialog(); } private void btWeek_Click(object sender, EventArgs e) { } private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e) { var drv = this.bsHistWeek.Current as DataRowView; if (drv == null) return; var dlg = FCOMMON.Util.MsgQ("선택된 업무현황을 삭제하시겠습니까?" + "\n\n메일이 발송 완료된 경우 발송된 메일은 삭제되지 않습니다."); if (dlg == System.Windows.Forms.DialogResult.Yes) this.bsHistWeek.RemoveCurrent(); } private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e) { var newdr = this.dsPRJ.ProjectsHistory.NewProjectsHistoryRow(); var f = new fHistAdd(newdr); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { bsHistWeek.EndEdit(); this.dsPRJ.ProjectsHistory.AddProjectsHistoryRow(newdr); } else newdr.Delete(); } private void btSendMail_Click(object sender, EventArgs e) { List prjlist = new List(); prjlist.Add(int.Parse(this.tbIdx.Text)); fMailSend f = new fMailSend(prjlist); f.ShowDialog(); refresh_History(); } void refresh_History() { try { if (dr.idx >= 0) this.taHist.Fill(this.dsPRJ.ProjectsHistory, this.dr.idx); } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } } private void btwEdit_Click(object sender, EventArgs e) { var drv = this.bsHistWeek.Current as DataRowView; if (drv == null) return; var newdr = drv.Row as dsPRJ.ProjectsHistoryRow; var f = new fHistAdd(newdr); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { newdr.EndEdit(); } } private void dataGridView1_DoubleClick(object sender, EventArgs e) { btwEdit.PerformClick(); } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (tbPath.Text == "") tbPath.Text = "/" + tbIdx.Text; if (tbPath.Text.StartsWith("\\") == false) { if (tbPath.Text.StartsWith("/")) tbPath.Text = tbPath.Text.Replace("/", "\\"); else tbPath.Text = "\\" + tbPath.Text; } var serverpath = @"\\10.131.32.29\Data\Project"; if (System.IO.Directory.Exists(serverpath) == false) { FCOMMON.Util.MsgE("프로젝트 기본경로가 존재하지 않아 진행할 수 없습니다\n\n" + serverpath); return; } var path = serverpath + tbPath.Text; if (System.IO.Directory.Exists(path) == false) { try { System.IO.Directory.CreateDirectory(path); string[] subdir = new string[] { "Source", "Document", "Draw", "Estimate" }; foreach (var dir in subdir) System.IO.Directory.CreateDirectory(path + "\\" + dir); } catch (Exception eX) { FCOMMON.Util.MsgE("프로젝트 저장소 생성실패\n" + eX.Message); return; } } FCOMMON.Util.RunExplorer(path); } void SelectDate(TextBox ctl) { DateTime dt; var dateStr = ctl.Text.Trim(); if (dateStr == "") dateStr = DateTime.Now.ToShortDateString(); else { if (DateTime.TryParse(dateStr, out dt)) dateStr = dt.ToShortDateString(); else { FCOMMON.Util.MsgE("날짜 형식으로 변환할 수 없는 문자열 입니다.\n" + "기준일자가 금일로 변경 됩니다"); dateStr = DateTime.Now.ToShortDateString(); } } dt = DateTime.Parse(dateStr); var f = new FCOMMON.fSelectDay(dt); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ctl.Text = f.dtPick.SelectionStart.ToShortDateString(); } } private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { SelectDate(sdateTextBox); } private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { SelectDate(ddateTextBox); } private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { SelectDate(edateTextBox); } private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { SelectDate(textBox1); } private void bs_CurrentChanged(object sender, EventArgs e) { } private void rtBack_Click(object sender, EventArgs e) { } private void rtBack_DoubleClick(object sender, EventArgs e) { var rt = sender as System.Windows.Forms.RichTextBox; var f = new Note.fTextEditor(rt.Rtf); if (f.ShowDialog() == DialogResult.OK) rt.Rtf = f.richTextBoxEx1.Rtf; } private void toolStripButton5_Click(object sender, EventArgs e) { //일업무현황 추가 var newdr = this.dsPRJ.EETGW_ProjecthistoryD.NewEETGW_ProjecthistoryDRow(); newdr.wuid = FCOMMON.info.Login.no; newdr.wdate = DateTime.Now; newdr.pidx = this.dr.idx; newdr.pdate = DateTime.Now.ToShortDateString(); var f = new fHistAddDay(newdr); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.bsHistDay.EndEdit(); this.dsPRJ.EETGW_ProjecthistoryD.AddEETGW_ProjecthistoryDRow(newdr); } else newdr.Delete(); } private void toolStripButton6_Click(object sender, EventArgs e) { var drv = this.bsHistDay.Current as DataRowView; if (drv == null) return; var newdr = drv.Row as dsPRJ.EETGW_ProjecthistoryDRow; var f = new fHistAddDay(newdr); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { newdr.EndEdit(); } } private void toolStripButton7_Click(object sender, EventArgs e) { var drv = this.bsHistDay.Current as DataRowView; if (drv == null) return; var dlg = FCOMMON.Util.MsgQ("선택된 일 업무 현황을 삭제하시겠습니까?"); if (dlg == System.Windows.Forms.DialogResult.Yes) this.bsHistDay.RemoveCurrent(); } private void toolStripButton15_Click(object sender, EventArgs e) { refreshTodo(); } void refreshTodo() { taToDo.Fill(this.dsPRJ.EETGW_ProjectToDo, this.dr.idx); this.dataGridView3.AutoResizeColumns(); updatetimetable(); formmatingdata(); } private void toolStripButton12_Click(object sender, EventArgs e) { //add var newdr = this.dsPRJ.EETGW_ProjectToDo.NewEETGW_ProjectToDoRow(); newdr.pidx = this.dr.idx; newdr.wuid = FCOMMON.info.Login.no; newdr.wdate = DateTime.Now; this.dsPRJ.EETGW_ProjectToDo.AddEETGW_ProjectToDoRow(newdr); } private void toolStripButton13_Click(object sender, EventArgs e) { //edit } private void toolStripButton14_Click(object sender, EventArgs e) { //delete this.bsTodo.RemoveCurrent(); } private void toolStripButton16_Click(object sender, EventArgs e) { } void updatetimetable() { this.panel9.Invalidate(); } void formmatingdata() { //색상을 변경해준다. (그룹은 자료가 있으나, 항목에 자료가 없다면 타이틀이다) foreach (DataGridViewRow dr in this.dataGridView3.Rows) { var o_grp = dr.Cells[1].Value; var o_item = dr.Cells[4].Value; var v_grp = string.Empty; var v_item = string.Empty; if (o_grp != null) v_grp = o_grp.ToString(); if (o_item != null) v_item = o_item.ToString(); if (v_grp.Equals("") == false && v_item.Equals("")) dr.DefaultCellStyle.BackColor = System.Drawing.Color.White; else dr.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(220, 220, 220); } } private void toolStripButton13_Click_1(object sender, EventArgs e) { //save try { this.Validate(); this.bsTodo.EndEdit(); var cnt = taToDo.Update(this.dsPRJ.EETGW_ProjectToDo); this.dataGridView3.AutoResizeColumns(); updatetimetable(); } catch (Exception ex) { FCOMMON.Util.MsgE(ex.Message); } } private void panel9_Paint(object sender, PaintEventArgs e) { //타임테이블을 그린다. e.Graphics.Clear(System.Drawing.Color.Black); e.Graphics.DrawString("time table", this.Font, System.Drawing.Brushes.White, 10, 10); var lst = this.dsPRJ.EETGW_ProjectToDo.Where(t => t.title == null).OrderBy(t => t.sort).ToList(); if (lst.Count < 1) return; var strh = panel9.Height / lst.Count; for (int i = 0; i < lst.Count; i++) { var y = strh * i; e.Graphics.DrawLine(System.Drawing.Pens.Yellow, 0, y, panel9.Width, y); } foreach (dsPRJ.EETGW_ProjectToDoRow dr in lst) { e.Graphics.DrawString(dr.title, this.Font, System.Drawing.Brushes.Black, 10, 10); } } } }