Public MustInherit Class LadeManager(Of TLadeType As ISpecialLade)
Protected Laden As List(Of TLadeType)
'''
''' Eerste lade opvragen of Nothing retourneren. (FirstOrDefault)
'''
''' Eerste lade of Nothing
Public Function EersteOfStandaard() As TLadeType
Return Laden.FirstOrDefault()
End Function
'''
''' Aantal laden opvragen.
'''
''' Het aantal laden
public Function AantalLaden As Integer
Return Laden.Count
End Function
'''
''' De lade(n) inladen aan de hand van een parameter.
'''
''' Identificatie van de lade(n)
''' True als er minstens 1 laden met de identificatie gevonden werd.
Public Function ZoekEnLaadLaden(identificatie As String) As Boolean
'Laden opzoeken aan de hand van de hook met de identificatie.
Dim ingeladenLaden = LaadLadenData(identificatie)
'Controleren dat de ingeladen laden niet leeg zijn.
If ingeladenLaden IsNot Nothing AndAlso ingeladenLaden.Count <> 0 Then
'Ingeladen laden bijhouden.
Laden = ingeladenLaden
'True retourneren, 1 of meer laden werden gevonden.
Return True
End If
'Geen Laden werden gevonden.
Return False
End Function
'''
''' De lade(n) inladen aan de hand van een parameter.
'''
''' Identificatie van de lade(n)
''' Lijst van data
Protected MustOverride Function LaadLadenData(identificatie As String) As List(Of TLadeType)
'''
''' Opvragen van de onderdelen en hun barcodes.
'''
''' Lijst van String arrays met {naam onderdeel, barcode}
Public Function GeefOrigineleOnderdelenEnBarcodes() As List(Of String())
Dim onderdelenEnBarcodes As New List(Of String())
For Each lade In Laden
'Onderdelen opvragen en itereren.
For Each onderdeel In lade.GeefOrigineleOnderdelen()
'Kijken of het 1 of 2 ardis data's bevat.
If TypeOf onderdeel Is IHeeftEnkeleArdisdata Then
'Enkele Ardis data.
'Casten.
Dim enkeleArdisData = CType(onderdeel, IHeeftEnkeleArdisdata).ArdisData
'Toevoegen.
onderdelenEnBarcodes.Add(New String() {enkeleArdisData.PartRef, enkeleArdisData.PartCalc})
ElseIf TypeOf onderdeel Is IHeeftDubbeleArdisData Then
'Dubbel Ardis data.
'Casten.
Dim dubbeleArdisData1 = CType(onderdeel, IHeeftDubbeleArdisData).ArdisData1
Dim dubbeleArdisData2 = CType(onderdeel, IHeeftDubbeleArdisData).ArdisData2
'Toevoegen.
onderdelenEnBarcodes.Add(New String() {dubbeleArdisData1.PartRef, dubbeleArdisData1.PartCalc})
onderdelenEnBarcodes.Add(New String() {dubbeleArdisData2.PartRef, dubbeleArdisData2.PartCalc})
End If
Next
Next
'Lijst van onderdelen en barcodes retourneren.
Return onderdelenEnBarcodes
End Function
'''
''' Alle laden updaten met waarden uit andere lade.
'''
''' De andere lade
Public Sub UpdateAlleLaden(gewijzigdeLade As TLadeType)
'Controleer of lijst leeg is.
If Laden Is Nothing OrElse Laden.Count = 0 Then
'Lijst van laden is leeg, update kan niet uitgevoerd worden.
Throw New Exception("Kon special laden niet updaten aan de hand van een gewijzigde lade. Geen laden aanwezig.")
End If
'Lijst is niet leeg, hook aanroepen.
UpdateLaden(gewijzigdeLade)
End Sub
'''
''' Hook voor alle laden te updaten met waarden uit andere lade.
'''
''' De andere lade
Protected MustOverride Sub UpdateLaden(gewijzigdeLade As TLadeType)
End Class