This commit is contained in:
2025-10-14 18:09:43 +02:00
parent 315ac6ef0f
commit 2dc8969428

View File

@@ -44,27 +44,27 @@ function Set-Shift {
[string]$mail [string]$mail
) )
#$params = @{ $params = @{
# UserId = $userId UserId = $userId
# schedulingGroupId = $groupID schedulingGroupId = $groupID
# sharedShift = @{ sharedShift = @{
# notes = ($shiftName) notes = ($shiftName)
# startDateTime = [System.DateTime]::Parse($StartDate.ToString("yyyy-MM-dd'T'HH:mm:ssZ")) startDateTime = [System.DateTime]::Parse($StartDate.ToString("yyyy-MM-dd'T'HH:mm:ssZ"))
# endDateTime = [System.DateTime]::Parse($EndDate.ToString("yyyy-MM-dd'T'HH:mm:ssZ")) endDateTime = [System.DateTime]::Parse($EndDate.ToString("yyyy-MM-dd'T'HH:mm:ssZ"))
# theme = $color theme = $color
# } }
#} }
#$headers = @{ #$headers = @{
# "MS-APP-ACTS-AS" = $userIdAdmin # "MS-APP-ACTS-AS" = $userIdAdmin
# "Prefer" = "no-notification" # "Prefer" = "no-notification"
#} #}
#$newShift = New-MgTeamScheduleShift -TeamId $teamID -DraftShift -BodyParameter $params -Headers @{ "MS-APP-ACTS-AS" = $userIdAdmin } $newShift = New-MgTeamScheduleShift -TeamId $teamID -BodyParameter $params -Headers @{ "MS-APP-ACTS-AS" = $userIdAdmin }
#Write-Debug ("SCHEDULING: {0} {1} - {2}" -f $newShift.SharedShift.StartDateTime.ToString("yyyy-MM-dd HH:mm"), $newShift.SharedShift.EndDateTime.ToString("yyyy-MM-dd HH:mm"), $newShift.SharedShift.Notes) #Write-Debug ("SCHEDULING: {0} {1} - {2}" -f $newShift.SharedShift.StartDateTime.ToString("yyyy-MM-dd HH:mm"), $newShift.SharedShift.EndDateTime.ToString("yyyy-MM-dd HH:mm"), $newShift.SharedShift.Notes)
#("SCHEDULING: {0} {1} - {2}" -f $newShift.SharedShift.StartDateTime.ToString("yyyy-MM-dd HH:mm"), $newShift.SharedShift.EndDateTime.ToString("yyyy-MM-dd HH:mm"), $newShift.SharedShift.Notes) | Add-Content -Path $logPath #("SCHEDULING: {0} {1} - {2}" -f $newShift.SharedShift.StartDateTime.ToString("yyyy-MM-dd HH:mm"), $newShift.SharedShift.EndDateTime.ToString("yyyy-MM-dd HH:mm"), $newShift.SharedShift.Notes) | Add-Content -Path $logPath
Write-Debug("{0} {1}: {2} {3}" -f $dayDate, $dayDate.DayOfWeek, $mail, $shiftName) Write-Debug("{0} {1}: {2} {3} {4} {5}" -f $dayDate, $dayDate.DayOfWeek, $mail, $shiftName, $StartDate, $EndDate)
$newShift = 0 #$newShift = 0
return $newShift return $newShift
} }
@@ -148,7 +148,7 @@ Connect-MgGraph -AccessToken $($token | ConvertTo-SecureString -AsPlainText -For
#$today = (Get-Date).Date #$today = (Get-Date).Date
#$today = $today_old.AddYears(2) #$today = $today_old.AddYears(2)
$today = Get-Date -Day 11 -Month 1 -Year 2027 -Hour 9 -Minute 00 -Second 00 -Millisecond 00 $today = Get-Date -Day 1 -Month 2 -Year 2027 -Hour 9 -Minute 00 -Second 00 -Millisecond 00
$schedule = Get-Content -Path "./config.json" -Raw | ConvertFrom-Json $schedule = Get-Content -Path "./config.json" -Raw | ConvertFrom-Json
@@ -168,7 +168,7 @@ $allemails = $schedule.PSObject.Properties | ForEach-Object {
#$Monday = $today.AddDays(1 - $today.DayOfWeek.value__) #$Monday = $today.AddDays(1 - $today.DayOfWeek.value__)
#$Friday = $Monday.AddDays(4) #$Friday = $Monday.AddDays(4)
$daysahead = 14 $daysahead = 5
$startSpanDate = Get-Date -Day $today.Day -Month $today.Month -Year $today.Year -Hour 9 -Minute 00 -Second 00 -Millisecond 00 $startSpanDate = Get-Date -Day $today.Day -Month $today.Month -Year $today.Year -Hour 9 -Minute 00 -Second 00 -Millisecond 00
$endSpanDate = Get-Date -Day $startSpanDate.AddDays($daysahead).Day -Month $startSpanDate.AddDays($daysahead).Month -Year $startSpanDate.AddDays($daysahead).Year -Hour 17 -Minute 00 -Second 00 -Millisecond 00 $endSpanDate = Get-Date -Day $startSpanDate.AddDays($daysahead).Day -Month $startSpanDate.AddDays($daysahead).Month -Year $startSpanDate.AddDays($daysahead).Year -Hour 17 -Minute 00 -Second 00 -Millisecond 00
@@ -227,11 +227,9 @@ try {
$dateStart = $(get-date -Day $dayDate.Day -Month $dayDate.Month -Year $dayDate.Year -Hour 9 -Minute 00 -Second 00).AddHours(-1) $dateStart = $(get-date -Day $dayDate.Day -Month $dayDate.Month -Year $dayDate.Year -Hour 9 -Minute 00 -Second 00).AddHours(-1)
$dateEnd = $(get-date -Day $dayDate.Day -Month $dayDate.Month -Year $dayDate.Year -Hour 17 -Minute 00 -Second 00).AddHours(-1) $dateEnd = $(get-date -Day $dayDate.Day -Month $dayDate.Month -Year $dayDate.Year -Hour 17 -Minute 00 -Second 00).AddHours(-1)
if (($dayDate.IsDaylightSavingTime()) -eq $false) { if (($dayDate.IsDaylightSavingTime()) -eq $true) {
$dateStart = $dateStart.AddHours(-1) $dateStart = $dateStart.AddHours(-1)
$dateEnd = $dateStart.AddHours(-1) $dateEnd = $dateEnd.AddHours(-1)
}
else {
} }
$shifts_today = [Object[]] $allshifts | Where-Object -Filter { $shifts_today = [Object[]] $allshifts | Where-Object -Filter {
@@ -327,7 +325,7 @@ try {
foreach ($shift in $shifts_today) { foreach ($shift in $shifts_today) {
if($shift.UserId -eq $futureds_id) { if($shift.UserId -eq $futureds_id) {
Write-Debug(">>> {0} {1}: removing shift {2} {3} {4} for {5}" -f $futureday, $futureday.DayOfWeek, $shift.Notes, $shift.StartDateTime, $shift.EndDateTime, $futureds_email) Write-Debug(">>> {0} {1}: removing shift {2} {3} {4} for {5}" -f $futureday, $futureday.DayOfWeek, $shift.Notes, $shift.StartDateTime, $shift.EndDateTime, $futureds_email)
#Remove-MgTeamScheduleShift -ShiftId $shift.id -TeamId $team.Id Remove-MgTeamScheduleShift -ShiftId $shift.id -TeamId $team.Id
if($futureds_email -in $ho_emails) { if($futureds_email -in $ho_emails) {
$newshift = Set-Shift -userId $futureds_id -groupID $group.id -shiftName "Home Office - Denní směna" -StartDate $dateStart -EndDate $dateEnd -color "purple" -teamID $team.id -mail $futureds_email $newshift = Set-Shift -userId $futureds_id -groupID $group.id -shiftName "Home Office - Denní směna" -StartDate $dateStart -EndDate $dateEnd -color "purple" -teamID $team.id -mail $futureds_email
$allshifts += [Object[]] $newshift $allshifts += [Object[]] $newshift
@@ -361,6 +359,7 @@ try {
} }
} }
} }
continue
} }
} }
} }
@@ -380,16 +379,9 @@ try {
if($email -eq $rlcz_mtnc_email) { if($email -eq $rlcz_mtnc_email) {
if ($dayDate.DayOfWeek -eq "Thursday") { if ($dayDate.DayOfWeek -eq "Thursday") {
$yesterday = $dayDate.AddDays(-1) $yesterday = $dayDate.AddDays(-1)
if (($yesterday.IsDaylightSavingTime()) -eq $false) { $rlcz_shifts = [Object[]] $allshifts | Where-Object -Filter { $_.schedulingGroupId -eq $group.Id -and $_.SharedShift.Notes -eq "RLCZ" -and ($_.SharedShift.StartDateTime.Date -eq $yesterday.Date -or $_.SharedShift.EndDateTime.Date -eq $yesterday.Date) }
$rlcz_shift_start = $(get-date -Day $yesterday.Day -Month $yesterday.Month -Year $yesterday.Year -Hour 18 -Minute 00 -Second 00).AddHours(-1)
$rlcz_shift_end = $(get-date -Day $yesterday.Day -Month $yesterday.Month -Year $yesterday.Year -Hour 23 -Minute 00 -Second 00).AddHours(-1) if (Invoke-HasShift -UID $userId -shifts $rlcz_shifts -mail $email) {
}
else {
$rlcz_shift_start = $(get-date -Day $yesterday.Day -Month $yesterday.Month -Year $yesterday.Year -Hour 18 -Minute 00 -Second 00).AddHours(-2)
$rlcz_shift_end = $(get-date -Day $yesterday.Day -Month $yesterday.Month -Year $yesterday.Year -Hour 23 -Minute 00 -Second 00).AddHours(-2)
}
$rlcz_shifts = [Object[]] $allshifts | Where-Object -Filter { $_.schedulingGroupId -eq $group.Id -and $_.SharedShift.Notes -eq "RLCZ" -and $_.SharedShift.StartDateTime.ToString("yyyy-MM-dd HH:mm") -ge $rlcz_shift_start.ToString("yyyy-MM-dd HH:mm") -and $_.SharedShift.EndDateTime.ToString("yyyy-MM-dd HH:mm") -le $rlcz_shift_end.ToString("yyyy-MM-dd HH:mm") }
if (Invoke-HasShift -UID $userId -shifts $rlcz_shifts -eq $true -mail $email) {
if((Invoke-HasShiftorTimeOff -UID $userId -shifts $shifts_today -timeoff $timeoff_toda -mail $email) -eq $false) { if((Invoke-HasShiftorTimeOff -UID $userId -shifts $shifts_today -timeoff $timeoff_toda -mail $email) -eq $false) {
if($email -in $ho_emails) { if($email -in $ho_emails) {
$newshift = Set-Shift -userId $userId -groupID $group.id -shiftName "Home office" -StartDate $dateStart -EndDate $dateEnd.AddHours($rlcz_shift_reduction) -color "pink" -teamID $team.id -mail $email $newshift = Set-Shift -userId $userId -groupID $group.id -shiftName "Home office" -StartDate $dateStart -EndDate $dateEnd.AddHours($rlcz_shift_reduction) -color "pink" -teamID $team.id -mail $email
@@ -414,6 +406,8 @@ try {
} }
} }
if((Invoke-HasShiftorTimeOff -UID $userId -shifts $shifts_today -timeoff $timeoff_today -mail $email) -eq $false) { if((Invoke-HasShiftorTimeOff -UID $userId -shifts $shifts_today -timeoff $timeoff_today -mail $email) -eq $false) {
$newshift = Set-Shift -userId $userId -groupID $group.id -shiftName "Office" -StartDate $dateStart -EndDate $dateEnd -color "blue" -teamID $team.id -mail $email $newshift = Set-Shift -userId $userId -groupID $group.id -shiftName "Office" -StartDate $dateStart -EndDate $dateEnd -color "blue" -teamID $team.id -mail $email
$allshifts += [Object[]] $newshift $allshifts += [Object[]] $newshift
@@ -425,14 +419,14 @@ try {
} }
} }
#$params = @{ $params = @{
# notifyTeam = $false notifyTeam = $false
# startDateTime = [System.DateTime]::Parse($startSpanDate.ToString("yyyy-MM-dd'T'HH:mm:ssZ")) startDateTime = [System.DateTime]::Parse($startSpanDate.ToString("yyyy-MM-dd'T'HH:mm:ssZ"))
# endDateTime = [System.DateTime]::Parse($endSpanDate.ToString("yyyy-MM-dd'T'HH:mm:ssZ")) endDateTime = [System.DateTime]::Parse($endSpanDate.ToString("yyyy-MM-dd'T'HH:mm:ssZ"))
#} }
#Invoke-MgShareTeamSchedule -TeamId $team.Id -BodyParameter $params -Headers @{ "MS-APP-ACTS-AS" = $userIdAdmin } Invoke-MgShareTeamSchedule -TeamId $team.Id -BodyParameter $params -Headers @{ "MS-APP-ACTS-AS" = $userIdAdmin }
#("SHARING: {0}" -f $scheduleGroupName) | Add-Content -Path $logPath ("SHARING: {0}" -f $scheduleGroupName) | Add-Content -Path $logPath
} }
catch { catch {