class SlackSmartBot
def see_vacations(user, dest, from_user: '', add_stats: true, year: '')
save_stats(__method__) if add_stats
get_vacations()
team_id_user = "#{user.team_id}_#{user.name}"
from_user_name = ''
if from_user.empty?
from_user_name = team_id_user
else
user_info = find_user(from_user)
from_user_name = "#{user_info.team_id}_#{user_info.name}"
end
if @vacations.key?(from_user_name) and @vacations[from_user_name][:public_holidays].to_s != ""
country_region = @vacations[from_user_name][:public_holidays].downcase
elsif config[:public_holidays].key?(:default_calendar)
country_region = config[:public_holidays][:default_calendar].downcase
else
country_region = ''
end
local_day_time = local_time(country_region)
if local_day_time.nil?
today = Date.today
else
today = local_day_time.to_date
end
year = today.year.to_s if year.to_s == ''
from_user = '' if from_user_name == team_id_user
if !@vacations.key?(from_user_name) or !@vacations[from_user_name].key?(:periods) or @vacations[from_user_name].periods.empty?
if from_user.empty?
display_calendar(from_user_name, year) if dest[0] == 'D'
respond "You didn't add any time off yet. Use `add vacation from YYYY/MM/DD to YYYY/MM/DD`"
else
respond "No time off added yet for <@#{from_user}>"
end
else
messages = []
messages << "*Time off <@#{from_user}> #{year}*" if !from_user.empty?
display_calendar(from_user_name, year) if from_user_name == team_id_user and dest[0] == 'D'
today_txt = today.strftime("%Y/%m/%d")
current_added = false
past_added = false
@vacations[from_user_name].periods.sort_by { |v| v[:from]}.reverse.each do |vac|
if !current_added and vac.to >= today_txt
messages << "*Current and future periods*"
current_added = true
end
if !past_added and vac.to < today_txt and from_user.empty? and vac.to[0..3] == year
if dest[0]=='D'
messages << "\n*Past periods #{year}*"
past_added = true
else
messages << "To see past periods call me from a DM"
break
end
end
unless !from_user.empty? and vac.to < today_txt
if vac.to[0..3] == year
if !from_user.empty?
icon = ":beach_with_umbrella:"
elsif vac.type == 'vacation'
icon = ':palm_tree:'
elsif vac.type == 'sick'
icon = ':face_with_thermometer:'
elsif vac.type == 'sick child'
icon = ':baby:'
end
if vac.from == vac.to
messages << " #{icon} #{vac.from} ##{vac.vacation_id}"
else
messages << " #{icon} #{vac.from} -> #{vac.to} ##{vac.vacation_id}"
end
end
end
end
if !past_added and !current_added and dest[0]=='D'
if from_user.empty?
messages << "No time off added yet for #{year}"
else
messages << "Not possible to see past periods for another user"
end
elsif !past_added and dest[0]=='D' and !from_user.empty? and from_user_name != team_id_user
messages << "Not possible to see past periods for another user"
end
respond messages.join("\n")
end
end
end