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": {
"ds": "jiri.kotlan@itego.cz",
"ho": ["milan.husak@itego.cz"],
"os": ["vaclav.spaninger@itego.cz","roman.lesyk@itego.cz","jan.zazvonil@itego.cz"],
"ns": []
},
"tuesday": {
"ds": "milan.husak@itego.cz",
"ho": ["jiri.kotlan@itego.cz"],
"os": ["vaclav.spaninger@itego.cz","roman.lesyk@itego.cz"],
"ns": ["jan.zazvonil@itego.cz"]
},
"wednesday": {
"ds": "jiri.kotlan@itego.cz",
"ho": ["jiri.kotlan@itego.cz"],
"os": ["vaclav.spaninger@itego.cz","roman.lesyk@itego.cz"],
"ns": ["jan.zazvonil@itego.cz"]
},
"thursday": {
"ds": "milan.husak@itego.cz",
"ho": ["milan.husak@itego.cz"],
"os": ["vaclav.spaninger@itego.cz","roman.lesyk@itego.cz"],
"ns": ["jan.zazvonil@itego.cz"]
},
"friday": {
"ds": "roman.lesyk@itego.cz",
"ho": [],
"os": ["jan.zazvonil@itego.cz"],
"ns": []
}
"monday": {
"ds": "jiri.kotlan@itego.cz",
"ho": ["milan.husak@itego.cz"],
"os": [
{ "email": "vaclav.spaninger@itego.cz", "customer": "KB" },
{ "email": "roman.lesyk@itego.cz", "customer": "KB" },
{ "email": "jan.zazvonil@itego.cz", "customer": "Pragolab" }
],
"ns": []
},
"tuesday": {
"ds": "milan.husak@itego.cz",
"ho": ["jiri.kotlan@itego.cz"],
"os": [
{ "email": "vaclav.spaninger@itego.cz", "customer": "KB" },
{ "email": "roman.lesyk@itego.cz", "customer": "KB" }
],
"ns": ["jan.zazvonil@itego.cz"]
},
"wednesday": {
"ds": "jiri.kotlan@itego.cz",
"ho": ["jiri.kotlan@itego.cz"],
"os": [
{ "email": "vaclav.spaninger@itego.cz", "customer": "KB" },
{ "email": "roman.lesyk@itego.cz", "customer": "KB" }
],
"ns": ["jan.zazvonil@itego.cz"]
},
"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")) {
$_.Value.PSObject.Properties | ForEach-Object {
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
# ---| 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
$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
$ho_emails = $schedule.($dayDate.DayOfWeek.ToString().ToLower()).'ho'
$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'
# ---| TIME SYNC |---
@@ -308,7 +313,6 @@ try {
# ---| DAY SHIFT REPLACEMENT CHECK |---
else {
Write-Debug("{0} {1}: looking ahead for a day shift replacement" -f $dayDate, $dayDate.DayOfWeek)
#$remainingdays = $timespan.Days - $dayNumber
# ---| FUTURE DAYS LOOP |---
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 |---
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 {
$_.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 |---
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) {
$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
continue
}