395 lines
16 KiB
C#
395 lines
16 KiB
C#
using ExcelTest;
|
|
using MySqlX.XDevAPI.Relational;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Net.Http.Headers;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using UniMarc;
|
|
|
|
namespace WindowsFormsApp1.Home
|
|
{
|
|
public partial class Home_User_manage : Form
|
|
{
|
|
public string User_Name { get; internal set; }
|
|
bool mOverlap = false;
|
|
Helper_DB mDB = new Helper_DB();
|
|
Main main;
|
|
string comp_name = string.Empty;
|
|
string Table_User = "User_Data";
|
|
CheckBox[] tUserAccesschkBox;
|
|
string[] tUserAcess_Col;
|
|
public Home_User_manage(Main _main)
|
|
{
|
|
InitializeComponent();
|
|
main = _main;
|
|
comp_name = main.toolStripLabel2.Text;
|
|
|
|
tUserAccesschkBox =new CheckBox[] {
|
|
chk_Div_ListInput, chk_Div_ListLookup, chk_Div_ListTotal, chk_Div_OrderInput, chk_Div_Inven,
|
|
chk_Div_Stock, chk_Div_Return,
|
|
|
|
chk_Acc_SendMoneyList, chk_Acc_SendMoneyInput, chk_Acc_Buy, chk_Acc_Sales, chk_Acc_PartTime,
|
|
|
|
chk_Marc_Setup, chk_Marc_Work, chk_Marc_Input, chk_Marc_CopyCheck, chk_Marc_Option,
|
|
chk_Marc_DLS, chk_Marc_ETC,
|
|
|
|
chk_Manage_User, chk_Manage_Client, chk_Manage_Purchase, chk_Manage_Book
|
|
};
|
|
|
|
tUserAcess_Col =new string[] {
|
|
"id", "Div_ListInput", "Div_ListLookup", "Div_ListTotal", "Div_OrderInput", "Div_Inven",
|
|
"Div_Stock", "Div_Return",
|
|
|
|
"Acc_SendMoneyList", "Acc_SendMoneyInput", "Acc_Buy", "Acc_Sales", "Acc_PartTime",
|
|
|
|
"Marc_Setup", "Marc_Work", "Marc_Input", "Marc_CopyCheck", "Marc_Option",
|
|
"Marc_DLS", "Marc_ETC",
|
|
|
|
"Manage_User", "Manage_Client", "Manage_Purchase", "Manage_Book"
|
|
};
|
|
}
|
|
private void Form1_Load(object sender, EventArgs e)
|
|
{
|
|
mDB.DBcon();
|
|
//tb_Affil.Text = comp_name;
|
|
//tb_Affil.Enabled = false;
|
|
Load_CompanyList();
|
|
RefreshList();
|
|
}
|
|
/// <summary>
|
|
/// DB에 저장된 사용자 데이터를 dataGridView1로 입력하는 함수.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btn_lookup_Click(object sender, EventArgs e)
|
|
{
|
|
RefreshList();
|
|
}
|
|
private void RefreshList()
|
|
{
|
|
dataGridView1.Rows.Clear();
|
|
string Area = "`name`, `position`, `Phone`, `ID`, `PW`,`affil`";
|
|
string cmd = mDB.DB_Select_Search(Area, "User_Data", "affil", comp_name);
|
|
string db_res = mDB.DB_Send_CMD_Search(cmd);
|
|
string[] data = db_res.Split('|');
|
|
string[] grid = { "", "", "", "", "", "", "" };
|
|
for (int a = 0; a < data.Length; a++)
|
|
{
|
|
if (a % 6 == 0) { grid[0] = data[a]; }
|
|
if (a % 6 == 1) { grid[1] = data[a]; }
|
|
if (a % 6 == 2) { grid[2] = data[a]; }
|
|
if (a % 6 == 3) { grid[3] = data[a]; }
|
|
if (a % 6 == 4) { grid[4] = data[a]; }
|
|
if (a % 6 == 5)
|
|
{
|
|
grid[5] = data[a];
|
|
dataGridView1.Rows.Add(grid);
|
|
}
|
|
}
|
|
dataGridView1.ClearSelection();
|
|
}
|
|
private void Load_CompanyList()
|
|
{
|
|
cbCompany.Items.Clear();
|
|
string compName = main.toolStripLabel2.Text;
|
|
string cmd = string.Format("SELECT `comp_name` FROM Comp");
|
|
string res = mDB.self_Made_Cmd(cmd);
|
|
List<string> Aryres = res.Split('|').ToList();
|
|
Aryres.RemoveAll(x => x == "");
|
|
cbCompany.Items.AddRange(Aryres.ToArray());
|
|
}
|
|
|
|
private void chk_Div_ListInput_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void chk_Enabled(object sender, EventArgs e)
|
|
{
|
|
CheckBox Target = sender as CheckBox;
|
|
|
|
bool IsCheck = Target.Checked;
|
|
|
|
CheckBox[] Enabled = { chk_Div, chk_Acc, chk_Marc, chk_Manage };
|
|
|
|
CheckBox[] Div = {
|
|
chk_Div_ListInput, chk_Div_ListLookup, chk_Div_ListTotal, chk_Div_OrderInput, chk_Div_Inven,
|
|
chk_Div_Stock, chk_Div_Return
|
|
};
|
|
CheckBox[] Acc = {
|
|
chk_Acc_SendMoneyList, chk_Acc_SendMoneyInput, chk_Acc_Buy, chk_Acc_Sales, chk_Acc_PartTime
|
|
};
|
|
CheckBox[] Marc = {
|
|
chk_Marc_Setup, chk_Marc_Work, chk_Marc_Input, chk_Marc_CopyCheck, chk_Marc_Option,
|
|
chk_Marc_DLS, chk_Marc_ETC
|
|
};
|
|
CheckBox[] Manage = {
|
|
chk_Manage_User, chk_Manage_Client, chk_Manage_Purchase, chk_Manage_Book
|
|
};
|
|
|
|
for(int a= 0; a < Enabled.Length; a++)
|
|
{
|
|
if (Target == Enabled[a])
|
|
{
|
|
if (a % 4 == 0) { Enable_Sub(Div, IsCheck); }
|
|
if (a % 4 == 1) { Enable_Sub(Acc, IsCheck); }
|
|
if (a % 4 == 2) { Enable_Sub(Marc, IsCheck); }
|
|
if (a % 4 == 3) { Enable_Sub(Manage, IsCheck); }
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Enable_Sub(CheckBox[] Target, bool IsCheck)
|
|
{
|
|
for (int a = 0; a < Target.Length; a++)
|
|
{
|
|
Target[a].Checked = IsCheck;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 권한 설정 0일경우 체크없음, 1일경우 활성화만, 2일경우 활성화와 수정체크
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
int row = e.RowIndex;
|
|
if (dataGridView1.CurrentCell == null || dataGridView1.CurrentCell.RowIndex < 0 || dataGridView1.SelectedRows.Count == 0) return;
|
|
cbCompany.Text = dataGridView1.Rows[row].Cells["affil"].Value.ToString(); ;
|
|
tb_ID.Text = dataGridView1.Rows[row].Cells["ID"].Value.ToString();
|
|
tb_PW.Text = dataGridView1.Rows[row].Cells["PW"].Value.ToString();
|
|
tb_Name.Text = dataGridView1.Rows[row].Cells["Per_Name"].Value.ToString();
|
|
//tb_Affil.Text = dataGridView1.Rows[row].Cells["affil"].Value.ToString(); ;
|
|
tb_position.Text = dataGridView1.Rows[row].Cells["Rank"].Value.ToString();
|
|
tb_Phone.Text = dataGridView1.Rows[row].Cells["Phone"].Value.ToString();
|
|
|
|
User_Access_Set();
|
|
}
|
|
#region CellClick_Sub
|
|
private void User_Access_Set()
|
|
{
|
|
CheckBox[] chkBox = {
|
|
chk_Div_ListInput, chk_Div_ListLookup, chk_Div_ListTotal, chk_Div_OrderInput, chk_Div_Inven,
|
|
chk_Div_Stock, chk_Div_Return,
|
|
|
|
chk_Acc_SendMoneyList, chk_Acc_SendMoneyInput, chk_Acc_Buy, chk_Acc_Sales, chk_Acc_PartTime,
|
|
|
|
chk_Marc_Setup, chk_Marc_Work, chk_Marc_Input, chk_Marc_CopyCheck, chk_Marc_Option,
|
|
chk_Marc_DLS, chk_Marc_ETC,
|
|
|
|
chk_Manage_User, chk_Manage_Client, chk_Manage_Purchase, chk_Manage_Book
|
|
};
|
|
|
|
|
|
string Area =
|
|
"`Div_ListInput`, `Div_ListLookup`, `Div_ListTotal`, `Div_OrderInput`, `Div_Inven`," +
|
|
"`Div_Stock`, `Div_Return`," +
|
|
|
|
"`Acc_SendMoneyList`, `Acc_SendMoneyInput`, `Acc_Buy`, `Acc_Sales`, `Acc_PartTime`," +
|
|
|
|
"`Marc_Setup`, `Marc_Work`, `Marc_Input`, `Marc_CopyCheck`, `Marc_Option`," +
|
|
"`Marc_DLS`, `Marc_ETC`," +
|
|
|
|
"`Manage_User`, `Manage_Client`, `Manage_Purchase`, `Manage_Book`";
|
|
string cmd = mDB.DB_Select_Search(Area, "User_Access", "id", tb_ID.Text);
|
|
string res = mDB.DB_Send_CMD_Search(cmd);
|
|
string[] IsCheck = res.Split('|');
|
|
|
|
for (int a = 0; a < chkBox.Length; a++)
|
|
{
|
|
if (IsCheck[a] == "1")
|
|
chkBox[a].Checked = true;
|
|
else
|
|
chkBox[a].Checked = false;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private void btn_IDOverlap_Click(object sender, EventArgs e)
|
|
{
|
|
if (!System.Text.RegularExpressions.Regex.IsMatch(tb_ID.Text, @"^[a-zA-Z0-9]"))
|
|
{
|
|
MessageBox.Show("영어와 숫자 조합으로 작성해주세요!");
|
|
mOverlap = false;
|
|
return;
|
|
}
|
|
|
|
string cmd = mDB.DB_Search(Table_User, "id", tb_ID.Text);
|
|
string db_res = mDB.DB_Send_CMD_Search(cmd);
|
|
if (db_res == "") { MessageBox.Show("사용가능한 아이디입니다. [" + tb_ID.Text + "]"); mOverlap = true; }
|
|
else { MessageBox.Show("중복된 아이디입니다. [" + tb_ID.Text + "]"); mOverlap = false; }
|
|
}
|
|
private void btn_Save_Click(object sender, EventArgs e)
|
|
{
|
|
if (tb_ID.Text == "" || tb_PW.Text == "" || tb_Name.Text == "")
|
|
{
|
|
MessageBox.Show("성명 / 아이디 / 비밀번호 를 채워주세요.");
|
|
return;
|
|
}
|
|
|
|
if (!CheckSelect())
|
|
{
|
|
if (!mOverlap)
|
|
{
|
|
MessageBox.Show("아이디 중복확인을 해주세요.");
|
|
return;
|
|
}
|
|
}
|
|
string tCmd = mDB.DB_Search(Table_User, "id", tb_ID.Text);
|
|
|
|
List<string> tAuthData = new List<string>();
|
|
tAuthData.Add(tb_ID.Text);
|
|
List<string> tCheckBoxData = tUserAccesschkBox.ToList().ConvertAll(x => {
|
|
string tRet = "0";
|
|
if (x.Checked) tRet = "1";
|
|
return tRet;
|
|
});
|
|
tAuthData.AddRange(tCheckBoxData);
|
|
string[] Update_Data = tAuthData.ToArray();
|
|
|
|
|
|
string[] Insert_Col = { "ID", "PW", "name", "affil", "position", "Phone" };
|
|
string[] Insert_Data = { tb_ID.Text, tb_PW.Text, tb_Name.Text, cbCompany.Text, tb_position.Text, tb_Phone.Text };
|
|
|
|
tCmd = mDB.DB_INSERT("User_Data", Insert_Col, Insert_Data);
|
|
mDB.DB_Send_CMD_reVoid(tCmd);
|
|
tCmd = mDB.DB_INSERT("User_Access", tUserAcess_Col, Update_Data);
|
|
mDB.DB_Send_CMD_reVoid(tCmd);
|
|
tCmd = string.Format("INSERT INTO `User_ShortCut` (`id`) VALUES ('{0}')", tb_ID.Text);
|
|
mDB.DB_Send_CMD_reVoid(tCmd);
|
|
|
|
MessageBox.Show("저장되었습니다!");
|
|
main.isAccess();
|
|
RefreshList();
|
|
}
|
|
private void btnUpdate_Click(object sender, EventArgs e)
|
|
{
|
|
if (dataGridView1.CurrentCell == null || dataGridView1.CurrentCell.RowIndex < 0 || dataGridView1.SelectedRows.Count == 0)
|
|
{
|
|
MessageBox.Show("삭제할 행을 선택해 주세요.");
|
|
return;
|
|
}
|
|
string tText = string.Format("{0} 를 수정 하시겠습니까?", dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString());
|
|
if (CUtill.MsgQ(tText) == DialogResult.Yes)
|
|
{
|
|
if (tb_ID.Text == "" || tb_PW.Text == "" || tb_Name.Text == "")
|
|
{
|
|
MessageBox.Show("성명 / 아이디 / 비밀번호 를 채워주세요.");
|
|
return;
|
|
}
|
|
|
|
if (dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString() != tb_ID.Text )
|
|
{
|
|
if (!CheckSelect())
|
|
{
|
|
if (!mOverlap)
|
|
{
|
|
MessageBox.Show("아이디 중복확인을 해주세요.");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
string cmd = String.Empty;
|
|
string[] tSearch_Col = { "ID" };
|
|
string[] tSearch_Data = { dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString() };
|
|
string[] Update1_Col = { "ID", "PW", "name", "affil", "position", "Phone" };
|
|
string[] Update1_Data = { tb_ID.Text, tb_PW.Text, tb_Name.Text, cbCompany.Text, tb_position.Text, tb_Phone.Text };
|
|
string[] tAccess_Col = { "ID" };
|
|
string[] tAccess_Data = { tb_ID.Text };
|
|
List<string> tAuthData = new List<string>();
|
|
tAuthData.Add(tb_ID.Text);
|
|
List<string> tCheckBoxData = tUserAccesschkBox.ToList().ConvertAll(x =>
|
|
{
|
|
string tRet = "0";
|
|
if (x.Checked) tRet = "1";
|
|
return tRet;
|
|
});
|
|
tAuthData.AddRange(tCheckBoxData);
|
|
string[] tCheckBox = tAuthData.ToArray();
|
|
cmd = mDB.More_Update("User_ShortCut", tAccess_Col, tAccess_Data, tSearch_Col, tSearch_Data);
|
|
mDB.DB_Send_CMD_reVoid(cmd);
|
|
cmd = mDB.More_Update("User_Access", tUserAcess_Col, tCheckBox, tSearch_Col, tSearch_Data);
|
|
mDB.DB_Send_CMD_reVoid(cmd);
|
|
cmd = mDB.More_Update("User_Data", tAccess_Col, tAccess_Data, tSearch_Col, tSearch_Data);
|
|
mDB.DB_Send_CMD_reVoid(cmd);
|
|
MessageBox.Show("저장되었습니다!");
|
|
RefreshList();
|
|
}
|
|
}
|
|
private bool CheckSelect()
|
|
{
|
|
int row = dataGridView1.CurrentCell.RowIndex;
|
|
|
|
string[] GridData = {
|
|
dataGridView1.Rows[row].Cells["Per_name"].Value.ToString(),
|
|
dataGridView1.Rows[row].Cells["Rank"].Value.ToString(),
|
|
dataGridView1.Rows[row].Cells["Phone"].Value.ToString(),
|
|
dataGridView1.Rows[row].Cells["ID"].Value.ToString()
|
|
};
|
|
string[] BoxData = {
|
|
tb_Name.Text, tb_position.Text, tb_Phone.Text, tb_ID.Text
|
|
};
|
|
|
|
int count = 0;
|
|
foreach (string data in GridData)
|
|
{
|
|
if (data != BoxData[count])
|
|
return false;
|
|
count++;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private void btn_Empty_Click(object sender, EventArgs e)
|
|
{
|
|
tb_ID.Text = "";
|
|
tb_PW.Text = "";
|
|
tb_Name.Text = "";
|
|
cbCompany.Text = comp_name;
|
|
tb_position.Text = "";
|
|
tb_Phone.Text = "";
|
|
}
|
|
|
|
private void btn_Del_Click(object sender, EventArgs e)
|
|
{
|
|
if (dataGridView1.CurrentCell == null || dataGridView1.CurrentCell.RowIndex < 0 || dataGridView1.SelectedRows.Count == 0)
|
|
{
|
|
MessageBox.Show("삭제할 행을 선택해 주세요.");
|
|
return;
|
|
}
|
|
string tText = string.Format("{0} 를 삭제 하시겠습니까?", dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString());
|
|
if (CUtill.MsgQ(tText) == DialogResult.Yes)
|
|
{
|
|
int row = dataGridView1.CurrentRow.Index;
|
|
string tID = dataGridView1.SelectedRows[0].Cells["id"].Value.ToString();
|
|
string tPW = dataGridView1.SelectedRows[0].Cells["pw"].Value.ToString();
|
|
string D_cmd = string.Format("DELETE FROM User_ShortCut WHERE `ID`=\"{0}\" LIMIT 1;", tID);
|
|
mDB.DB_Send_CMD_reVoid(D_cmd);
|
|
D_cmd = string.Format("DELETE FROM User_Access WHERE `ID`=\"{0}\" LIMIT 1;", tID);
|
|
mDB.DB_Send_CMD_reVoid(D_cmd);
|
|
D_cmd = mDB.DB_Delete("User_Data", "ID", tID, "PW", tPW);
|
|
mDB.DB_Send_CMD_reVoid(D_cmd);
|
|
MessageBox.Show("삭제 완료되었습니다!");
|
|
RefreshList();
|
|
}
|
|
}
|
|
|
|
private void btn_close_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void tb_ID_TextChanged(object sender, EventArgs e)
|
|
{
|
|
mOverlap = false;
|
|
}
|
|
}
|
|
} |