Imports DubbeleSifonLadeManager = TA_OR_rework.DubbeleSifonLadeManager
Public Class SifonLadeController
Private Shared _instance As SifonLadeController
Private ReadOnly _sifonladeManager As MustInheritSifonLadeManager(Of ISifonLade)
Private ReadOnly _sifonladeDubbelManager As MustInheritSifonLadeManager(Of ISifonLadeDubbel)
Private ReadOnly _reworkTrayRepository As ReworkTrayRepository
'''
''' Singleton instantie opvragen.
'''
''' Instantie
Public Shared Function GetInstance() As SifonLadeController
If _instance Is Nothing Then
_instance = New SifonLadeController
End If
Return _instance
End Function
Public Sub New()
'Rework tray slot engine.
Dim reworkTrayEngine As New ReworkTrayEngine(New ReworkTraySlotRepository())
'Rework tray repository
_reworkTrayRepository = New ReworkTrayRepository()
'Special lade engine initialiseren met de juiste mapper.
Dim sifonLadeEngine = New SpecialLadeEngine(Of ISifonLade)(New SifonLadenMapper)
'Manager initialiseren met de engine.
_sifonladeManager = New SifonLadeManager(sifonLadeEngine, reworkTrayEngine, _reworkTrayRepository)
'Dubbele special lade engine initialiseren met de juiste mapper.
Dim sifonladeDubbelEngine = New SpecialLadeEngine(Of ISifonLadeDubbel)(New SifonLadenDubbelMapper)
'Manager initialiseren met de engine.
_sifonladeDubbelManager = New DubbeleSifonLadeManager(sifonladeDubbelEngine, reworkTrayEngine, _reworkTrayRepository)
End Sub
#Region "Normale sifon lade"
'''
''' Zoek de sifonlade aan de hand van de lade code.
'''
'''
Public Function ZoekSifonLade(ladeCode As String) As Boolean
'Manager aanroepen en resultaat retourneren. True als de lade is gevonden.
Return _sifonladeManager.ZoekEnLaadLaden(ladeCode)
End Function
#Region "Informatie"
'''
''' Informatie opvragen over de sifonLade als DTO.
'''
''' DTO met informatie
Public Function GeefInformatieSifonLade() As SifonLadeDto
'De eerste sifonlade opvragen.
Dim sifonLade As ISifonLade = _sifonladeManager.EersteOfStandaard()
'Controleren of de sifonLade niet leeg is.
If sifonLade Is Nothing Then
'Zo ja, retourneer Nothing.
Return Nothing
End If
'De DTO converter aanmaken.
Dim dtoConverter = New SifonLadeDtoConverter
'Sifonlade converteren en retourneren als DTO.
Return dtoConverter.ToDto(sifonLade)
End Function
'''
''' Opvragen van aantal sifonladen.
'''
''' Het aantal sifonladen
Public Function GeefAantalSifonLaden() As Integer
Return _sifonladeManager.AantalLaden()
End Function
'''
''' Opvragen van de namen van alle onderdelen van een sifonlade met de bijhorende barcodes
'''
'''
Public Function GeefSifonLadenOrigineleOnderdelenEnBarcodes() As List(Of String())
Return _sifonladeManager.GeefOrigineleOnderdelenEnBarcodes()
End Function
#End Region
'''
''' Gewijzigde waarden van de sifon lade updaten.
'''
''' De DTO van de sifon lade
Public Sub UpdateWaardenSifonLade(sifonLadeDto As SifonLadeDto)
'De DTO converter aanmaken.
Dim dtoConverter = New SifonLadeDtoConverter
'Dto converteren naar sifon lade.
Dim sifonlade = dtoConverter.FromDto(sifonLadeDto)
'Manager aanroepen om te updaten.
_sifonladeManager.UpdateAlleLaden(sifonlade)
End Sub
'''
''' Sifonlade bouwen en zijkanten verdelen over rework trays.
'''
Public Sub VerdeelSifonLadenOverReworkTrays()
_sifonladeManager.BouwLaden()
End Sub
Public Sub ProduceerSifonladen()
Try
_sifonladeManager.Produceer()
Catch ex As Exception
Throw New Exception($"Kon sifonladen niet produceren.{vbNewLine}{ex.Message}")
Finally
ArdisTextMapper.stopArdisTextOpslag()
End Try
End Sub
#End Region
#Region "Dubbele sifon lade"
'''
''' Zoek de dubbele sifonlade aan de hand van de lade code.
'''
'''
Public Function ZoekDubbeleSifonLade(ladeCode As String) As Boolean
'Manager aanroepen en resultaat retourneren. True als de lade is gevonden.
Return _sifonladeDubbelManager.ZoekEnLaadLaden(ladeCode)
End Function
#Region "Informatie"
'''
''' Informatie opvragen over de dubbele sifonLade als DTO.
'''
''' DTO met informatie
Public Function GeefInformatieDubbeleSifonLade() As SifonLadeDubbelDto
'De eerste sifonlade opvragen.
Dim sifonLade As ISifonLade = _sifonladeDubbelManager.EersteOfStandaard()
'Controleren of de sifonLade niet leeg is.
If sifonLade Is Nothing Then
'Zo ja, retourneer Nothing.
Return Nothing
End If
'De DTO converter aanmaken.
Dim dtoConverter = New SifonLadeDubbelDtoConverter
'Sifonlade converteren en retourneren als DTO.
Return dtoConverter.ToDto(sifonLade)
End Function
'''
''' Opvragen van aantal dubbele sifonladen.
'''
''' Het aantal sifonladen
Public Function GeefAantalDubbeleSifonLaden() As Integer
Return _sifonladeDubbelManager.AantalLaden()
End Function
'''
''' Opvragen van de namen van alle onderdelen van een dubbele sifonlade met de bijhorende barcodes
'''
'''
Public Function GeefDubbeleSifonLadenOrigineleOnderdelenEnBarcodes() As List(Of String())
Return _sifonladeDubbelManager.GeefOrigineleOnderdelenEnBarcodes()
End Function
#End Region
'''
''' Gewijzigde waarden van de sifonlade updaten.
'''
''' De DTO van de dubbele sifonlade
Public Sub UpdateWaardenDubbeleSifonLade(sifonLadeDubbelDto As SifonLadeDubbelDto)
'De DTO converter aanmaken.
Dim dtoConverter = New SifonLadeDubbelDtoConverter
'Dto converteren naar sifon lade.
Dim sifonlade = dtoConverter.FromDto(sifonLadeDubbelDto)
'Manager aanroepen om te updaten.
_sifonladeDubbelManager.UpdateAlleLaden(sifonlade)
End Sub
'''
''' Dubbele sifonlade bouwen en zijkanten verdelen over rework trays.
'''
Public Sub VerdeelDubbeleSifonLadenOverReworkTrays()
_sifonladeDubbelManager.BouwLaden()
End Sub
Public Sub ProduceerDubbeleSifonladen()
Try
_sifonladeDubbelManager.Produceer()
Catch ex As Exception
Throw New Exception($"Kon sifonladen niet produceren.{vbNewLine}{ex.Message}")
Finally
ArdisTextMapper.stopArdisTextOpslag()
End Try
End Sub
#End Region
Public Function GeefAantalTrays() As Integer
Return _reworkTrayRepository.aantalReworkTraysSpecial
End Function
Public Function GeefSpecialLadeReworkTrayNummer(index As Integer) As String
Return _reworkTrayRepository.geefSpecialLadeReworkTrayNummer(index)
End Function
'''
''' inhoud van alle slots van een reworktray geven
'''
'''
'''
Public Function GeefSlotsSpecialReworkTray(index As Integer) As List(Of List(Of String))
Dim trays As New List(Of List(Of String))
Try
For teller As Integer = 0 To _reworkTrayRepository.reworkTraysSpecialLaden(index).slots.Count - 1
Dim slot As Slot = _reworkTrayRepository.reworkTraysSpecialLaden(index).slots(teller)
Dim content As New List(Of String)
If Not (slot.zijkantenSpeciaal Is Nothing OrElse slot.zijkantenSpeciaal.Count <= 0) Then
'voorraad
content.Add(slot.nummer)
content.Add(slot.zijkantenSpeciaal(0).PartCalc)
content.Add(slot.zijkantenSpeciaal(0).GeefBatch)
If slot.zijkantenSpeciaal.Count = 4 Then 'voorraad
content.Add(slot.zijkantenSpeciaal(0).geefColorDubbelVoorraad(slot.zijkantenSpeciaal(1), slot.zijkantenSpeciaal(2), slot.zijkantenSpeciaal(3)))
ElseIf slot.zijkantenSpeciaal(0).AndereZijkantVanPaar Is Nothing Then
'Originele zijkant.
content.Add(slot.zijkantenSpeciaal(0).geefColorDubbel(slot.zijkantenSpeciaal(1)))
Else
'Moeten andere zijkant van he tpaar hebben om bicolor te kunnen tonen.
content.Add(slot.zijkantenSpeciaal(0).geefColorDubbel(slot.zijkantenSpeciaal(0).AndereZijkantVanPaar))
End If
content.Add(slot.zijkantenSpeciaal(0).PartL)
content.Add(slot.zijkantenSpeciaal(0).PartW)
Else 'leeg slot
'de cijfers wel, maar gewoon geen andere informatie meegeven
content.Add(teller + 1)
content.Add("")
content.Add("")
content.Add("")
content.Add("")
content.Add("")
End If
trays.Add(content)
Next
Return trays
Catch ex As Exception
MessageBox.Show("Er is een fout opgetreden bij het opvragen van een special lade reworktray" & ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return Nothing
End Try
End Function
Public Sub WisSifonladen()
'Repository leegmaken.
_reworkTrayRepository.verwijderReworkTraysSpecialLade()
End Sub
End Class