|
require 'savon' |
|
require 'date' |
|
|
|
$employees = { |
|
"user.name@email.com" => [], |
|
} |
|
|
|
$employeesShort = { |
|
"user.name@email.com" => "UN", |
|
} |
|
|
|
teamseer = Savon.client(wsdl: 'https://www.teamseer.com/services/soap/coreapi/1_0_1/teamseer_core_api.wsdl' ) |
|
authResponse = teamseer.call(:authenticate, message: { |
|
companyId: "COMPANYID", |
|
companyKey: "COMPANYKEY", |
|
apiVersion: "1_0_1" |
|
}) |
|
auth_cookies = authResponse.http.cookies |
|
|
|
SCHEDULER.every '10m' do |
|
firstWeekStart = (Date.today - (Date.today.wday - 1) % 7).iso8601 |
|
firstWeekEnd = (Date.today - (Date.today.wday) % 7 + 5).iso8601 |
|
secondWeekStart = (Date.today - (Date.today.wday - 1) % 7 + 7).iso8601 |
|
secondWeekEnd = (Date.today - (Date.today.wday) % 7 + 12).iso8601 |
|
|
|
$employees.each { |
|
|employee, dates| |
|
week1 = teamseer.call(:get_records_for, message: { |
|
userIdentifier: employee, |
|
fromDate: firstWeekStart, |
|
toDate: firstWeekEnd |
|
}, cookies: auth_cookies) |
|
|
|
week2 = teamseer.call(:get_records_for, message: { |
|
userIdentifier: employee, |
|
fromDate: secondWeekStart, |
|
toDate: secondWeekEnd |
|
}, cookies: auth_cookies) |
|
|
|
# if employee has no vacation |
|
if week1.body[:get_records_for_response][:get_records_for_return][:item].nil? == false |
|
# one Time Record |
|
if week1.body[:get_records_for_response][:get_records_for_return][:item].length == 8 |
|
dates.push(week1.body[:get_records_for_response][:get_records_for_return][:item][:date]) |
|
else |
|
# multiple Time Records |
|
week1.body[:get_records_for_response][:get_records_for_return][:item].each { |
|
|record| |
|
dates.push(record[:date]) |
|
} |
|
end |
|
end |
|
|
|
# if employee has no vacation |
|
if week2.body[:get_records_for_response][:get_records_for_return][:item].nil? == false |
|
# one Time Record |
|
if week2.body[:get_records_for_response][:get_records_for_return][:item].length == 8 |
|
dates.push(week2.body[:get_records_for_response][:get_records_for_return][:item][:date]) |
|
else |
|
# multiple Time Records |
|
week2.body[:get_records_for_response][:get_records_for_return][:item].each { |
|
|record| |
|
dates.push(record[:date]) |
|
} |
|
end |
|
end |
|
} |
|
|
|
$dataDays = { |
|
"dataMon1" => "", |
|
"dataTue1" => "", |
|
"dataWed1" => "", |
|
"dataThu1" => "", |
|
"dataFri1" => "", |
|
"dataMon2" => "", |
|
"dataTue2" => "", |
|
"dataWed2" => "", |
|
"dataThu2" => "", |
|
"dataFri2" => "", |
|
} |
|
|
|
$employees.each { |
|
|employee, dates| |
|
|
|
dates.each{ |
|
|date| |
|
if (date < Date.parse(secondWeekStart)) |
|
if date.monday? && (($dataDays["dataMon1"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataMon1"] += $employeesShort[employee] + " " |
|
elsif date.tuesday? && (($dataDays["dataTue1"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataTue1"] += $employeesShort[employee] + " " |
|
elsif date.wednesday? && (($dataDays["dataWed1"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataWed1"] += $employeesShort[employee] + " " |
|
elsif date.thursday? && (($dataDays["dataThu1"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataThu1"] += $employeesShort[employee] + " " |
|
elsif date.friday? && (($dataDays["dataFri1"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataFri1"] += $employeesShort[employee] + " " |
|
end |
|
elsif |
|
if date.monday? && (($dataDays["dataMon2"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataMon2"] += $employeesShort[employee] + " " |
|
elsif date.tuesday? && (($dataDays["dataTue2"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataTue2"] += $employeesShort[employee] + " " |
|
elsif date.wednesday? && (($dataDays["dataWed2"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataWed2"] += $employeesShort[employee] + " " |
|
elsif date.thursday? && (($dataDays["dataThu2"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataThu2"] += $employeesShort[employee] + " " |
|
elsif date.friday? && (($dataDays["dataFri2"].include? $employeesShort[employee]) == false) |
|
$dataDays["dataFri2"] += $employeesShort[employee] + " " |
|
end |
|
end |
|
} |
|
} |
|
|
|
send_event("teamseer", { |
|
dataMon1: $dataDays["dataMon1"], |
|
dataTue1: $dataDays["dataTue1"], |
|
dataWed1: $dataDays["dataWed1"], |
|
dataThu1: $dataDays["dataThu1"], |
|
dataFri1: $dataDays["dataFri1"], |
|
dataMon2: $dataDays["dataMon2"], |
|
dataTue2: $dataDays["dataTue2"], |
|
dataWed2: $dataDays["dataWed2"], |
|
dataThu2: $dataDays["dataThu2"], |
|
dataFri2: $dataDays["dataFri2"] |
|
}) |
|
$dataDays.clear |
|
end |