using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace InventoryTest { public partial class Form1 : Form { private string ConnectionString { get; } = "Server=DESKTOP-HJES64T;Database=Inventory;Integrated Security=true;"; private int CommentsMaxLength { get; } = 3072; private int NotesMaxLength { get; } = 3072; private Dictionary CategoryIds { get; } = new(); private Dictionary SubCategoryIds { get; } = new(); private Dictionary PropertyTypeIds { get; } = new(); public Form1() { InitializeComponent(); ManageCategoriesToolStripMenuItem.Click += ShowCategoryManagerForm; exitToolStripMenuItem.Click += ExitToolStripMenuItem_Click; CorePropertyCommentTextBox.TextChanged += CorePropertyCommentTextBox_TextChanged; CorePropertyCommentTextBox.MaxLength = CommentsMaxLength; CorePropertyCommentGroupBox.Text = $"Comments (Remaing Characters: {CorePropertyCommentTextBox.MaxLength - CorePropertyCommentTextBox.TextLength})"; CorePropertyNotesTextBox.TextChanged += CorePropertyNotesTextBox_TextChanged; CorePropertyNotesTextBox.MaxLength = NotesMaxLength; CorePropertyNotesGroupBox.Text = $"Notes (Remaing Characters: {CorePropertyNotesTextBox.MaxLength - CorePropertyNotesTextBox.TextLength})"; CorePropertyNameTextBox.TextChanged += ToggleCreateItemButton; CorePropertyBoughtForTextBox.TextChanged += ToggleCreateItemButton; CorePropertySoldForTextBox.TextChanged += ToggleCreateItemButton; CorePropertyValueTextBox.TextChanged += ToggleCreateItemButton; CategorySelectionComboBox.SelectedIndexChanged += CategorySelectionComboBox_SelectedIndexChanged; SubCategorySelectionComboBox.SelectedIndexChanged += SubCategorySelectionComboBox_SelectedIndexChanged; LoadCategories(); } private void SubCategorySelectionComboBox_SelectedIndexChanged(object sender, EventArgs e) { //throw new NotImplementedException(); } private void CategorySelectionComboBox_SelectedIndexChanged(object sender, EventArgs e) { SubCategoryIds.Clear(); SubCategorySelectionComboBox.Items.Clear(); using var connection = new SqlConnection(ConnectionString); using var command = new SqlCommand("SELECT ID, Name FROM dbo.GetCategorySubCategories(@ID)", connection); command.Parameters.AddWithValue("ID", CategoryIds[CategorySelectionComboBox.Text]); connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) { SubCategoryIds.Add(reader["Name"].ToString(), Convert.ToInt32(reader["ID"])); SubCategorySelectionComboBox.Items.Add(reader["Name"].ToString()); } if (SubCategorySelectionComboBox.Items.Count > 0) { SubCategorySelectionComboBox.Enabled = true; SubCategorySelectionComboBox.SelectedIndex = 0; } else SubCategorySelectionComboBox.Enabled = false; } private void LoadCategories() { CategoryIds.Clear(); using var connection = new SqlConnection(ConnectionString); using var command = new SqlCommand("SELECT [Category ID], [Category Name] FROM Category", connection); connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) { CategoryIds.Add(reader["Category Name"].ToString(), Convert.ToInt32(reader["Category ID"])); CategorySelectionComboBox.Items.Add(reader["Category Name"]); } reader.Close(); if (CategorySelectionComboBox.Items.Count > 0) { CategorySelectionComboBox.SelectedIndex = 0; CorePropertyNameTextBox.Enabled = true; } else CorePropertyNameTextBox.Enabled = false; } private void ToggleCreateItemButton(object sender, EventArgs e) { var valueValid = CorePropertyValueTextBox.Text.Trim().Length == 0; var boughtForValid = CorePropertyBoughtForTextBox.Text.Trim().Length == 0; var soldForValid = CorePropertySoldForTextBox.Text.Trim().Length == 0; if (!valueValid) valueValid = decimal.TryParse(CorePropertyValueTextBox.Text, out decimal _); if (!boughtForValid) boughtForValid = decimal.TryParse(CorePropertyBoughtForTextBox.Text, out decimal _); if (!soldForValid) soldForValid = decimal.TryParse(CorePropertySoldForTextBox.Text, out decimal _); CreateItemButton.Enabled = CorePropertyNameTextBox.Text.Trim().Length > 0 && valueValid && boughtForValid && soldForValid; } private void CorePropertyNotesTextBox_TextChanged(object sender, EventArgs e) { CorePropertyNotesGroupBox.Text = $"Notes (Remaing Characters: {CorePropertyNotesTextBox.MaxLength - CorePropertyNotesTextBox.TextLength})"; } private void CorePropertyCommentTextBox_TextChanged(object sender, EventArgs e) { CorePropertyCommentGroupBox.Text = $"Comments (Remaing Characters: {CorePropertyCommentTextBox.MaxLength - CorePropertyCommentTextBox.TextLength})"; } private void ExitToolStripMenuItem_Click(object sender, EventArgs e) { Close(); } private void ShowCategoryManagerForm(object sender, EventArgs e) { var form = new CategoryManager(ConnectionString); form.ShowDialog(); } private struct ItemPropertyPairing { public int PropertyID; public int ItemID; public int PropertyTypeID; public string Value; } } }