-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathItemPublish.vb
181 lines (159 loc) · 7.65 KB
/
ItemPublish.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
Imports System.Configuration
Imports System.Data.SqlClient
Imports System.Drawing
Public Class ItemPublish
Private placeholders As New Dictionary(Of TextBox, String)
Private random As New Random()
Private connectionString As String = ConfigurationManager.ConnectionStrings("nobleAuction.My.MySettings.NAconnect").ConnectionString
Private imagePath As String = String.Empty
Private Sub ItemPublish_Load(sender As Object, e As EventArgs) Handles MyBase.Load
InitializePlaceholders()
SetupCategoryAutoComplete()
End Sub
Private Sub InitializePlaceholders()
placeholders.Add(additemname, "Item Name")
placeholders.Add(addstartingPrice, "Starting NC")
placeholders.Add(addcategory, "Category")
placeholders.Add(addendingTime, "Ending Time")
For Each textbox In placeholders.Keys
SetPlaceholder(textbox)
AddHandler textbox.GotFocus, AddressOf TextBox_GotFocus
AddHandler textbox.LostFocus, AddressOf TextBox_LostFocus
Next
End Sub
Private Sub SetupCategoryAutoComplete()
Dim categories As New AutoCompleteStringCollection()
categories.AddRange(New String() {
"Art", "Electronics", "Jewelry", "Books", "Furniture",
"Clothing", "Antiques", "Vehicles", "Collectibles", "Toys",
"Real Estate", "Musical Instruments", "Sports Memorabilia"
})
addcategory.AutoCompleteMode = AutoCompleteMode.SuggestAppend
addcategory.AutoCompleteSource = AutoCompleteSource.CustomSource
addcategory.AutoCompleteCustomSource = categories
End Sub
Private Sub SetPlaceholder(textbox As TextBox)
If String.IsNullOrWhiteSpace(textbox.Text) Then
textbox.Text = placeholders(textbox)
textbox.ForeColor = Color.Gray
End If
End Sub
Private Sub RemovePlaceholder(textbox As TextBox)
If textbox.Text = placeholders(textbox) Then
textbox.Text = ""
textbox.ForeColor = Color.White
End If
End Sub
Private Sub TextBox_GotFocus(sender As Object, e As EventArgs)
RemovePlaceholder(DirectCast(sender, TextBox))
End Sub
Private Sub TextBox_LostFocus(sender As Object, e As EventArgs)
Dim textbox = DirectCast(sender, TextBox)
SetPlaceholder(textbox)
If textbox Is addstartingPrice Then ValidateStartingNC()
If textbox Is addendingTime Then ValidateEndingTime()
End Sub
Private Sub ValidateStartingNC()
Dim value As Integer
If Integer.TryParse(addstartingPrice.Text, value) Then
addstartingPrice.Text = value.ToString() & " NC"
Else
addstartingPrice.Text = "0 NC"
End If
End Sub
Private Sub ValidateEndingTime()
Dim value As Integer
If Integer.TryParse(addendingTime.Text.Replace("hr", "").Trim(), value) Then
If value < 0 Then value = 0
addendingTime.Text = value.ToString() & " hr"
Else
addendingTime.Text = "0 hr"
End If
End Sub
Private Sub addstartingPrice_KeyPress(sender As Object, e As KeyPressEventArgs) Handles addstartingPrice.KeyPress
If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) Then
e.Handled = True
End If
End Sub
Private Sub addendingTime_KeyPress(sender As Object, e As KeyPressEventArgs) Handles addendingTime.KeyPress
If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) Then
e.Handled = True
End If
End Sub
Private Sub generate_Click(sender As Object, e As EventArgs) Handles generate.Click
Dim generatedIDValue As Integer = random.Next(1, 10000)
Dim itemNameValue As String = additemname.Text
Dim itemCategoryValue As String = addcategory.Text
Dim startingPriceValue As String = addstartingPrice.Text
itemName.Text = itemNameValue
itemCAT.Text = itemCategoryValue
Dim startingPriceInt As Decimal
If Decimal.TryParse(startingPriceValue.Replace(" NC", ""), startingPriceInt) Then
Dim createdTime As DateTime = DateTime.Now
Dim starterTime As DateTime = createdTime.AddSeconds(60)
starter.Text = starterTime.ToString("HH:mm:ss")
Dim endingTimeInt As Integer
If Integer.TryParse(addendingTime.Text.Replace(" hr", ""), endingTimeInt) Then
If endingTimeInt < 0 Or endingTimeInt > 5 Then
MessageBox.Show("Ending time must be between 0 and 5 hours.", "Invalid Ending Time", MessageBoxButtons.OK, MessageBoxIcon.Warning)
ender.Text = "Invalid End Time"
Else
ender.Text = starterTime.AddHours(endingTimeInt).ToString("HH:mm:ss")
End If
Else
ender.Text = "Invalid End Time"
End If
Else
starter.Text = "0 NC"
End If
startingNC.Text = startingPriceValue
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using openFileDialog As New OpenFileDialog()
openFileDialog.InitialDirectory = "C:\"
openFileDialog.Filter = "Image Files|*.jpg;*.jpeg;*.png;*.bmp;*.gif"
openFileDialog.Title = "Select an Image File"
If openFileDialog.ShowDialog() = DialogResult.OK Then
imagePath = openFileDialog.FileName
picIMAGE.Image = Image.FromFile(imagePath)
picIMAGE.SizeMode = PictureBoxSizeMode.StretchImage
End If
End Using
End Sub
Private Sub confirm_Click(sender As Object, e As EventArgs) Handles confirm.Click
Dim itemNameValue As String = additemname.Text
Dim descriptionValue As String = RichtextIdemdesc.Text
Dim startingPriceValue As Decimal
Decimal.TryParse(addstartingPrice.Text.Replace(" NC", ""), startingPriceValue)
Dim createdTime As DateTime = DateTime.Now
Dim endingTime As DateTime = createdTime.AddSeconds(60).AddHours(Integer.Parse(addendingTime.Text.Replace(" hr", "")))
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As New SqlCommand("INSERT INTO AuctionItems (AdminID, ItemName, Description, StartingPrice, AuctionStart, AuctionEnd, Category, ItemPicture) VALUES (@AdminID, @ItemName, @Description, @StartingPrice, @AuctionStart, @AuctionEnd, @Category, @ItemPicture)", connection)
command.Parameters.AddWithValue("@AdminID", 8)
command.Parameters.AddWithValue("@ItemName", itemNameValue)
command.Parameters.AddWithValue("@Description", descriptionValue)
command.Parameters.AddWithValue("@StartingPrice", startingPriceValue)
command.Parameters.AddWithValue("@AuctionStart", createdTime.TimeOfDay)
command.Parameters.AddWithValue("@AuctionEnd", endingTime.TimeOfDay)
command.Parameters.AddWithValue("@Category", addcategory.Text)
command.Parameters.AddWithValue("@ItemPicture", imagePath)
command.ExecuteNonQuery()
End Using
MessageBox.Show("Item added successfully!", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Information)
ClearFields()
End Sub
Private Sub ClearFields()
additemname.Clear()
RichtextIdemdesc.Clear()
addstartingPrice.Clear()
addcategory.Clear()
addendingTime.Clear()
picIMAGE.Image = Nothing
starter.Text = String.Empty
ender.Text = String.Empty
itemName.Text = String.Empty
itemCAT.Text = String.Empty
startingNC.Text = String.Empty
End Sub
End Class