On-site shift name now includes the customer

This commit is contained in:
2025-11-06 16:27:16 +01:00
parent 9018c721b0
commit 765bcdf1de
2 changed files with 60 additions and 36 deletions

View File

@@ -1,32 +1,47 @@
{ {
"monday": { "monday": {
"ds": "jiri.kotlan@itego.cz", "ds": "jiri.kotlan@itego.cz",
"ho": ["milan.husak@itego.cz"], "ho": ["milan.husak@itego.cz"],
"os": ["vaclav.spaninger@itego.cz","roman.lesyk@itego.cz","jan.zazvonil@itego.cz"], "os": [
"ns": [] { "email": "vaclav.spaninger@itego.cz", "customer": "KB" },
}, { "email": "roman.lesyk@itego.cz", "customer": "KB" },
"tuesday": { { "email": "jan.zazvonil@itego.cz", "customer": "Pragolab" }
"ds": "milan.husak@itego.cz", ],
"ho": ["jiri.kotlan@itego.cz"], "ns": []
"os": ["vaclav.spaninger@itego.cz","roman.lesyk@itego.cz"], },
"ns": ["jan.zazvonil@itego.cz"] "tuesday": {
}, "ds": "milan.husak@itego.cz",
"wednesday": { "ho": ["jiri.kotlan@itego.cz"],
"ds": "jiri.kotlan@itego.cz", "os": [
"ho": ["jiri.kotlan@itego.cz"], { "email": "vaclav.spaninger@itego.cz", "customer": "KB" },
"os": ["vaclav.spaninger@itego.cz","roman.lesyk@itego.cz"], { "email": "roman.lesyk@itego.cz", "customer": "KB" }
"ns": ["jan.zazvonil@itego.cz"] ],
}, "ns": ["jan.zazvonil@itego.cz"]
"thursday": { },
"ds": "milan.husak@itego.cz", "wednesday": {
"ho": ["milan.husak@itego.cz"], "ds": "jiri.kotlan@itego.cz",
"os": ["vaclav.spaninger@itego.cz","roman.lesyk@itego.cz"], "ho": ["jiri.kotlan@itego.cz"],
"ns": ["jan.zazvonil@itego.cz"] "os": [
}, { "email": "vaclav.spaninger@itego.cz", "customer": "KB" },
"friday": { { "email": "roman.lesyk@itego.cz", "customer": "KB" }
"ds": "roman.lesyk@itego.cz", ],
"ho": [], "ns": ["jan.zazvonil@itego.cz"]
"os": ["jan.zazvonil@itego.cz"], },
"ns": [] "thursday": {
} "ds": "milan.husak@itego.cz",
"ho": ["milan.husak@itego.cz"],
"os": [
{ "email": "vaclav.spaninger@itego.cz", "customer": "KB" },
{ "email": "roman.lesyk@itego.cz", "customer": "KB" }
],
"ns": ["jan.zazvonil@itego.cz"]
},
"friday": {
"ds": "roman.lesyk@itego.cz",
"ho": [],
"os": [
{ "email": "jan.zazvonil@itego.cz", "customer": "Pragolab" }
],
"ns": []
}
} }

View File

@@ -168,8 +168,12 @@ $allemails = $schedule.PSObject.Properties | ForEach-Object {
if ($_.Name -in @("monday", "tuesday", "wednesday", "thursday", "friday")) { if ($_.Name -in @("monday", "tuesday", "wednesday", "thursday", "friday")) {
$_.Value.PSObject.Properties | ForEach-Object { $_.Value.PSObject.Properties | ForEach-Object {
if ($_.Name -in @("ds", "ho", "os", "ns")) { if ($_.Name -in @("ds", "ho", "os", "ns")) {
$_.Value | ForEach-Object { if ($_.Name -eq "os") {
$_ # Collect the email field from objects
$_.Value | ForEach-Object { $_.email }
}
else {
$_.Value | ForEach-Object { $_ }
} }
} }
} }
@@ -182,7 +186,7 @@ $allemails = $schedule.PSObject.Properties | ForEach-Object {
$today = (Get-Date).Date $today = (Get-Date).Date
# ---| Specific date |--- # ---| Specific date |---
#$today = Get-Date -Day 2 -Month 12 -Year 2025 -Hour 9 -Minute 00 -Second 00 -Millisecond 00 #$today = Get-Date -Day 1 -Month 1 -Year 2026 -Hour 9 -Minute 00 -Second 00 -Millisecond 00
$daysahead = 14 #How many days ahead to plan $daysahead = 14 #How many days ahead to plan
$timeoff_past_look = -7 #How many days to look into the past for the start of a multi-day time off $timeoff_past_look = -7 #How many days to look into the past for the start of a multi-day time off
@@ -242,7 +246,8 @@ try {
$ds_shift_inplace = $false $ds_shift_inplace = $false
$ho_emails = $schedule.($dayDate.DayOfWeek.ToString().ToLower()).'ho' $ho_emails = $schedule.($dayDate.DayOfWeek.ToString().ToLower()).'ho'
$ds_email = $schedule.($dayDate.DayOfWeek.ToString().ToLower()).'ds' $ds_email = $schedule.($dayDate.DayOfWeek.ToString().ToLower()).'ds'
$os_emails = $schedule.($dayDate.DayOfWeek.ToString().ToLower()).'os' $os_entries = $schedule.($dayDate.DayOfWeek.ToString().ToLower()).'os'
$os_emails = $os_entries | ForEach-Object { $_.email }
$ns_emails = $schedule.($dayDate.DayOfWeek.ToString().ToLower()).'ns' $ns_emails = $schedule.($dayDate.DayOfWeek.ToString().ToLower()).'ns'
# ---| TIME SYNC |--- # ---| TIME SYNC |---
@@ -308,7 +313,6 @@ try {
# ---| DAY SHIFT REPLACEMENT CHECK |--- # ---| DAY SHIFT REPLACEMENT CHECK |---
else { else {
Write-Debug("{0} {1}: looking ahead for a day shift replacement" -f $dayDate, $dayDate.DayOfWeek) Write-Debug("{0} {1}: looking ahead for a day shift replacement" -f $dayDate, $dayDate.DayOfWeek)
#$remainingdays = $timespan.Days - $dayNumber
# ---| FUTURE DAYS LOOP |--- # ---| FUTURE DAYS LOOP |---
for ($daysahead = 1; $daysahead -lt $ds_replace_daysahead; $daysahead++) { for ($daysahead = 1; $daysahead -lt $ds_replace_daysahead; $daysahead++) {
@@ -328,6 +332,7 @@ try {
# ---| THE NEXT IN LINE FOR THE DAY-SHIFT DOESN'T HAVE TIME OFF, NO-SHIFT OR ON-SITE |--- # ---| THE NEXT IN LINE FOR THE DAY-SHIFT DOESN'T HAVE TIME OFF, NO-SHIFT OR ON-SITE |---
if((Invoke-HasTimeOff -UID $futureds_id -timeoff $timeoff_today -mail $futureds_email) -eq $false -and ($futureds_email -notin $os_emails) -and ($futureds_email -notin $ns_emails)) { if((Invoke-HasTimeOff -UID $futureds_id -timeoff $timeoff_today -mail $futureds_email) -eq $false -and ($futureds_email -notin $os_emails) -and ($futureds_email -notin $ns_emails)) {
# ---| UPDATE COLLECTION OF SHIFTS TODAY |---
$shifts_today = [Object[]] $allshifts | Where-Object -Filter { $shifts_today = [Object[]] $allshifts | Where-Object -Filter {
$_.schedulingGroupId -eq $group.Id -and $_.SharedShift.StartDateTime.ToString("yyyy-MM-dd HH:mm") -ge $dateStart.ToString("yyyy-MM-dd HH:mm") -and $_.SharedShift.EndDateTime.ToString("yyyy-MM-dd HH:mm") -le $dateEnd.ToString("yyyy-MM-dd HH:mm") $_.schedulingGroupId -eq $group.Id -and $_.SharedShift.StartDateTime.ToString("yyyy-MM-dd HH:mm") -ge $dateStart.ToString("yyyy-MM-dd HH:mm") -and $_.SharedShift.EndDateTime.ToString("yyyy-MM-dd HH:mm") -le $dateEnd.ToString("yyyy-MM-dd HH:mm")
} }
@@ -397,8 +402,12 @@ try {
# ---| ON-SITE SHIFT CHECK |--- # ---| ON-SITE SHIFT CHECK |---
if($email -in $os_emails) { if($email -in $os_emails) {
$entry = $os_entries | Where-Object { $_.email -eq $email }
$customer = $entry.customer
$os_shift_name = ("On-Site - {0}" -f $customer)
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 "On-site" -StartDate $dateStart -EndDate $dateEnd -color "white" -teamID $team.id -mail $email $newshift = Set-Shift -userId $userId -groupID $group.id -shiftName $os_shift_name -StartDate $dateStart -EndDate $dateEnd -color "white" -teamID $team.id -mail $email
$allshifts += [Object[]] $newshift $allshifts += [Object[]] $newshift
continue continue
} }