jwcoleman87
Well-known member
- Joined
- Oct 4, 2014
- Messages
- 124
- Programming Experience
- Beginner
Do complicated forms generally have this many routines?
Is my class abnormally large?
Is my class abnormally large?
'STARTUP ROUTINE Private Sub Repair_Load(sender As Object, e As EventArgs) Handles MyBase.Load LoginInfo.ShowDialog() If SQL.Login(LoginInfo.User, LoginInfo.Pwd) = True Then Me.Enabled = True RefreshForm() End Sub 'SUBROUTINES FOR HANDLING BUTTON CLICKS Private Sub cmdNewRepair_Click() Handles cmdNewRepair.Click Using db As New ProductionDataModelDataContext Dim SelectedRepair = db.Repairs.Where(Function(t) t.SerialNumber = txtSelectedAssigned.Text).First SelectedRepair.StartTime = DateTime.Now() SelectedRepair.Status = "Unit Repair" db.SubmitChanges() ClearSelections() RefreshForm() End Using End Sub Private Sub cmdCompleteRepair_Click(sender As Object, e As EventArgs) Handles cmdCompleteRepair.Click Using db As New ProductionDataModelDataContext If txtSelectedRepairing.Text <> "" Then Dim CSRFlag As Integer 'CSR Label Logic If cbCSRLabel.SelectedItem = "Yes" Then CSRFlag = 1 ElseIf cbCSRLabel.SelectedItem = "No" Then CSRFlag = 0 Else MsgBox("You must select Yes or No to send a label to CSR") Exit Sub End If Dim SelectedRepair = db.Repairs.Where(Function(t) t.SerialNumber = txtSelectedRepairing.Text).First SelectedRepair.EndTime = DateTime.Now() SelectedRepair.Status = Status SelectedRepair.CSRQuoteFlag = CSRFlag db.SubmitChanges() ClearSelections() RefreshForm() End If End Using End Sub Private Sub btnAcceptAssignment_Click() Handles btnAcceptAssignment.Click ' Using db As New ProductionDataModelDataContext Dim SelectedRepair = db.Repairs.Where(Function(t) t.SerialNumber = txtSerialNumber.Text.Trim()).FirstOrDefault If IsNothing(SelectedRepair) Then Dim newAssignment As New Repair With _ {.SerialNumber = txtSerialNumber.Text, _ .TechnicianID = LoginInfo.User, _ .Status = "Assigned"} db.Repairs.InsertOnSubmit(newAssignment) Else SelectedRepair.TechnicianID = LoginInfo.User SelectedRepair.Status = "Assigned" End If db.SubmitChanges() RefreshForm() ClearSelections() End Using End Sub 'SUBROUTINES FOR DRAGGING AND DROPPING ITEMS FROM ACTIVE REPAIRS TO ASSIGNED REPAIRS Private Sub listActiveRepairs_ItemDrag(ByVal sender As Object, ByVal e As MouseEventArgs) Handles listActiveRepairs.MouseDown If listActiveRepairs.SelectedItem = Nothing Then Exit Sub Else listActiveRepairs_SelectedIndexChanged(Me, e) listActiveRepairs.DoDragDrop(listActiveRepairs.SelectedItem.ToString(), DragDropEffects.Copy Or DragDropEffects.Move) End If End Sub Private Sub listAssignedRepairs_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles listStaging.DragEnter e.Effect = DragDropEffects.Copy End Sub Private Sub listAssignedRepairs_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles listStaging.DragDrop txtSerialNumber.Text = e.Data.GetData(DataFormats.Text) btnAcceptAssignment_Click() End Sub 'SUBROUTINES FOR FORM DATA UPDATES, MAINTENANCE, AND BEHAVIORS Private Sub listActiveRepairs_SelectedIndexChanged(sender As Object, e As EventArgs) Handles listActiveRepairs.SelectedIndexChanged Using db As New ProductionDataModelDataContext If listActiveRepairs.SelectedItem() <> "" Then Dim SelectedRepair = db.Repairs.Where(Function(t) t.SerialNumber = listActiveRepairs.SelectedItem.ToString).First txtStartTime.Text = SelectedRepair.StartTime txtEndTime.Text = Nothing txtTimeAllocated.Text = DateTime.Now().Subtract(SelectedRepair.StartTime).ToString() txtStatus.Text = SelectedRepair.Status txtSelectedRepairing.Text = SelectedRepair.SerialNumber End If End Using End Sub Private Function listInactiveRepairs_SelectedIndexChanged(sender As Object, e As EventArgs) Handles listInactiveRepairs.SelectedIndexChanged Using db As New ProductionDataModelDataContext If listInactiveRepairs.SelectedItem <> Nothing Then Dim SelectedRepair = db.Repairs.Where(Function(t) t.SerialNumber = listInactiveRepairs.SelectedItem().ToString()).First txtStartTime.Text = SelectedRepair.StartTime.ToString() txtEndTime.Text = SelectedRepair.EndTime.ToString() txtStatus.Text = SelectedRepair.Status End If Return 0 End Using End Function Private Sub listStaging_SelectedIndexChanged(sender As Object, e As EventArgs) Handles listStaging.SelectedIndexChanged If listStaging.SelectedItem <> Nothing Then txtSelectedAssigned.Text = listStaging.SelectedItem.ToString() End If End Sub Private Sub txtSerialNumber_KeyPress(ByVal sender As Object, ByVal e As KeyEventArgs) Handles txtSerialNumber.KeyDown If (e.KeyValue = Keys.Enter) Then btnAcceptAssignment_Click() End If End Sub Private Function UpdateTechDetails() Handles dtpTechDetails.ValueChanged Try SQL.ListInactiveRepairs(listInactiveRepairs, LoginInfo.User, dtpTechDetails.Value().Date()) txtCompletedRepairs.Text = TotalRepairs(LoginInfo.User, dtpTechDetails.Value().Date(), "Final Test") txtAPRepairs.Text = TotalRepairs(LoginInfo.User, dtpTechDetails.Value().Date(), "Awaiting Parts") txtPQRepairs.Text = TotalRepairs(LoginInfo.User, dtpTechDetails.Value().Date(), "Pre-Quote") txtCSRRepairs.Text = TotalRepairs(LoginInfo.User, dtpTechDetails.Value().Date(), "Customer Supporting") Return 1 Catch ex As Exception MsgBox(ex.Message()) Return 0 End Try End Function Private Sub ClearSelections() txtSelectedAssigned.Clear() txtSelectedRepairing.Clear() txtSerialNumber.Clear() rbAP.Checked = False rbPQ.Checked = False rbFT.Checked = False rbBOM.Checked = False Status = "" cbCSRLabel.Text = "" End Sub Public Sub RefreshForm() ' TODO - Add capability to copy items from the lists to clipboard Using db As New ProductionDataModelDataContext Dim AssignedRepairsQuery = From t In db.Repairs _ Where t.TechnicianID = LoginInfo.User _ And t.Status = "Assigned" _ Select t.SerialNumber Dim ActiveRepairsQuery = From t In db.Repairs _ Where t.TechnicianID = LoginInfo.User _ And t.Status = "Unit Repair" _ Select t.SerialNumber Dim InactiveRepairsQuery = From t In db.Repairs _ Where t.TechnicianID = LoginInfo.User _ And t.Status <> "Unit Repair" _ And t.Status <> "Pause" _ And t.Status <> "Assigned" _ And t.EndTime.Value.Date = dtpTechDetails.Value.Date() Select t.SerialNumber listActiveRepairs.DataSource = ActiveRepairsQuery listStaging.DataSource = AssignedRepairsQuery listInactiveRepairs.DataSource = InactiveRepairsQuery End Using End Sub 'SUBROUTINES FOR RADIO BUTTONS USED WHEN SENDING UNITS TO AN INACTIVE STATUS Private Sub rbAP_CheckedChanged(sender As Object, e As EventArgs) Handles rbAP.CheckedChanged Status = rbAP.Text End Sub Private Sub rbPQ_CheckedChanged(sender As Object, e As EventArgs) Handles rbPQ.CheckedChanged Status = rbPQ.Text End Sub Private Sub rbCSR_CheckedChanged(sender As Object, e As EventArgs) Handles rbCSR.CheckedChanged Status = rbCSR.Text End Sub Private Sub rbFT_CheckedChanged(sender As Object, e As EventArgs) Handles rbFT.CheckedChanged Status = rbFT.Text End Sub Private Sub rbBOM_CheckedChanged(sender As Object, e As EventArgs) Handles rbBOM.CheckedChanged Status = rbBOM.Text End Sub 'SUBROUTINES FOR ASSIGNED UNITS CONTEXT MENU Private Sub RepairInteraction_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles AssignedUnitInteractions.Opening If listStaging.SelectedItems.Count = 0 Then RemoveToolStripMenuItem.Enabled = False CopyToolStripMenuItem.Enabled = False ChangeSerialToolStripMenuItem.Enabled = False Else RemoveToolStripMenuItem.Enabled = True CopyToolStripMenuItem.Enabled = True ChangeSerialToolStripMenuItem.Enabled = True End If End Sub Private Sub RemoveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RemoveToolStripMenuItem.Click Using db As New ProductionDataModelDataContext Dim SelectedRepair = db.Repairs.Where(Function(t) t.SerialNumber = listStaging.SelectedItem.ToString()).First SelectedRepair.Status = "NULL" SelectedRepair.TechnicianID = "NULL" db.SubmitChanges() RefreshForm() ClearSelections() End Using End Sub Private Sub CopyToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CopyToolStripMenuItem.Click Clipboard.SetData(DataFormats.Text, listStaging.Text) End Sub Private Sub tsTxtNewSerial_Click(sender As Object, e As EventArgs) Handles tsTxtNewSerial.Click tsTxtNewSerial.Text = "" End Sub Private Sub ConfirmToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ConfirmToolStripMenuItem.Click Using db As New ProductionDataModelDataContext Dim SelectedRepair = db.Repairs.Where(Function(t) t.SerialNumber = listStaging.SelectedItem.ToString()).First db.Repairs.DeleteOnSubmit(SelectedRepair) db.SubmitChanges() RefreshForm() ClearSelections() End Using End Sub 'SUBROUTINES FOR INACTIVE UNITS CONTEXT MENU Private Sub InactiveRepairsInteraction_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles InactiveRepairsInteraction.Opening If listInactiveRepairs.SelectedItems.Count = 0 Then CopyToolStripMenuItem.Enabled = False ChangeDispositionToolStripMenuItem.Enabled = False Else CopyToolStripMenuItem.Enabled = True ChangeDispositionToolStripMenuItem.Enabled = True End If End Sub Private Sub CopyToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles CopyToolStripMenuItem1.Click Clipboard.SetData(DataFormats.Text, listStaging.Text) End Sub Private Sub AwaitingPartsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AwaitingPartsToolStripMenuItem.Click ChangeDisposition(listInactiveRepairs.SelectedItem, AwaitingPartsToolStripMenuItem.ToString()) RefreshForm() UpdateTechDetails() ClearSelections() End Sub Private Sub CustomerSupportingToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CustomerSupportingToolStripMenuItem.Click ChangeDisposition(listInactiveRepairs.SelectedItem.Text, CustomerSupportingToolStripMenuItem.ToString()) RefreshForm() UpdateTechDetails() ClearSelections() End Sub Private Sub FinalTestToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FinalTestToolStripMenuItem.Click ChangeDisposition(listInactiveRepairs.SelectedItem, FinalTestToolStripMenuItem.ToString()) RefreshForm() UpdateTechDetails() ClearSelections() End Sub Private Sub EngineeringHoldToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EngineeringHoldToolStripMenuItem.Click ChangeDisposition(listInactiveRepairs.SelectedItem, EngineeringHoldToolStripMenuItem.ToString()) RefreshForm() UpdateTechDetails() ClearSelections() End Sub Private Sub PreQuoteToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PreQuoteToolStripMenuItem.Click ChangeDisposition(listInactiveRepairs.SelectedItem, PreQuoteToolStripMenuItem.ToString()) RefreshForm() UpdateTechDetails() ClearSelections() End Sub Private Sub UnitRepairToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UnitRepairToolStripMenuItem.Click ChangeDisposition(listInactiveRepairs.SelectedItem, UnitRepairToolStripMenuItem.ToString()) RefreshForm() UpdateTechDetails() ClearSelections() End Sub Private Sub ChangeDisposition(SerialNumber As String, NewStatus As String) Using db As New ProductionDataModelDataContext Dim SelectedRepair = db.Repairs.Where(Function(t) t.SerialNumber = SerialNumber).First If NewStatus = "Unit Repair" Then SelectedRepair.EndTime = Nothing SelectedRepair.Status = NewStatus Else SelectedRepair.Status = NewStatus End If db.SubmitChanges() End Using End Sub Public Function TotalRepairs(TechnicianID As String, SelectedDate As DateTime, Status As String) As Integer Using db As New ProductionDataModelDataContext Dim QueryTotalRepairs = From t In db.Repairs Where t.EndTime.Value.Date = SelectedDate.Date _ And t.Status = Status _ And t.TechnicianID = TechnicianID _ Select t.SerialNumber Return QueryTotalRepairs.Count End Using End Function End Class