314 lines
13 KiB
C#
314 lines
13 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;
|
|
|
|
using System.DirectoryServices;
|
|
using System.IO;
|
|
using CsvHelper;
|
|
using System.Globalization;
|
|
|
|
namespace Project._Common
|
|
{
|
|
|
|
public partial class fADSUserList : FCOMMON.fBase
|
|
{
|
|
public fADSUserList()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void fADSUserList_Load(object sender, EventArgs e)
|
|
{
|
|
EnsureVisibleAndUsableSize();
|
|
this.lbDomain.Text = this.DomainName();
|
|
this.btInsert.Visible = (FCOMMON.info.Login.level > 9);
|
|
this.tbEntry.Text = "LDAP://OU=Office,OU=Users,OU=People,OU=K4,DC=kr,DC=ds,DC=amkor,DC=com";
|
|
this.tbEntry.Enabled = this.btInsert.Visible;
|
|
}
|
|
public string DomainName()
|
|
{
|
|
var objRootDSE = new DirectoryEntry("LDAP://RootDSE");
|
|
return objRootDSE.Properties["defaultNamingContext"][0].ToString();
|
|
}
|
|
|
|
private void toolStripButton1_Click(object sender, EventArgs e)
|
|
{
|
|
this.listView1.Items.Clear();
|
|
this.listView1.Columns.Clear();
|
|
this.listView1.CheckBoxes = true;
|
|
this.listView1.Columns.Add("sn");
|
|
this.listView1.Columns.Add("cn");
|
|
this.listView1.Columns.Add("disp");
|
|
this.listView1.Columns.Add("dept");
|
|
this.listView1.Columns.Add("title");
|
|
this.listView1.Columns.Add("tel");
|
|
this.listView1.Columns.Add("mail");
|
|
this.listView1.Columns.Add("pager");
|
|
this.listView1.Columns.Add("empno");
|
|
this.listView1.Columns.Add("when");
|
|
this.listView1.Visible = false;
|
|
|
|
this.listView1.View = View.Details;
|
|
|
|
string[] propliest = new string[] { "whenCreated", "telephonenumber", "title", "employeeNumber", "department", "displayName", "mail", "pager", "sn", "cn" };
|
|
|
|
Boolean skipuser = false;
|
|
string dept = string.Empty;
|
|
string whencre = string.Empty;
|
|
string empno = string.Empty;
|
|
string disp = string.Empty;
|
|
string cn = string.Empty;
|
|
string sn = string.Empty;
|
|
string mail = string.Empty;
|
|
string title = string.Empty;
|
|
string pager = string.Empty;
|
|
string tel = string.Empty;
|
|
|
|
var deParent = new DirectoryEntry(tbEntry.Text);
|
|
|
|
string Nodename = "";
|
|
try
|
|
{
|
|
Nodename = deParent.SchemaClassName;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Util.MsgE(ex.Message + "\n" + tbEntry.Text);
|
|
Nodename = string.Empty;
|
|
}
|
|
if (Nodename != "")
|
|
{
|
|
if (deParent.Name.StartsWith("CN"))
|
|
{
|
|
//특정사용자 조회
|
|
|
|
foreach (string listIter in propliest)
|
|
{
|
|
foreach (object Iter in deParent.Properties[listIter.ToString()])
|
|
{
|
|
string strvalue = Iter.ToString();
|
|
switch (listIter.ToString().ToLower())
|
|
{
|
|
case "department":
|
|
dept = strvalue;
|
|
// var search = toolStripTextBox1.Text.Trim();
|
|
// if (search != "") if (dept.IndexOf(search) == -1) skipuser = true;
|
|
break;
|
|
case "whencreated": whencre = strvalue; break;
|
|
case "title": title = strvalue; break;
|
|
case "telephonenumber": tel = strvalue; break;
|
|
case "employeenumber": empno = strvalue; break;
|
|
case "displayname": disp = strvalue; break;
|
|
case "mail": mail = strvalue; break;
|
|
case "pager": pager = strvalue; break;
|
|
case "sn": sn = strvalue; break;
|
|
case "cn": cn = strvalue; break;
|
|
}
|
|
// if (skipuser) break;
|
|
}
|
|
// if (skipuser) break;
|
|
}
|
|
|
|
|
|
var lv = this.listView1.Items.Add(sn);
|
|
lv.Checked = true;
|
|
lv.SubItems.Add(cn);
|
|
lv.SubItems.Add(disp);
|
|
lv.SubItems.Add(dept);
|
|
lv.SubItems.Add(title);
|
|
lv.SubItems.Add(tel);
|
|
lv.SubItems.Add(mail);
|
|
lv.SubItems.Add(pager);
|
|
lv.SubItems.Add(empno);
|
|
lv.SubItems.Add(whencre);
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
foreach (DirectoryEntry deChild in deParent.Children)
|
|
{
|
|
skipuser = false;
|
|
dept = string.Empty;
|
|
whencre = string.Empty;
|
|
empno = string.Empty;
|
|
disp = string.Empty;
|
|
cn = string.Empty;
|
|
sn = string.Empty;
|
|
mail = string.Empty;
|
|
title = string.Empty;
|
|
pager = string.Empty;
|
|
tel = string.Empty;
|
|
|
|
foreach (string listIter in propliest)
|
|
{
|
|
foreach (object Iter in deChild.Properties[listIter.ToString()])
|
|
{
|
|
string strvalue = Iter.ToString();
|
|
switch (listIter.ToString().ToLower())
|
|
{
|
|
case "department":
|
|
dept = strvalue;
|
|
var search = toolStripTextBox1.Text.Trim();
|
|
if (search != "") if (dept.IndexOf(search) == -1) skipuser = true;
|
|
break;
|
|
case "whencreated": whencre = strvalue; break;
|
|
case "title": title = strvalue; break;
|
|
case "telephonenumber": tel = strvalue; break;
|
|
case "employeenumber": empno = strvalue; break;
|
|
case "displayname": disp = strvalue; break;
|
|
case "mail": mail = strvalue; break;
|
|
case "pager": pager = strvalue; break;
|
|
case "sn": sn = strvalue; break;
|
|
case "cn": cn = strvalue; break;
|
|
}
|
|
if (skipuser) break;
|
|
}
|
|
if (skipuser) break;
|
|
}
|
|
|
|
if (sn == "" || pager == "" || sn.ToUpper().StartsWith("k4") || sn.ToUpper().StartsWith("test")) skipuser = true;
|
|
if (skipuser) continue;
|
|
var lv = this.listView1.Items.Add(sn);
|
|
lv.Checked = true;
|
|
lv.SubItems.Add(cn);
|
|
lv.SubItems.Add(disp);
|
|
lv.SubItems.Add(dept);
|
|
lv.SubItems.Add(title);
|
|
lv.SubItems.Add(tel);
|
|
lv.SubItems.Add(mail);
|
|
lv.SubItems.Add(pager);
|
|
lv.SubItems.Add(empno);
|
|
lv.SubItems.Add(whencre);
|
|
|
|
|
|
if (listView1.Items.Count > 500) break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
FCOMMON.Util.MsgI("exit");
|
|
this.listView1.Visible = true;
|
|
}
|
|
|
|
private void btInsert_Click(object sender, EventArgs e)
|
|
{
|
|
System.Text.StringBuilder sb = new StringBuilder();
|
|
var items = this.listView1.CheckedItems;
|
|
sb.AppendLine("현재 목록의 선택된 자료를 입력하시겠습니까?");
|
|
sb.AppendLine("건수 : " + items.Count.ToString());
|
|
var dlg = FCOMMON.Util.MsgQ(sb.ToString());
|
|
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
|
|
|
|
this.prb1.Maximum = items.Count;
|
|
this.prb1.Value = 0;
|
|
foreach (ListViewItem item in items)
|
|
{
|
|
|
|
string sn = item.SubItems[0].Text; //이름
|
|
string cn = item.SubItems[1].Text; //숏네임
|
|
string disp = item.SubItems[2].Text;// 디스플레이네임
|
|
string dept = item.SubItems[3].Text; // lv.SubItems.Add(dept);
|
|
string title = item.SubItems[4].Text;// lv.SubItems.Add(title);
|
|
string tel = item.SubItems[5].Text; // lv.SubItems.Add(tel);
|
|
string mail = item.SubItems[6].Text; // lv.SubItems.Add(mail);
|
|
string pager = item.SubItems[7].Text; // lv.SubItems.Add(pager);
|
|
string empno = item.SubItems[8].Text; // lv.SubItems.Add(empno);
|
|
string whencre = item.SubItems[9].Text; // lv.SubItems.Add(whencre);
|
|
|
|
try
|
|
{
|
|
//이 대상의 id가 잇는지 체크한다.
|
|
if (taUser.ExistID(pager) > 0)
|
|
{
|
|
taUser.UpdateDept(dept, sn, title, pager);
|
|
}
|
|
else
|
|
{
|
|
taUser.InsertADSInfo(
|
|
pager, disp, sn, dept,
|
|
mail, tel, empno, title,
|
|
whencre,
|
|
"Auto Gen", FCOMMON.info.Login.no, DateTime.Now);
|
|
}
|
|
|
|
}
|
|
catch (Exception eX)
|
|
{
|
|
Console.WriteLine(sn + eX.Message);
|
|
}
|
|
|
|
this.prb1.Value += 1;
|
|
}
|
|
|
|
}
|
|
|
|
private void allSelectToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
foreach (ListViewItem item in this.listView1.Items)
|
|
item.Checked = true;
|
|
}
|
|
|
|
private void deSelectToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
foreach (ListViewItem item in this.listView1.Items)
|
|
item.Checked = !item.Checked;
|
|
}
|
|
|
|
private void unSelectToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
foreach (ListViewItem item in this.listView1.Items)
|
|
item.Checked = false;
|
|
}
|
|
|
|
private void toolStripButton2_Click(object sender, EventArgs e)
|
|
{
|
|
var sd = new SaveFileDialog();
|
|
sd.Filter = "csv|*.csv";
|
|
if (sd.ShowDialog() != DialogResult.OK) return;
|
|
var records = new List<List<string>>();
|
|
var data = new List<object>();
|
|
|
|
//데이터입력
|
|
foreach (ListViewItem item in this.listView1.Items)
|
|
{
|
|
|
|
|
|
data.Add(new
|
|
{
|
|
sn = item.SubItems[0].Text,
|
|
cn = item.SubItems[1].Text,
|
|
disp = item.SubItems[2].Text,
|
|
dept = item.SubItems[3].Text,
|
|
title = item.SubItems[4].Text,
|
|
tel = item.SubItems[5].Text,
|
|
mail = item.SubItems[6].Text,
|
|
pager = item.SubItems[7].Text,
|
|
empno = item.SubItems[8].Text,
|
|
when = item.SubItems[9].Text,
|
|
});
|
|
|
|
//records.Add(data);
|
|
}
|
|
using (var writer = new StreamWriter(sd.FileName,false, System.Text.Encoding.Default))
|
|
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
|
|
{
|
|
//foreach (var item in records)
|
|
//{
|
|
// csv.WriteRecord(item);
|
|
//}
|
|
|
|
csv.WriteRecords(data);
|
|
}
|
|
FCOMMON.Util.MsgI("저장완료");
|
|
}
|
|
}
|
|
}
|