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