Files
MIP/Mip/frmPridatVyrobok.cs

657 lines
25 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.IO;
using Syncfusion.Pdf.Parsing;
using System.Drawing.Imaging;
namespace Mip
{
public partial class frmPridatVyrobok : Form
{
DataTable pomocnaDT = new DataTable();
Point poinPosition;
bool deleteRow=false;
Single z=1;
int sizeH;
int sizeW;
public frmPridatVyrobok(string strZakaznik)
{
InitializeComponent();
label2.Text = strZakaznik;
this.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);
}
private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
{
if(pictureBox1.Image != null)
{
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
z += (Convert.ToSingle(0.1) * (e.Delta / Math.Abs(e.Delta)));
pictureBox1.Height = Convert.ToInt32(sizeH * z);
pictureBox1.Width = Convert.ToInt32(sizeW * z);
if (dataGridView1.RowCount != 0)
{
DataGridViewRow dtrw;
dtrw = dataGridView1.CurrentRow;
groupBox1.Text = "Zobraziť výkres: " + dtrw.Cells["Nazov_suboru"].Value.ToString() + ", " + "Zoom= " + (Convert.ToSingle(pictureBox1.Width) / Convert.ToSingle(pictureBox1.Image.Width)).ToString();
}
}
}
private void frmPridatVyrobok_Load(object sender, EventArgs e)
{
pomocnaDT.Columns.Add("Nazov_suboru",typeof (string));
pomocnaDT.Columns.Add("Velkost_suboru",typeof (string));
pomocnaDT.Columns.Add("Typ_suboru", typeof(string));
pomocnaDT.Columns.Add("Cesta",typeof (string));
pomocnaDT.Columns.Add("Data", typeof(string));
pomocnaDT.Columns.Add("Valid", typeof(int));
VypisSpojenyRozmer();
classGlobal.FillCB(comboBox2, "tabpomocnychudajov", "Hodnota", "Kategoria", "Pridať iný názov");
}
private void btnAddVykres_Click(object sender, EventArgs e)
{
openFileDialog1.Multiselect = true;
openFileDialog1.DefaultExt = "jpg";
openFileDialog1.Filter = "Obrázky (*.BMP;*.JPG;*.JPEG;*.GIF;*.PNG;*.EXIF;*.TIFF)|*.BMP;*.JPG;*.JPEG;*.GIF;*.PNG;*.EXIF;*.TIFF|" + "Pdf súbory (*.pdf)|*.pdf";
openFileDialog1.FilterIndex = 1;
openFileDialog1.FileName = "";
openFileDialog1.ShowDialog();
if (openFileDialog1.FileNames != null && openFileDialog1.FileName != "")
{
foreach (string Cesta in openFileDialog1.FileNames)
{
bool CestaExist = false;
foreach (DataRow rowCesta in pomocnaDT.Rows)
{
if (rowCesta["Cesta"].ToString() == Cesta.ToString()) CestaExist = true;
}
if (!CestaExist)
{
FileStream fileStream;
fileStream = new FileStream(Cesta, FileMode.Open, FileAccess.Read);
var fileSize = (int)fileStream.Length;
var VykresData = new byte[fileSize];
fileStream.Read(VykresData, 0, fileSize);
var FileNameStart = Cesta.LastIndexOf("\\") + 1;
var FileName = Cesta.Substring(FileNameStart, Cesta.Length - FileNameStart);
var ExtensionStart = Cesta.LastIndexOf(".") + 1;
var Extension = Cesta.Substring(ExtensionStart, Cesta.Length - ExtensionStart);
pomocnaDT.Rows.Add(FileName, Cesta.Length.ToString(), Extension, Cesta, VykresData.ToString(), Convert.ToInt32(IsFileValid(VykresData, Extension)));
dataGridView1.DataSource = pomocnaDT;
StyleGridView();
dataGridView1.Rows[dataGridView1.Rows.Count - 1].Selected = true;
obrazok_Refresh(dataGridView1.Rows.Count - 1);
if (dataGridView1.Rows.Count > 5) dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows.Count - 5;
}
else
{
MessageBox.Show("Súbor: " + Cesta + "\n už v zozname figuruje!", "Upozornenie ...", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
pictureBox1.Visible = true;
}
}
if (textBox6.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && dataGridView1.Rows.Count != 0) button5.Enabled = true;
else button5.Enabled = false; //kontrola naplnenia povinných dát
}
private void StyleGridView()
{
dataGridView1.Columns["Data"].Visible = false;
dataGridView1.AutoResizeColumns();
dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridView1.Columns[5].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.AutoResizeRows();
}
private bool IsFileValid(byte[] vykresData, string extension)
{
try
{
switch (extension)
{
case "pdf":
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(vykresData);
Bitmap pdfToJpeg = loadedDocument.ExportAsImage(0);
loadedDocument.Close(true);
return true;
default:
var memoryStream = new MemoryStream(vykresData);
Bitmap image = new Bitmap(memoryStream);
return true;
}
}
catch (Exception)
{
//MessageBox.Show($"Súbor '{Cesta}' nie je obrázok ani pdf");
return false;
}
}
private void btnVymazVykres_Click(object sender, EventArgs e)
{
deleteRow = true;
int currentRowIndex = dataGridView1.CurrentRow.Index;
pomocnaDT.Rows[currentRowIndex].Delete();
if (pomocnaDT.Rows.Count == 0)
{
btnVymazVykres.Enabled = false;
button5.Enabled = false;
button1.Enabled = false;
pictureBox1.Visible = false;
}
else //v tabulke ešte sú dáta
{
if (currentRowIndex > 0) currentRowIndex--;
dataGridView1.Rows[currentRowIndex].Selected = true;
obrazok_Refresh(currentRowIndex);
pictureBox1.Visible = true;
}
if (textBox6.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && dataGridView1.Rows.Count !=0) button5.Enabled = true;
else button5.Enabled = false; //kontrola naplnenia povinných dát
}
private void pictureBox1_LocationChanged(object sender, EventArgs e)
{
}
//int p1=0;
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
{
//label1.Text = "teraz "+p1++.ToString();
btnVymazVykres.Enabled = true;
button1.Enabled = true;
if (textBox6.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && dataGridView1.Rows.Count != 0) button5.Enabled = true;
else button5.Enabled = false; //kontrola naplnenia povinných dát
if (!deleteRow) obrazok_Refresh(e.RowIndex);
else deleteRow = false;
}
private void obrazok_Refresh(int index)
{
FileStream fs;
int fileSize;
byte[] fileData;
DataRow dRow;
dRow = pomocnaDT.Rows[index];
var isPdf = dRow["Typ_suboru"].ToString() == "pdf";
var isValid = dRow["Valid"].ToString() == "1";
if(isValid)
{
if (isPdf)
{
FileStream pdfFileStream = new FileStream(dRow["Cesta"].ToString(), FileMode.Open, FileAccess.Read);
pictureBox1.Visible = false;
pdfDocumentView1.Visible = true;
pdfDocumentView1.Load(pdfFileStream);
pdfDocumentView1.ZoomMode = Syncfusion.Windows.Forms.PdfViewer.ZoomMode.FitWidth;
pdfDocumentView1.Dock = DockStyle.Fill;
}
else
{
fs = new FileStream(dRow["Cesta"].ToString(), FileMode.Open, FileAccess.Read);
fileSize = (int)fs.Length;
fileData = new byte[fileSize];
fs.Read(fileData, 0, fileSize);
fs.Close();
Bitmap obrazok;
//using (MemoryStream stream = new MemoryStream(fileData)) obrazok = new Bitmap(stream);
MemoryStream stream = new MemoryStream(fileData);
obrazok = new Bitmap(stream);
pictureBox1.Visible = true;
pictureBox1.Image = obrazok;
pictureBox1.Height = obrazok.Height;
pictureBox1.Width = obrazok.Width;
sizeH = pictureBox1.Image.Size.Height;
sizeW = pictureBox1.Image.Size.Width;
pdfDocumentView1.Visible = false;
}
}
else
{
pictureBox1.Visible = false;
pdfDocumentView1.Visible = false;
}
z = 1;
}
private void label9_Click(object sender, EventArgs e)
{
}
private void Zavrieť_Click(object sender, EventArgs e)
{
this.Close();
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
VypisSpojenyRozmer();
if (textBox6.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && dataGridView1.Rows.Count != 0) button5.Enabled = true;
else button5.Enabled = false; //kontrola naplnenia povinných dát
}
public void VypisSpojenyRozmer()
{
string strSpojeny = "";
string strKonZnak ="";
if (textBox2.Text != "")
{
if(textBox1.Text =="") strKonZnak = "";
else strKonZnak = " -" + textBox1.Text ;
if (numericUpDown1.Value == 0)
{
if (textBox3.Text != "" && textBox3.Text != "0") strSpojeny = label10.Text + textBox2.Text + "/" + textBox3.Text + "x" + textBox4.Text + strKonZnak ;
else strSpojeny = label10.Text + textBox2.Text + "x" + textBox4.Text + strKonZnak ;
}
else strSpojeny = label10.Text + textBox2.Text + "x" + textBox3.Text + "x" + textBox4.Text + strKonZnak ;
}
else strSpojeny = "";
label12.Text = strSpojeny;
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
if (numericUpDown1.Value == 0)
{
label10.Text = "Ø";
label4.Text = "Ømax";
label5.Text = "Ømin";
label6.Text = "Dĺžka";
}
else
{
label10.Text = "□";
label4.Text = "X";
label5.Text = "Y";
label6.Text = "Z";
}
VypisSpojenyRozmer();
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
VypisSpojenyRozmer();
if (textBox6.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && dataGridView1.Rows.Count != 0) button5.Enabled = true;
else button5.Enabled = false; //kontrola naplnenia povinných dát
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
VypisSpojenyRozmer();
if (textBox6.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && dataGridView1.Rows.Count != 0) button5.Enabled = true;
else button5.Enabled = false; //kontrola naplnenia povinných dát
}
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
float floatResult;
if (e.KeyChar == '.') e.KeyChar = ',';
if (!(float.TryParse(textBox2.Text + e.KeyChar, out floatResult)) && (int)e.KeyChar != 8) e.KeyChar = '\0';
}
private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
{
float floatResult;
if (e.KeyChar == '.') e.KeyChar = ',';
if (!(float.TryParse(textBox3.Text + e.KeyChar, out floatResult)) && (int)e.KeyChar != 8) e.KeyChar = '\0';
}
private void textBox4_KeyPress(object sender, KeyPressEventArgs e)
{
float floatResult;
if (e.KeyChar == '.') e.KeyChar = ',';
if (!(float.TryParse(textBox4.Text + e.KeyChar, out floatResult)) && (int)e.KeyChar != 8) e.KeyChar = '\0';
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
VypisSpojenyRozmer();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
textBox1.Focus();
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
poinPosition = e.Location;
}
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void dataGridView1_DataMemberChanged(object sender, EventArgs e)
{
}
private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
{
}
private void button5_Click(object sender, EventArgs e)
{
}
private void dataGridView1_KeyPress(object sender, KeyPressEventArgs e)
{
if (btnVymazVykres.Enabled && ((Keys)e.KeyChar == Keys.Delete || e.KeyChar == '-')) btnVymazVykres_Click(null, null);
if (e.KeyChar == '+') btnAddVykres_Click(null, null);
}
private void frmPridatVyrobok_KeyPress(object sender, KeyPressEventArgs e)
{
// dataGridView1_KeyPress(null, e);
}
private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
btnVymazVykres_Click(null, null);
}
private void button6_Click(object sender, EventArgs e)
{
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
private void btnCopyToClipboard_Click(object sender, EventArgs e)
{
Clipboard.SetText(textBox5.Text);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point changePoint = new Point (e.Location.X - poinPosition.X, e.Location.Y - poinPosition.Y);
panel1.AutoScrollPosition = new Point(-panel1.AutoScrollPosition.X - changePoint.X, -panel1.AutoScrollPosition.Y - changePoint.Y);
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
}
private void button6_Click_1(object sender, EventArgs e)
{
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
z += Convert.ToSingle(0.1);
pictureBox1.Height = Convert.ToInt32(sizeH * z);
pictureBox1.Width = Convert.ToInt32(sizeW * z);
if (dataGridView1.RowCount != 0)
{
DataGridViewRow dtrw;
dtrw = dataGridView1.CurrentRow;
groupBox1.Text = "Zobraziť výkres: " + dtrw.Cells["Nazov_suboru"].Value.ToString() + ", " + "Zoom= " + (Convert.ToSingle(pictureBox1.Width) / Convert.ToSingle(pictureBox1.Image.Width)).ToString();
}
}
private void button7_Click(object sender, EventArgs e)
{
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
z -= Convert.ToSingle(0.1);
pictureBox1.Height = Convert.ToInt32(sizeH * z);
pictureBox1.Width = Convert.ToInt32(sizeW * z);
if (dataGridView1.RowCount != 0)
{
DataGridViewRow dtrw;
dtrw = dataGridView1.CurrentRow;
groupBox1.Text = "Zobraziť výkres: " + dtrw.Cells["Nazov_suboru"].Value.ToString() + ", " + "Zoom= " + (Convert.ToSingle(pictureBox1.Width) / Convert.ToSingle(pictureBox1.Image.Width)).ToString();
}
}
private void button1_Click(object sender, EventArgs e)
{
string nazov = dataGridView1.CurrentRow.Cells["Nazov_Suboru"].Value.ToString();
char[] nnazov = new char[nazov.LastIndexOf(".")];
nazov.CopyTo(0, nnazov, 0, nnazov.Length);
textBox6.Text = new string(nnazov);
}
private void button2_Click(object sender, EventArgs e)
{
Form Add = new frmAddPomUdaje();
Add.Text = "Pridať iný názov";
DialogResult dr = Add.ShowDialog();
if (dr == DialogResult.OK)
{
classGlobal.FillCB(comboBox2, "tabpomocnychudajov", "Hodnota", "Kategoria", "Pridať iný názov");
comboBox2.Text = classGlobal.strNovyPomocnyUdaj;
}
}
private void button5_Click_1(object sender, EventArgs e)
{
string cmd;
DataTable dtbl = new DataTable();
classSQL.SQL("SELECT `NazovVyrobku` FROM `mip`.`tabvyrobok` WHERE `Zakaznik`= '" + label2.Text
+ "' AND `NazovVyrobku` = '" + textBox6.Text + "';", out dtbl);
if (dtbl.Rows.Count != 0) MessageBox.Show("Výrobok s názvom: \n " + textBox6.Text + "\n v datábáze výrobkov odberateľa " + label2.Text + " už existuje!!!\n Prosím zmeňte názov výrobku", "Pozor ... ",
MessageBoxButtons.OK,MessageBoxIcon.Warning); //Ak sa výrobok v databaze uz nachádza
else // ak sa výrobok v dtbaze nenachádza tak ho pridať
{
classGlobal.strNovyPomocnyUdaj = textBox6.Text; //pomocný údaj pre naplnenie comboboxu po zavreti okna
string statusVyrobku = "";
if (radioButton1.Checked == true) statusVyrobku = "Výroba";
if (radioButton2.Checked == true) statusVyrobku = "Cenová ponuka";
if (textBox7.Text == "") textBox7.Text = "1"; // Ak je pocet segmentov "" tak potom je 1
cmd = "INSERT INTO `mip`.`tabvyrobok` (`NazovVyrobku`, `RozmerTvar`, `Rozmer1`, `Rozmer2`, `Rozmer3`, `SpojeneRozmery`, `Zakaznik`, `InyNazov`, `RozlisZnakKonecnaOp`, `Alias`,`PocetSegmentov`, `Status výrobku`) VALUES ('"
+ textBox6.Text.ToString() + "', '" //NazovVyrobku
+ label10.Text.ToString() + "', " //RozmerTvar
+ textBox2.Text.ToString().Replace(",",".") + ", " //rozmer1
+ textBox3.Text.ToString().Replace(",", ".") + "," //rozmer2
+ textBox4.Text.ToString().Replace(",", ".") + ", '" //rozmer3
+ label12.Text.ToString() + "', '" //spojene rozmery
+ label2.Text.ToString() + "', '" //zakaznik
+ comboBox2.Text.ToString() + "', '" //Iny nazov
+ textBox1.Text.ToString() + "', '" //rozlis znak alebo konecna operacia
+ textBox5.Text.ToString() + "', " //alias
+ textBox7.Text.ToString() + ", '"
+ statusVyrobku + "');"; //Pocet segmetnov
classSQL.SQL(cmd);
//dtbl=classSQL.commandSQL(cmd,1);
// <Pridať výkresovú dokumentáciu do tabvykresy>
int IDVyrobok;
//classSQL.commandSQL("SELECT `IDVyrobok` FROM `mip`.`tabvyrobok` WHERE `Zakaznik`= '" + label2.Text + "';");
// IDVyrobok = (int)classSQL.dTable.Rows[0]["IDVyrobok"];
string ccmmdd = "SELECT `NazovVyrobku`,`IDVyrobok` FROM `mip`.`tabvyrobok` WHERE `Zakaznik`= '" + label2.Text
+ "' AND `NazovVyrobku` = '" + textBox6.Text + "';";
classSQL.SQL(ccmmdd, out dtbl);
DataRow dtrw = dtbl.Rows[0];
IDVyrobok = Convert.ToInt32(dtrw["IDVyrobok"].ToString());
var indexVykresu = 1;
for (int p1=0; p1 < pomocnaDT.Rows.Count; p1++)
{
FileStream fs;
int fileSize;
byte[] VykresData;
dtrw=pomocnaDT.Rows[p1];
var isValid = dtrw["Valid"].ToString() == "1";
if(isValid)
{
fs = new FileStream(dtrw["Cesta"].ToString(), FileMode.Open, FileAccess.Read);
fileSize = (int)fs.Length;
VykresData = new byte[fileSize];
fs.Read(VykresData, 0, fileSize);
var fileToSave = new byte[fileSize];
switch (dtrw["Typ_suboru"].ToString())
{
case "pdf":
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(VykresData);
Bitmap pdfToJpeg = loadedDocument.ExportAsImage(0);
loadedDocument.Close(true);
fileToSave = SaveAsJpeg(pdfToJpeg);
break;
case "jpg":
fileToSave = VykresData;
break;
default:
Bitmap imageToJpeg = new Bitmap(fs);
fileToSave = SaveAsJpeg(imageToJpeg);
break;
}
fs.Close();
classSQL.SaveVykresToSQL(IDVyrobok, indexVykresu, fileToSave);
indexVykresu += 1;
}
else
{
MessageBox.Show($"Výkres '{dtrw["Cesta"]}' nie je validný obrázok alebo pdf! {Environment.NewLine} Preto nebol uložený do databázy.");
}
}
MessageBox.Show("Výrobok úspešne pridaný!");
this.DialogResult = DialogResult.OK;
this.Close();
// </Pridať výkresovú dokumentáciu do tabvykresy>
}
}
private byte[] SaveAsJpeg(Bitmap image)
{
byte[] returnImageData;
using (var stream = new MemoryStream())
{
image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
returnImageData = stream.ToArray();
}
return returnImageData;
}
private void textBox6_TextChanged(object sender, EventArgs e)
{
if (textBox6.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && dataGridView1.Rows.Count != 0) button5.Enabled = true;
else button5.Enabled = false; //kontrola naplnenia povinných dát
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void textBox6_KeyPress(object sender, KeyPressEventArgs e)
{
/*
char[] invalidchars = Path.GetInvalidFileNameChars();
foreach (char znak in invalidchars)
{
if (e.KeyChar == znak) e.KeyChar = '\0';
*/
if((int)e.KeyChar!=8) foreach (char znak in Path.GetInvalidFileNameChars()) if (e.KeyChar == znak) e.KeyChar = '\0';
}
private void toolTip1_Popup(object sender, PopupEventArgs e)
{
}
private void toolTip1_Draw(object sender, DrawToolTipEventArgs e)
{
}
private void textBox7_KeyPress(object sender, KeyPressEventArgs e)
{
int intResult;
//if (e.KeyChar == '.') e.KeyChar = ',';
if (!(int.TryParse(textBox7.Text + e.KeyChar, out intResult)) && (int)e.KeyChar != 8) e.KeyChar = '\0';
}
}
}