From c988f637a15389d4b0f3be1623b8a30ed2c3aaea Mon Sep 17 00:00:00 2001 From: Jonatan Rek Date: Tue, 14 Oct 2025 19:27:51 +0200 Subject: [PATCH] Fixes --- shifts_copy.ps1 | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/shifts_copy.ps1 b/shifts_copy.ps1 index 3e81b4a..c62b9ae 100644 --- a/shifts_copy.ps1 +++ b/shifts_copy.ps1 @@ -222,22 +222,30 @@ try { } Write-Debug ("Shifts {0}, TimeOff: {1}" -f $shifts_today.length, $timeoff_today.length) + $ds_covered = $false; + + $userEmailToIdHashtable = @{} + $userEmailNotAvailable = @() foreach ($email in $allemails) { $userId = $(Get-MgUser -Filter "UserPrincipalName eq '$email' or proxyAddresses/any(c:c eq 'smtp:$email')").Id + $userEmailToIdHashtable[$email] = $userId if ($userId -in $shifts_today.UserId) { + $userEmailNotAvailable += $email Write-Debug ("{0} has Manual Shift" -f $email) continue; } if ($userId -in $timeoff_today.UserId) { + $userEmailNotAvailable += $email Write-Debug ("{0} has TimeOff" -f $email) continue; } #NoShift if ($email -in $ns_emails) { + $userEmailNotAvailable += $email Write-Debug ("{0} has NULL Shift " -f $email) continue } @@ -255,15 +263,31 @@ try { Write-Debug ("{0} has Denní HO" -f $email) #$newshift = Set-Shift -userId $userId -groupID $group.id -shiftName "Home Office - Denní směna" -StartDate $dateStart -EndDate $dateEnd -color "purple" -teamID $team.id -mail $ds_email #$allshifts += [Object[]] $newshift + $ds_covered = $true; continue } elseif ($email -eq $ds_email) { Write-Debug ("{0} has Denní" -f $email) #$newshift = Set-Shift -userId $userId -groupID $group.id -shiftName "Denní směna" -StartDate $dateStart -EndDate $dateEnd -color "purple" -teamID $team.id -mail $ds_email #$allshifts += [Object[]] $newshift + $ds_covered = $true; continue } + } + $timeoff_today = [Object[]] $timeoff_all | Where-Object -Filter { + ($_.SharedTimeOff.StartDateTime.Date -eq $dateStart.Date -or $_.SharedTimeOff.EndDateTime.Date -eq $dateEnd.Date) + } + + foreach ($email in ($allemails | Where-Object -Filter {$_ -notin $userEmailNotAvailable} | Where-Object -Filter {$userEmailToIdHashtable[$_] -notin $timeoff_today.UserId})) { + if (($ds_covered -eq $false)) { + $ds_covered = $true; + Write-Debug ("{0} has backup Denní" -f $email) + #$newshift = Set-Shift -userId $userId -groupID $group.id -shiftName "Office" -StartDate $dateStart -EndDate $dateEnd -color "purple" -teamID $team.id -mail $ds_email + #$allshifts += [Object[]] $newshift + continue + } + Write-Debug ("{0} has Office" -f $email) #$newshift = Set-Shift -userId $userId -groupID $group.id -shiftName "Office" -StartDate $dateStart -EndDate $dateEnd -color "purple" -teamID $team.id -mail $ds_email #$allshifts += [Object[]] $newshift