On-site shift name now includes the customer
This commit is contained in:
75
config.json
75
config.json
@@ -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": []
|
||||
}
|
||||
}
|
||||
21
shifts.ps1
21
shifts.ps1
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user