SLA <- function(open, closed) {
require(timeDate)
#--------------------------------------------------#
#----- Setup
open <- as.POSIXct(open)
closed <- as.POSIXct(closed)
diff_seq_all <- seq(from = open, to = closed, by = 'mins')
diff_seq <- diff_seq_all %>% as_date() %>% unique()
diff_seq <- diff_seq[!diff_seq %in% c(as_date(open), as_date(closed))]
holidays <- holidayLONDON(year = unique(year(diff_seq))) %>% as_date()
#--------------------------------------------------#
#----- Weekdays
week_days <- diff_seq[weekdays(diff_seq) %in% c('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday')]
t_week <- length(week_days)*16*60
#----- Weekends
weekend_days <- diff_seq[weekdays(diff_seq) %in% c('Saturday', 'Sunday')]
t_weekend <- length(weekend_days)*24*60
#----- Public Holidays
holid <- diff_seq[diff_seq %in% holidays]
t_holid <- length(holid)*8
#----- Open Date
open_date <- as_date(open)
open_date_1 <- as.POSIXct(paste(open_date, '09:00', sep = ' '))
open_date_2 <- as.POSIXct(paste(open_date, '17:00', sep = ' '))
open_date_midnight <- as.POSIXct(paste(open_date, '00:00', sep = ' '))
open_seq <- diff_seq_all[as_date(diff_seq_all) == open_date]
# open_seq <- open_seq[open_seq != open_date_midnight]
t_open <- which(
open_seq <= open_date_1 | open_seq >= open_date_2
) %>% length()
if (open_date %in% holidays) {
t_open <- length(open_seq)
}
#----- Closed Date
closed_date <- as_date(closed)
if (closed_date == open_date) {
t_closed <- 0
} else {
closed_date_1 <- as.POSIXct(paste(closed_date, '09:00', sep = ' '), tz = 'UTC')
closed_date_2 <- as.POSIXct(paste(closed_date, '17:00', sep = ' '), tz = 'UTC')
closed_date_midnight <- as.POSIXct(paste(closed_date, '00:00', sep = ' '))
closed_seq <- diff_seq_all[as_date(diff_seq_all) == closed_date]
closed_seq <- closed_seq[closed_seq != closed_date_midnight]
t_closed <- which(
closed_seq <= closed_date_1 | closed_seq >= closed_date_2
) %>% length()
if (closed_date %in% holidays) {
t_closed <- length(closed_seq)
}
}
#--------------------------------------------------#
SLA_Time <- length(diff_seq_all) - sum(t_week, t_weekend, t_holid, t_open, t_closed)
SLA_Time
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.