Files
Groupware/SubProject/FPJ0000/JobReport_/fProjectConnect.cs
2022-06-17 14:11:33 +09:00

168 lines
4.4 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.Threading.Tasks;
using System.Windows.Forms;
namespace FPJ0000.JobReport_
{
public partial class fProjectConnect : Form
{
public fProjectConnect(string sd, string ed)
{
InitializeComponent();
dts.Value = DateTime.Parse(sd);
dte.Value = DateTime.Parse(ed);
}
private void fProjectConnect_Load(object sender, EventArgs e)
{
RefreshList();
}
void RefreshList()
{
var cn = FCOMMON.DBM.getCn();
var sd = dts.Value.ToShortDateString();
var ed = dte.Value.ToShortDateString();
var sql =
$"select projectName,max(pidx) as pidx " +
$" from JobReport" +
$" where gcode = '{FCOMMON.info.Login.gcode}'" +
$" and uid = '{FCOMMON.info.Login.no}'" +
$" and pdate between '{sd}' and '{ed}'" +
$" and pidx = -1" +
$" and isnull(projectname,'') <> ''" +
$" group by projectName" +
$" order by projectName";
if (cn.State == ConnectionState.Closed) cn.Open();
var cmd = new System.Data.SqlClient.SqlCommand(sql, cn);
var rd = cmd.ExecuteReader();
listView1.Items.Clear();
while (rd.Read())
{
var title = rd[0].ToString();
var pidx = int.Parse(rd[1].ToString());
var lv = this.listView1.Items.Add(pidx.ToString());
lv.SubItems.Add(title);
}
rd.Close();
//전체프로젝트목록을 가져온다
sql =
$" select idx,status,name,pdate,userManager" +
$" from Projects" +
$" where gcode = '{FCOMMON.info.Login.gcode}'" +
$" and isnull(isdel,0) = 0 and isnull(name,'') <> '' and isnull(status,'') <> '취소'" +
$" order by status ,name,pdate desc";
cmd.CommandText = sql;
rd = cmd.ExecuteReader();
//comboBox1.Items.Clear();
var dt = new DataTable();
dt.Columns.Add("idx");
dt.Columns.Add("title");
dt.Columns.Add("display");
dt.Columns.Add("status");
while (rd.Read())
{
var pidx = int.Parse(rd[0].ToString());
var stats = rd[1].ToString();
var title = rd[2].ToString();
var pdate = rd[3].ToString();
var manager = rd[4].ToString();
var itemtitle = $"[{pidx:00000}] ({stats}) {title} ##{manager}";
dt.Rows.Add(new object[] {pidx,title,itemtitle,stats });
}
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "display";
comboBox1.ValueMember = "idx";
comboBox1.SelectedIndex = -1;
rd.Close();
cmd.Dispose();
cn.Close();
cn.Dispose();
}
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.SelectedIndex < 0) return;
var txt = comboBox1.SelectedItem as DataRowView;
if (txt == null) return;
List<ListViewItem> lvs = new List<ListViewItem>();
if(listView1.CheckedItems.Count < 1)
{
if (listView1.FocusedItem == null)
{
FCOMMON.Util.MsgE("변경할 자료를 선택하세요.");
return;
}
else lvs.Add(listView1.FocusedItem);
}
else
{
foreach (ListViewItem item in listView1.CheckedItems)
lvs.Add(item);
}
var idx = txt["idx"].ToString();
var title = txt["title"].ToString();
var sb = new System.Text.StringBuilder();
sb.AppendLine("다음 자료의 프로젝트를 연결 할까요?\n");
foreach (var item in lvs)
sb.Append($"[ {item.SubItems[1].Text} ]");
sb.AppendLine();
sb.AppendLine();
sb.AppendLine($"연결대상 프로젝트 : [{idx}] {title}");
if (FCOMMON.Util.MsgQ(sb.ToString()) != DialogResult.Yes) return;
var cn = FCOMMON.DBM.getCn();
var sd = dts.Value.ToShortDateString();
var ed = dte.Value.ToShortDateString();
if (cn.State == ConnectionState.Closed) cn.Open();
var cmd = new System.Data.SqlClient.SqlCommand("", cn);
foreach (var item in lvs)
{
var sql =
$" update jobreport set projectName='{title}',pidx={idx}" +
$" from JobReport" +
$" where gcode = '{FCOMMON.info.Login.gcode}'" +
$" and uid = '{FCOMMON.info.Login.no}'" +
$" and pdate between '{sd}' and '{ed}'" +
$" and pidx = -1" +
$" and isnull(projectname,'') = '{item.SubItems[1].Text}'";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
cmd.Dispose();
cn.Close();
cn.Dispose();
}
private void btRefresh_Click(object sender, EventArgs e)
{
RefreshList();
}
}
}