Files
Unimarc/unimarc/unimarc/마크/CD_LP.cs

548 lines
20 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 UniMarc
{
public partial class CD_LP : Form
{
Main main;
Helper_DB db = new Helper_DB();
public CD_LP(Main _m)
{
InitializeComponent();
main = _m;
}
private void CD_LP_Load(object sender, EventArgs e)
{
db.DBcon();
string[] Site = { "교보문고", "알라딘" };
cb_SiteCon.Items.AddRange(Site);
cb_SiteCon.SelectedIndex = 1;
string[] Type = { "음반", "DVD" };
cb_Type.Items.AddRange(Type);
cb_Type.SelectedIndex = 0;
}
private void Btn_Connect_Click(object sender, EventArgs e)
{
int site = cb_SiteCon.SelectedIndex;
CD_LP_Sub sub = new CD_LP_Sub(this);
sub.Show();
if (site == 0) { // 교보문고
sub.Btn_KyoBo_Click(null, null);
}
if (site == 1) { // 알라딘
sub.Btn_Aladin_Click(null, null);
}
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
tb_T005.Text = DateTime.Now.ToString("yyyyMMddHHmmss");
}
private void Btn_SelectList_Click(object sender, EventArgs e)
{
CD_LP_SelectList selectList = new CD_LP_SelectList(this);
selectList.Show();
selectList.LoadList(PUB.user.CompanyIdx);
dataGridView1.Rows.Clear();
}
public void MakeList(string ListName, string date)
{
lbl_ListTitle.Text = ListName;
lbl_date.Text = date;
string Table = "DVD_List_Product";
string Area = "`idx`, `num`, `code`, `title`, `artist`, `comp`, `price`, `m_idx`";
string[] Search_Table = { "compidx", "listname", "date" };
string[] Search_Column = { PUB.user.CompanyIdx, ListName, date };
string cmd = db.More_DB_Search(Table, Search_Table, Search_Column, Area);
string res = db.DB_Send_CMD_Search(cmd);
string[] ary_res = res.Split('|');
// idx num code title artist comp price m_idx Marc
string[] grid = { "", "", "", "", "", "", "", "", "" };
for (int a = 0; a < ary_res.Length; a++)
{
if (a % 8 == 0) grid[0] = ary_res[a];
if (a % 8 == 1) grid[1] = ary_res[a];
if (a % 8 == 2) grid[2] = ary_res[a];
if (a % 8 == 3) grid[3] = ary_res[a];
if (a % 8 == 4) grid[4] = ary_res[a];
if (a % 8 == 5) grid[5] = ary_res[a];
if (a % 8 == 6) grid[6] = ary_res[a];
if (a % 8 == 7) {
grid[7] = ary_res[a];
dataGridView1.Rows.Add(grid);
}
}
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
string m_idx = dataGridView1.Rows[a].Cells["m_idx"].Value.ToString();
string code = dataGridView1.Rows[a].Cells["code"].Value.ToString();
if (m_idx != "")
cmd = string.Format("SELECT `Marc` FROM `DVD_Marc` WHERE `idx` = {0};", m_idx);
else
cmd = string.Format("SELECT `Marc` FROM `DVD_Marc` WHERE `Code` = {0} LIMIT 1;", code);
dataGridView1.Rows[a].Cells["marc"].Value = db.DB_Send_CMD_Search(cmd).Replace("|", "");
}
}
private void btn_CopySelect_Click(object sender, EventArgs e)
{
if (dataGridView1.CurrentCell == null) return;
int row = dataGridView1.CurrentCell.RowIndex;
string code = dataGridView1.Rows[row].Cells["code"].Value.ToString();
MarcCopySelect copySelect = new MarcCopySelect(this);
copySelect.MarcFormRowIndex = row;
copySelect.Init("Code", code, "CDLP");
copySelect.Show();
}
public void SelectMarc_Sub(int row, string[] GridData)
{
dataGridView1.Rows[row].Cells["m_idx"].Value = GridData[0];
dataGridView1.Rows[row].Cells["marc"].Value = GridData[6];
}
private void btn_mk_marcList_Click(object sender, EventArgs e)
{
Marc_mkList mkList = new Marc_mkList(this);
mkList.Show();
}
private void Btn_SaveMarc_Click(object sender, EventArgs e)
{
if (dataGridView1.CurrentRow == null) return;
if (dataGridView1.CurrentRow.Index < 0) return;
String_Text st = new String_Text();
int row = dataGridView1.CurrentRow.Index;
string midx = dataGridView1.Rows[row].Cells["m_idx"].Value.ToString();
string code = dataGridView1.Rows[row].Cells["code"].Value.ToString();
string user = PUB.user.UserName;
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string etcData1 = etc1.Text;
string etcData2 = etc2.Text;
if (etcData1 == "Remarc1") etcData1 = "";
if (etcData2 == "Remarc2") etcData2 = "";
string t005 = tb_T005.Text;
string t007 = tb_T007.Text;
string t008 = tb_T008.Text;
string marc = string.Format("005\t \t{0}▲\n007\t \t{1}▲\n008\t \t{2}▲\n", t005, t007, t008) + richTextBox1.Text;
string orimarc = st.made_Ori_marc(marc, false);
if (!isSaveOK(orimarc, code)) {
MessageBox.Show("상품코드를 확인해주세요.");
return;
}
string[] EditCol = { "Code", "user", "date", "Marc", "etc1", "etc2" };
string[] EditData = { code, user, date, orimarc, etcData1, etcData2 };
string[] SearchCol = { "idx" };
string[] SearchData = { midx };
Helper_DB.ExcuteNonQuery(db.More_Update("DVD_Marc", EditCol, EditData, SearchCol, SearchData));
dataGridView1.Rows[row].Cells["marc"].Value = orimarc;
}
#region
/// <summary>
/// 태그 100, 110, 111에서 데이터를 따와 값이 있는 데이터만 반환
/// </summary>
/// <param name="ValueArray">태그 100, 110, 111</param>
/// <returns>값이 들어있는 태그의 내용</returns>
string Takeartist(string[] ValueArray)
{
string result = "";
foreach (string value in ValueArray)
{
if (value.Length != 0)
result = value;
}
return result;
}
#endregion
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0)
return;
richTextBox1.Text = "";
etc1.Text = "Remark1";
etc2.Text = "Remark2";
int row = e.RowIndex;
string SelectNum = dataGridView1.Rows[row].Cells["num"].Value.ToString();
string SelectMarc = dataGridView1.Rows[row].Cells["marc"].Value.ToString();
string SelectMIdx = dataGridView1.Rows[row].Cells["m_idx"].Value.ToString();
string SelectCode = dataGridView1.Rows[row].Cells["code"].Value.ToString();
if (SelectMIdx == "0")
Btn_SaveMarc.Enabled = false;
else
{
Btn_SaveMarc.Enabled = true;
string[] etcData = db.DB_Send_CMD_Search(string.Format("SELECT `etc1`, `etc2` FROM `DVD_Marc` WHERE `idx` = {0};", SelectMIdx)).Split('|');
etc1.Text = etcData[0];
etc2.Text = etcData[1];
}
btn_CopySelect.Text = db.DB_Send_CMD_Search(
string.Format("SELECT Count(`Code`) FROM DVD_Marc WHERE `Code` = \"{0}\" Group by `Code`;", SelectCode)).Replace("|", "");
tb_Num.Text = SelectNum;
if (SelectMarc == "")
{
richTextBox1.Text =
"020\t \t▼a:▼c▲\n" +
"041\t0 \t▼a▼b▼▲\n" +
"056\t \t▼a▼25▲\n" +
"090\t \t▼a▼b▲\n" +
"100\t1 \t▼a▲\n" +
"245\t10\t▼a▼h[녹음자료]/▼d▲\n" +
"260\t \t▼a:▼b [제작],▼c▲\n" +
"300\t \t▼a음반 1매:▼b디지털, 스테레오;▼c12 cm▲\n" +
"505\t00\t▼n01.▼t▲\n" +
"508\t \t▼a제작진:▲\n" +
"511\t8 \t▼a▲\n" +
"520\t \t▼a▲\n" +
"521\t \t▼a전체이용가▲\n" +
"653\t \t▼a▲\n" +
"700\t1 \t▼a▲\n" +
"740\t 2\t▼a▲\n" +
"950\t0 \t▼b\\▲";
if (cb_Type.SelectedIndex == 0)
{
tb_T007.Text = "sd fsngunmmned";
tb_T008.Text = DateTime.Now.ToString("yyMMdd") + "s ulk n z a kor ";
}
else
{
tb_T007.Text = "vd cgairq";
tb_T008.Text = DateTime.Now.ToString("yyMMdd") + "s ulk d avlkor ";
}
return;
}
String_Text st = new String_Text();
string ViewMarc = st.ConvertMarcType(SelectMarc,out string errmesage);
List<string> Tmp = new List<string>(ViewMarc.Split('\n'));
for (int a = 0; a < Tmp.Count; a++)
{
if (Tmp[a] == "") continue;
else if (Tmp[a].Substring(0, 3) == "005")
tb_T005.Text = Tmp[a].Replace("005\t \t", "").Replace("▲", "");
else if (Tmp[a].Substring(0, 3) == "007")
tb_T007.Text = Tmp[a].Replace("007\t \t", "").Replace("▲", "");
else if (Tmp[a].Substring(0, 3) == "008")
tb_T008.Text = Tmp[a].Replace("008\t \t", "").Replace("▲", "");
else
richTextBox1.Text += Tmp[a] + "\n";
}
}
private void Btn_Help007_Click(object sender, EventArgs e)
{
Help_007 help007 = new Help_007(this);
if (cb_Type.Text == "음반") help007.isMusic = true;
else help007.isMusic = false;
string Text007 = tb_T007.Text;
help007.text007 = Text007;
help007.Show();
}
private void Btn_Help008_Click(object sender, EventArgs e)
{
Help_008 help008 = new Help_008(this);
if (cb_Type.Text == "음반") help008.isMusic = true;
else help008.isMusic = false;
string Text008 = tb_T008.Text;
help008.text008 = Text008;
help008.Show();
}
private void Btn_New_Click(object sender, EventArgs e)
{
if (dataGridView1.CurrentRow == null) return;
if (dataGridView1.CurrentRow.Index < 0) return;
String_Text st = new String_Text();
int row = dataGridView1.CurrentRow.Index;
string code = dataGridView1.Rows[row].Cells["code"].Value.ToString();
string user = PUB.user.UserName;// Properties.Settings.Default.User;
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string etcData1 = etc1.Text;
string etcData2 = etc2.Text;
if (etcData1 == "Remarc1") etcData1 = "";
if (etcData2 == "Remarc2") etcData2 = "";
string t005 = tb_T005.Text;
string t007 = tb_T007.Text;
string t008 = tb_T008.Text;
string marc = string.Format("005\t \t{0}▲\n007\t \t{1}▲\n008\t \t{2}▲\n", t005, t007, t008) + richTextBox1.Text;
string orimarc = st.made_Ori_marc(marc, false);
// 상품코드 체크
if (!isSaveOK(orimarc, code)) {
MessageBox.Show("상품코드를 확인해주세요.");
return;
}
// 필수태그 확인
if (!isMustTag(orimarc)) {
MessageBox.Show("입력된 마크의 상태를 확인해주세요.");
return;
}
// 마크 형식 체크
if (!isPass(marc)) {
MessageBox.Show("입력된 마크의 상태를 확인해주세요.");
return;
}
string[] InsertCol = { "Code", "user", "date", "Marc", "etc1", "etc2" };
string[] InsertData = { code, user, date, orimarc, etcData1, etcData2 };
Helper_DB.ExcuteNonQuery(db.DB_INSERT("DVD_Marc", InsertCol, InsertData));
dataGridView1.Rows[row].Cells["m_idx"].Value =
db.DB_Send_CMD_Search(
string.Format("SELECT `idx` FROM `DVD_Marc` WHERE `user` = \"{0}\" AND `date` = \"{1}\";", user, date)).Replace("|", "");
dataGridView1.Rows[row].Cells["marc"].Value = orimarc;
}
bool isSaveOK(string oriMarc, string code)
{
if (code == "") return false;
String_Text st = new String_Text();
string[] SearchTagList = { "020a" };
string[] TagList = st.Take_Tag(oriMarc, SearchTagList);
return TagList[0].Contains(code);
}
/// <summary>
/// 마크 오류체크 (형식체크)
/// </summary>
/// <param name="BaseData">richTextBox에 들어가있는 텍스트</param>
/// <returns>True / False</returns>
private bool isPass(string BaseData)
{
string[] EnterSplit = BaseData.Split('\n');
foreach (string Data in EnterSplit)
{
if (Data == "")
continue;
string[] DataSplit = Data.Split('\t');
if (DataSplit.Length == 3)
{
if (DataSplit[1].Length == 2)
{
continue;
}
else
{
return false;
}
}
else
{
return false;
}
}
return true;
}
private bool isMustTag(string orimarc)
{
String_Text st = new String_Text();
string[] SearchTag = {
"056a", "0562", "245a", "245d", "260a", "260b", "260c", "300a", "300c", "653a"
};
string[] Tag = st.Take_Tag(orimarc, SearchTag);
int count = 0;
string msg = "";
bool isTag = true;
foreach (string tag in Tag)
{
if (tag == "")
{
msg += SearchTag[count] + " ";
isTag = false;
}
count++;
}
if (!isTag)
{
MessageBox.Show(msg + "태그가 없습니다.");
return false;
}
bool is1XX = false;
string[] AuthorTag = { "100a", "110a", "111a" };
Tag = st.Take_Tag(orimarc, AuthorTag);
foreach (string author in Tag)
{
if (author != "")
is1XX = true;
}
if (!is1XX)
{
MessageBox.Show("기본표목이 존재하지않습니다.");
return false;
}
bool is7XX = false;
AuthorTag[0] = "700a";
AuthorTag[1] = "710a";
AuthorTag[2] = "711a";
Tag = st.Take_Tag(orimarc, AuthorTag);
foreach (string author in Tag)
{
if (author != "")
is7XX = true;
}
if (!is7XX)
{
MessageBox.Show("부출표목이 존재하지않습니다.");
return false;
}
return true;
}
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F3)
richTextBox1.SelectedText = "▼";
else if (e.KeyCode == Keys.F4)
richTextBox1.SelectedText = "▲";
else if (e.KeyCode == Keys.F8)
Btn_New_Click(null, null);
else if (e.KeyCode == Keys.F9)
Btn_SaveMarc_Click(null, null);
}
DataGridViewRow tempSave = null;
int TempRow = -1;
List<string> DeleteIndex = new List<string>();
private void Btn_SelectRemove_Click(object sender, EventArgs e)
{
if (dataGridView1.CurrentRow == null) return;
if (dataGridView1.CurrentRow.Index < 0) return;
TempRow = dataGridView1.CurrentRow.Index;
tempSave = dataGridView1.Rows[TempRow];
DeleteIndex.Add(dataGridView1.Rows[TempRow].Cells["idx"].Value.ToString());
dataGridView1.Rows.RemoveAt(TempRow);
}
private void Btn_Undo_Click(object sender, EventArgs e)
{
if (tempSave == null || TempRow < 0) return;
try {
dataGridView1.Rows.Insert(TempRow, tempSave);
DeleteIndex.Remove(tempSave.Cells["idx"].Value.ToString());
}
catch (InvalidOperationException ex) {
return;
}
}
private void btn_SaveList_Click(object sender, EventArgs e)
{
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
if (dataGridView1.Rows[a].Cells["idx"].Value == null) dataGridView1.Rows[a].Cells["idx"].Value = "";
if (dataGridView1.Rows[a].Cells["idx"].Value.ToString() == "")
{
string[] Insert_col = { "compidx", "listname", "date", "user", "num", "code", "title", "artist", "comp", "price" };
string[] Insert_data =
{
PUB.user.CompanyIdx,
lbl_ListTitle.Text,
lbl_date.Text,
PUB.user.UserName,
dataGridView1.Rows[a].Cells["num"].Value.ToString(),
dataGridView1.Rows[a].Cells["code"].Value.ToString(),
dataGridView1.Rows[a].Cells["title"].Value.ToString(),
dataGridView1.Rows[a].Cells["author"].Value.ToString(),
dataGridView1.Rows[a].Cells["comp"].Value.ToString(),
dataGridView1.Rows[a].Cells["price"].Value.ToString()
};
Helper_DB.ExcuteNonQuery(db.DB_INSERT("DVD_List_Product", Insert_col, Insert_data));
}
}
if (DeleteIndex.Count < 0) return;
for (int a = 0; a < DeleteIndex.Count; a++)
{
Helper_DB.ExcuteNonQuery(db.DB_Delete("DVD_List_Product", "compidx", PUB.user.CompanyIdx, "idx", DeleteIndex[a]));
}
}
private void btn_AddRow_Click(object sender, EventArgs e)
{
if (dataGridView1.CurrentRow == null) return;
int row = dataGridView1.CurrentRow.Index;
string[] Grid = { "", dataGridView1.Rows[row].Cells["num"].Value.ToString(), "", "", "", "", "", "", "" };
dataGridView1.Rows.Insert(row + 1, Grid);
}
private void btn_Close_Click(object sender, EventArgs e)
{
this.Close();
}
}
}