PersonenImport.psm1
$script:Uid; $script:PersonUid; function Invoke-PersonenImport { param ( [Parameter(Mandatory, HelpMessage = "Liste der zu importierenden Parametern")] $parameterObject ) process { $KomMittelTypes = @("festnetznummer", "mobilenummer", "faxnummer","emailadresse", "wwwadresse", "postadresse"); $row = @{}; $parameterObject.psobject.properties | Foreach { $row[$_.Name] = $_.Value }; $Person = [PSCustomObject]@{}; $KomMittelListe = @{}; $AnmeldungListe = @{}; $TagListe = @{}; $Id = $row["Id"]; $Gruppe = $row["Sicherheitsgruppe"]; if ($Id -eq $null -or $Gruppe -eq $null) { Write-Error "Sicherheitsgruppe und Id sind erforderlich"; return; } $script:Uid = "!$Gruppe!$Id"; $script:PersonUid = "!Person!$Gruppe!$Id"; $Sicherheitseinstellung = New-Sicherheitseinstellung-Object $Gruppe; foreach ($key in $row.keys) { $elements = $key.Split('_'); if ($elements.Count -gt 1) { $name = $elements[2]; $type = $elements[0] + "_" + $elements[1]; } if ($elements.Count -eq 1) { $Person | Add-Member -MemberType NoteProperty -Name $key -Value $row[$key]; } elseif ($KomMittelTypes.Contains($elements[0].ToLower())) { if (-not $KomMittelListe[$type]) { $KomMittelListe[$type] = [PSCustomObject]@{}; } $KomMittelListe[$type] | Add-Member -MemberType NoteProperty -Name $name -Value $row[$key]; } elseif ($elements[0] -eq "anmeldung") { if (-not $AnmeldungListe[$type]) { $AnmeldungListe[$type] = [PSCustomObject]@{}; } $AnmeldungListe[$type] | Add-Member -MemberType NoteProperty -Name $name -Value $row[$key]; } elseif ($elements[0] -eq "tag") { $tagName = Get-TagTyp3Bereinigung($row[$key]); if ($tagName) { $tagName = $Gruppe +"/" +$tagName; if (-not $TagListe[$type]) { $TagListe[$type] = [PSCustomObject]@{}; } $TagListe[$type] | Add-Member -MemberType NoteProperty -Name $name -Value $tagName; } } else { Write-Warning "Parameter '$key' ist unbekannt."; } } Invoke-ImportPerson -Person $Person -KomMittelListe $KomMittelListe -TagListe $TagListe -Sicherheitseinstellung $Sicherheitseinstellung; Invoke-ImportAnmeldungen -AnmeldungListe $AnmeldungListe; } } function Invoke-ImportPerson { param ( [Parameter(Mandatory)] $Person, $TagListe, [Parameter(Mandatory)] $KomMittelListe, [Parameter(Mandatory)] $Sicherheitseinstellung ) process { try { $kmListe = @(); $AddTagsListe = @(); Write-Information "`nImportiere Person: $($Person.Vorname) $($Person.Name)" -InformationAction Continue Write-Information "====================" -InformationAction Continue if ($PSBoundParameters.ContainsKey("TagListe")) { foreach ($item in $TagListe.GetEnumerator()) { $params = $item.Value; $AddTagsListe += $params.name; } } foreach ($key in $KomMittelListe.keys) { $params = $KomMittelListe[$key]; $KmType = $key.Split('_'); if ($params.Notfall) { $Notfall = $params.Notfall; } else { $Notfall = $false; } if ($params.Wohnsitz) { $Wohnsitz = $params.Wohnsitz; } else { $Wohnsitz = $false; } if ($params.Kategorie) { $Kategorie = $params.Kategorie; } else { $Kategorie = "Privat"; } if (($KmType[0] -eq "festnetznummer" -or $KmType[0] -eq "mobilenummer" -or $KmType[0] -eq "faxnummer") -and $params.nummer) { $kmListe += New-Kommunikationsmittel-Object -Type $KmType[0] -Kategorie $params.kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Nummer $params.nummer; } elseif ($KmType[0] -eq "emailadresse" -and $params.adresse) { $kmListe += New-Kommunikationsmittel-Object -Type "EMailAdresse" -Kategorie $params.kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Adresse $params.adresse; } elseif ($KmType[0] -eq "wwwadresse" -and $params.Url) { $kmListe += New-Kommunikationsmittel-Object -Type "WwwAdresse" -Kategorie $params.kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Url $params.UrlUrl; } elseif ($KmType[0] -eq "postadresse") { if ($params.Land) { if ($params.Land -ne "CH" -and $params.Land -ne "LI" -and $params.Land -ne "DE") { if(($params.Adresse1 -ne $null -and $params.Adresse1 -ne '') -or ($params.Adresse2 -ne $null -and $params.Adresse2 -ne '') -or ($params.Adresse3 -ne $null -and $params.Adresse3 -ne '')){ $kmListe += New-PostAdresse-Object -Kategorie $Kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Land $params.Land -Zusatzzeile1 $params.Zusatzzeile1 -Zusatzzeile2 $params.Zusatzzeile2 -Adresse1 $params.Adresse1 -Adresse2 $params.Adresse2 -Adresse3 $params.Adresse3; } else{ $kmListe += New-PostAdresse-Object -Kategorie $Kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Land $params.Land -Zusatzzeile1 $params.Zusatzzeile1 -Zusatzzeile2 $params.Zusatzzeile2 -Strasse $params.Strasse -Hausnummer $params.Hausnummer -Postfach $params.Postfach -PLZ $params.PLZ -Ort $params.Ort; } } else { $kmListe += New-PostAdresse-Object -Kategorie $Kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Land $params.Land -Zusatzzeile1 $params.Zusatzzeile1 -Zusatzzeile2 $params.Zusatzzeile2 -Strasse $params.Strasse -Hausnummer $params.Hausnummer -Postfach $params.Postfach -PLZ $params.PLZ -Ort $params.Ort; } } elseif ($params.Ort -or $params.Strasse) { Write-Error "Für Postadresse $key ist kein Land gesetzt und kann daher nicht importiert werden." } } } if (Test-EntityExistsInIndex $script:PersonUid) { if ($Person.Type -eq "einzelperson") { Set-Einzelperson -PersonUid $script:PersonUid -Vorname $Person.Vorname -Name $Person.Name -Korrespondenzsprache $Person.Korrespondenzsprache -Geschlecht $Person.Geschlecht -Geburtsdatum $Person.Geburtsdatum -Muttersprache $Person.Muttersprache -Sozialversicherungsnummer $Person.Sozialversicherungsnummer -Anredezusatz $Person.Anredezusatz -AkademischerTitel $Person.AkademischerTitel -TitelZusatz $Person.TitelZusatz -Titel2 $Person.Titel2 -Funktion $Person.Funktion -Beruf $Person.Beruf -Branche $Person.Branche -Staatsangehoerigkeit $Person.Staatsangehoerigkeit -Heimatort $Person.Heimatort -Auslaenderkategorie $Person.Auslaenderkategorie -BewilligungBis $Person.BewilligungBis -Geburtsort $Person.Geburtsort -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe; } elseif ($Person.Type -eq "organisation") { Set-Organisation -OrganisationUid $script:PersonUid -Organisationsname $Person.Name -Organisationsform $Person.Organisationsform -Korrespondenzsprache $Person.Korrespondenzsprache -UnternehmensId $Person.UnternehmensId -Branche $Person.Branche -Mitarbeiteranzahl $Person.Mitarbeiteranzahl -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe; } elseif ($Person.Type -eq "familie") { Set-Familie -FamilieUid $script:PersonUid -Familienname $Person.Name -Vornamen $Person.Vorname -Korrespondenzsprache $Person.Korrespondenzsprache -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe; } } else { if ($Person.Type -eq "einzelperson") { New-Einzelperson -PersonUid $script:PersonUid -Vorname $Person.Vorname -Name $Person.Name -Korrespondenzsprache $Person.Korrespondenzsprache -Geschlecht $Person.Geschlecht -Geburtsdatum $Person.Geburtsdatum -Muttersprache $Person.Muttersprache -Sozialversicherungsnummer $Person.Sozialversicherungsnummer -Anredezusatz $Person.Anredezusatz -AkademischerTitel $Person.AkademischerTitel -TitelZusatz $Person.TitelZusatz -Titel2 $Person.Titel2 -Funktion $Person.Funktion -Beruf $Person.Beruf -Branche $Person.Branche -Staatsangehoerigkeit $Person.Staatsangehoerigkeit -Heimatort $Person.Heimatort -Auslaenderkategorie $Person.Auslaenderkategorie -BewilligungBis $Person.BewilligungBis -Geburtsort $Person.Geburtsort -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe -SicherheitsEinstellung $Sicherheitseinstellung; } elseif ($Person.Type -eq "organisation") { New-Organisation -OrganisationUid $script:PersonUid -Organisationsname $Person.Name -Organisationsform $Person.Organisationsform -Korrespondenzsprache $Person.Korrespondenzsprache -UnternehmensId $Person.UnternehmensId -Branche $Person.Branche -Mitarbeiteranzahl $Person.Mitarbeiteranzahl -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe -SicherheitsEinstellung $Sicherheitseinstellung; } elseif ($Person.Type -eq "familie") { New-Familie -FamilieUid $script:PersonUid -Familienname $Person.Name -Vornamen $Person.Vorname -Korrespondenzsprache $Person.Korrespondenzsprache -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe -SicherheitsEinstellung $Sicherheitseinstellung; } } } catch { $ErrMsg = $_.Exception.Message; if ($_.TargetObject.errors.message) { $ErrMsg += ": " + $_.TargetObject.errors.message; } Write-Error "Invoke-ImportPerson: $ErrMsg"; } } } function Invoke-ImportAnmeldungen { param ( [Parameter(Mandatory)] $AnmeldungListe ) process { try { foreach ($item in $AnmeldungListe.GetEnumerator()) { $params = $item.Value; $AnmeldungUid = "!Anmeldung" + $script:Uid + "!" + $params.Modulversion; if ($params.Status) { $Status = $params.Status; } else { $Status = "Definitiv"; } if ($params.Vertragspartner) { $Vertragspartner = $params.Vertragspartner; } else { $Vertragspartner = $script:PersonUid; } if ($params.Modulversion) { if (Test-EntityExistsInIndex $AnmeldungUid) { Set-Anmeldung -AnmeldungUid $AnmeldungUid -LeistungsempfaengerUid $script:PersonUid -AnlassUid $params.Anlass -ModulversionUid $params.Modulversion -VertragspartnerUid $Vertragspartner -LieferadresseUid $params.Lieferadresse -Bemerkungen $params.Bemerkungen -Status $Status; } else { Start-Sleep -Seconds 2 New-Anmeldung -AnmeldungUid $AnmeldungUid -LeistungsempfaengerUid $script:PersonUid -AnlassUid $params.Anlass -ModulversionUid $params.Modulversion -VertragspartnerUid $Vertragspartner -LieferadresseUid $params.Lieferadresse -Bemerkungen $params.Bemerkungen -Status $Status; } } } } catch { $ErrMsg = $_.Exception.Message; if ($_.TargetObject.errors.message) { $ErrMsg += ": " + $_.TargetObject.errors.message; } Write-Error "Invoke-ImportAnmeldungen: $ErrMsg"; } } } function Get-TagTyp3Bereinigung ($TagName) { if ($TagName -ne $null) { $TagName = $TagName.ToLower().Trim(); $TagName = $TagName -replace "é", "e"; $TagName = $TagName -replace "è", "e"; $TagName = $TagName -replace "à", "a"; $TagName = $TagName -replace "ç", "c"; $TagName = $TagName -replace "ä", "ae"; $TagName = $TagName -replace "ö", "oe"; $TagName = $TagName -replace "ü", "ue"; $TagName = $TagName -replace "@", "-at-"; $TagName = $TagName -replace "%", "-prozent-"; $TagName = $TagName -replace "[\s—/|\\-]+","-"; $TagName = $TagName -replace "^[^a-z0-9]+|[^a-z0-9-]+|[^a-z0-9]+$",""; $regex = [regex]("^[a-z0-9][a-z0-9-]*[a-z0-9]$"); if ($regex.Match($TagName).Success) { return $TagName; } } return $null; } Export-ModuleMember -function Invoke-PersonenImport |