Public/New-AMONotification.ps1

<#
.SYNOPSIS
Creates a new notification.
.DESCRIPTION
This function creates a new notification in the system.
.PARAMETER CreatedBy
Specifies the creator of the notification.
.PARAMETER Title
Specifies the title of the notification.
.PARAMETER Description
Specifies the description of the notification.
.PARAMETER Level
Specifies the level of the notification (Info, Warning, Error, Success).
.PARAMETER DataSourcePath
Specifies the path to the data source.
.EXAMPLE
New-AMONotification -CreatedBy "John" -Title "Notification Title" -Description "Notification Description" -Level "Info"
#>

function New-AMONotification
{
    param(
        [string]$CreatedBy,
        [Parameter(Mandatory = $true)]
        [string]$Title,
        [Parameter(Mandatory = $true)]
        [string]$Description,
        [Parameter(Mandatory = $true)]
        [ValidateSet("Info", "Warning", "Error", "Success")]
        [string]$Level,
        [string]$DataSourcePath = "$Repository\..\database.db"
    )

    try {
    if ($CreatedBy -eq [System.String]::Empty)
    {
        $CreatedBy = "System"
        Write-Verbose "CreatedBy is empty. Setting to 'System'."
    }
    if (-not (Test-Path $DataSourcePath))
    {
        Write-Error "Database not found at $DataSourcePath"
        throw [System.IO.FileNotFoundException]::new("Database not found at $DataSourcePath")
    }
    {
        Write-Error "Database not found at $DataSourcePath"
        throw [System.IO.FileNotFoundException]::new("Database not found at $DataSourcePath")
    }
    $IntLevel = Switch ($Level)
    {
        "Info" { 0 }
        "Warning" { 1 }
        "Error" { 2 }
        "Success" { 3 }
        default { 4 }
    }
    Write-Verbose "Level: $Level -> $IntLevel"

    if ($IntLevel -eq 3)
    {
        $Title = "Success: $Title"
        
    }
    if ($IntLevel -eq 4)
    {
        $Title = "Undefined: $Title"
    }
    $Today = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    Write-Verbose "Making a new notification..."
    Write-Verbose "Title: $Title"
    Write-Verbose "Description: $Description"
    Write-Verbose "Level: $IntLevel"
    Write-Verbose "CreatedBy: $CreatedBy"
    Write-Verbose "CreatedTime: $Today"

    Write-Verbose "Inserting notification..."
    $Query = "INSERT INTO Notification (CreatedBy, CreatedTime, Description, Level, Title, Viewed) VALUES ('System', '$Today', '$Description', '$IntLevel', '$Title', '0')"
    Write-Verbose "Query: $Query"
    Invoke-SqliteQuery -DataSource $DataSourcePath -Query $Query -ErrorAction Stop
    Write-Verbose "Notification inserted."
    }
    catch
    {
        Write-Error $_.Exception.Message
        throw $_.Exception
    }
}