472 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			472 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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<int> prjlist = new List<int>();
 | |
|             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);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | 
