125 lines
3.1 KiB
Ruby
125 lines
3.1 KiB
Ruby
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
|
|
|
|
FactoryBot.define do
|
|
factory :calendar do
|
|
sequence(:name) { |n| "Escalation Test #{n}" }
|
|
timezone { 'Europe/Berlin' }
|
|
default { true }
|
|
ical_url { nil }
|
|
created_by_id { 1 }
|
|
updated_by_id { 1 }
|
|
|
|
transient do
|
|
public_holiday_date { nil }
|
|
end
|
|
|
|
public_holidays do
|
|
next if public_holiday_date.blank?
|
|
|
|
Array(public_holiday_date).each_with_object({}) do |elem, memo|
|
|
memo[elem.to_s] = { active: true, summary: 'public holiday trait' }
|
|
end
|
|
end
|
|
|
|
business_hours_9_17
|
|
|
|
trait :business_hours_9_17 do
|
|
business_hours do
|
|
{
|
|
mon: {
|
|
active: true,
|
|
timeframes: [['09:00', '17:00']]
|
|
},
|
|
tue: {
|
|
active: true,
|
|
timeframes: [['09:00', '17:00']]
|
|
},
|
|
wed: {
|
|
active: true,
|
|
timeframes: [['09:00', '17:00']]
|
|
},
|
|
thu: {
|
|
active: true,
|
|
timeframes: [['09:00', '17:00']]
|
|
},
|
|
fri: {
|
|
active: true,
|
|
timeframes: [['09:00', '17:00']]
|
|
},
|
|
sat: {
|
|
active: false,
|
|
timeframes: [['09:00', '17:00']]
|
|
},
|
|
sun: {
|
|
active: false,
|
|
timeframes: [['09:00', '17:00']]
|
|
}
|
|
}
|
|
end
|
|
end
|
|
|
|
trait :'24/7' do
|
|
business_hours do
|
|
{
|
|
mon: {
|
|
active: true,
|
|
timeframes: [ ['00:00', '24:00'] ]
|
|
},
|
|
tue: {
|
|
active: true,
|
|
timeframes: [ ['00:00', '24:00'] ]
|
|
},
|
|
wed: {
|
|
active: true,
|
|
timeframes: [ ['00:00', '24:00'] ]
|
|
},
|
|
thu: {
|
|
active: true,
|
|
timeframes: [ ['00:00', '24:00'] ]
|
|
},
|
|
fri: {
|
|
active: true,
|
|
timeframes: [ ['00:00', '24:00'] ]
|
|
},
|
|
sat: {
|
|
active: true,
|
|
timeframes: [ ['00:00', '24:00'] ]
|
|
},
|
|
sun: {
|
|
active: true,
|
|
timeframes: [ ['00:00', '24:00'] ]
|
|
},
|
|
}
|
|
end
|
|
end
|
|
|
|
trait '23:59/7' do
|
|
business_hours_generated
|
|
|
|
timeframe_alldays { ['00:00', '23:59'] }
|
|
end
|
|
|
|
trait :'9-18/7' do
|
|
business_hours_generated
|
|
|
|
timeframe_alldays { ['09:00', '18:00'] }
|
|
end
|
|
|
|
trait :business_hours_generated do
|
|
transient do
|
|
timeframe_alldays { nil }
|
|
timeframe_workdays { timeframe_alldays }
|
|
timeframe_weekends { timeframe_alldays }
|
|
config_workdays { timeframe_workdays ? { active: true, timeframes: [timeframe_workdays] } : {} }
|
|
config_weekends { timeframe_weekends ? { active: true, timeframes: [timeframe_weekends] } : {} }
|
|
end
|
|
|
|
business_hours do
|
|
hash = {}
|
|
%i[mon tue wed thu fri].each_with_object(hash) { |elem, memo| memo[elem] = config_workdays }
|
|
%i[sat sun].each_with_object(hash) { |elem, memo| memo[elem] = config_weekends }
|
|
hash
|
|
end
|
|
end
|
|
end
|
|
end
|