Imports System.IO

Public Class Exceptions
    Public Class MissingValueException
        Inherits ApplicationException

        Public ReadOnly File As FileInfo

        Public Sub New(File As FileInfo)
            MyBase.New()

            Me.File = File
        End Sub
    End Class

    Public Class TooMuchFerdsException
        Inherits ApplicationException

        Public Sub New()
            MyBase.New("More than one ZUGFeRD document found")
        End Sub
    End Class

    Public Class FileSizeLimitReachedException
        Inherits ApplicationException

        Public Const KEY_FILENAME = "FILENAME"

        Public Sub New(pFilePath As String, pFileSizeLimitInMegaBytes As Integer)
            MyBase.New($"At least one file exceeded the filesize limit of {pFileSizeLimitInMegaBytes}MB: {pFilePath}")
            Data.Add(KEY_FILENAME, pFilePath)
        End Sub
    End Class

    Public Class InvalidFerdException
        Inherits ApplicationException

        Public Sub New()
            MyBase.New("ZUGFeRD document found but was not formatted correctly")
        End Sub
    End Class

    Public Class NoFerdsException
        Inherits ApplicationException

        Public Sub New()
            MyBase.New("No ZUGFeRD documents found")
        End Sub
    End Class

    Public Class NoFerdsAlternateException
        Inherits ApplicationException

        Public Sub New()
            MyBase.New("No ZUGFeRD documents found, no rejection will be generated")
        End Sub
    End Class


    Public Class MD5HashException
        Inherits ApplicationException

        Public Sub New(pInfo As String)
            MyBase.New(pInfo)
        End Sub
    End Class
End Class
