using MySql.Data.MySqlClient; using Support.Controllers; using Support.Crypto; using Support.Models; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace Support.Controls { public partial class Devices : UserControl { private Models.Appsettings Appsettings = null; private DeviceController DeviceController = null; private Main _MainForm = null; private bool IsRunning = false; private delegate void UpdateDeviceDelegate(DeviceModel deviceModel); public Devices(Models.Appsettings appsettings, Main mainForm) { this._MainForm = mainForm; this.Appsettings = appsettings; string connString = appsettings.DatabaseConnectionString; string decryptedConnectioString = AES.Decrypt(connString); if (!string.IsNullOrEmpty(decryptedConnectioString)) { connString = decryptedConnectioString; } this.DeviceController = new Controllers.DeviceController(new Database(connString), this.Appsettings); InitializeComponent(); } private void btnSearch_Click(object sender, EventArgs e) { try { if(!this.IsRunning) { string orderID = txtOrderId.Text; string zip = txtZIP.Text; string birthday = txtBirthday.Text; string udid = txtUDID.Text; this.IsRunning = true; this._MainForm.ShowLoading(); new Thread(() => { DeviceModel deviceModel = this.DeviceController.GetDevice(orderID, zip, birthday, udid); this.UpdateDevice(deviceModel); }).Start(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void UpdateDevice(DeviceModel deviceModel) { if(dtDevice.InvokeRequired) { dtDevice.Invoke(new UpdateDeviceDelegate(UpdateDevice), deviceModel); } else { this.IsRunning = false; this._MainForm.HideLoading(); dtDevice.AutoGenerateColumns = false; dgResults.AutoGenerateColumns = false; dtDevice.DataSource = null; dgResults.DataSource = null; if(deviceModel != null) { dtDevice.DataSource = new List() { deviceModel }; if(deviceModel.Orders != null && deviceModel.Orders.Count > 0) { dgResults.DataSource = deviceModel.Orders; } } } } private void dgResults_CellMouseEnter(object sender, DataGridViewCellEventArgs e) { if(e.RowIndex >= 0 && e.ColumnIndex == 9) { dgResults.Cursor = Cursors.Hand; } else { dgResults.Cursor = Cursors.Default; } } private void dgResults_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0 && e.ColumnIndex == 9 && dgResults.Rows != null && dgResults.Rows.Count > 0 && dgResults.Rows[e.RowIndex].DataBoundItem != null && dgResults.Rows[e.RowIndex].DataBoundItem.GetType() == typeof(Models.Order)) { Models.Order order = (Models.Order)dgResults.Rows[e.RowIndex].DataBoundItem; if(order != null) { Logs logs = new Logs(order); logs.ShowDialog(); } else { MessageBox.Show("Kein Auftrag gefunden"); } } } } }