Files
Groupware/SubProject/FPJ0000/Project/fProjectData.cs
chi bd442b73a8 문자편집기 창 별도 추가했음,
휴가내역 정렬 수정
2020-06-05 13:10:14 +09:00

332 lines
12 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;
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");
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();
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.bsWeek.EndEdit();
this.taHist.Update(this.dsPRJ.ProjectsHistory);
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.36.205\\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.bsWeek.Current as DataRowView;
if (drv == null) return;
var dlg = FCOMMON.Util.MsgQ("선택된 업무현황을 삭제하시겠습니까?" +
"\n\n메일이 발송 완료된 경우 발송된 메일은 삭제되지 않습니다.");
if (dlg == System.Windows.Forms.DialogResult.Yes)
this.bsWeek.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)
{
bsWeek.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.bsWeek.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.36.57\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;
}
}
}