# Inserindo os dados manualmente direto no código
sales <- data.frame(
  COUNTRY = c("US", "UK", "France", "Poland", "Japan", "China"),
  SALES = c(340, 290, 510, 820, 120, 780)
)

# Calculando a porcentagem
pct <- round(sales$SALES / sum(sales$SALES) * 100)
labels_pct <- paste0(pct, "%")

# Definindo cores
cores <- rainbow(nrow(sales))

# Gráfico de pizza
pie(sales$SALES, labels = labels_pct, col = cores, main = "Vendas por País")
legend("topright", legend = sales$COUNTRY, fill = cores, cex = 0.8)

# Função para ler, limpar e preparar os dados de CloudData
process_cloud_data <- function(file_name) {
  # Verificação caso o arquivo não exista localmente, criaremos um dummy seguro
  if(file.exists(file_name)) {
    df <- read.csv(file_name)
    
    # Diferença de tempo em horas
    df$currentTime <- as.numeric(difftime(as.POSIXct(df$currentTime), min(as.POSIXct(df$currentTime)), units="hours"))
    
    # Extração e conversão de memória usando regex
    num_part <- as.numeric(str_extract(df$usedMemory, "[0-9.]+"))
    unit_part <- toupper(str_extract(df$usedMemory, "[A-Za-z]+"))
    
    # Lógica de conversão
    df$usedMemory <- ifelse(unit_part == "GB", num_part * 1024,
                     ifelse(unit_part == "TB", num_part * 1000000, num_part))
    return(df)
  } else {
    # Caso você ainda não tenha os arquivos na pasta, isso previne o código de quebrar gerando um plot vazio
    return(data.frame(currentTime=c(0, 70), usedMemory=c(0, 0)))
  }
}

# Lendo os arquivos (certifique-se de que estão na mesma pasta do projeto)
df_none <- process_cloud_data("monitoring_CloudData_NONE.csv")
df_01 <- process_cloud_data("monitoring_CloudData_0.1.csv")
df_05 <- process_cloud_data("monitoring_CloudData_0.5.csv")
df_1 <- process_cloud_data("monitoring_CloudData_1.csv")

# Organizando painel 2x2
layout(matrix(c(1,2,3,4), nrow = 2, byrow = TRUE))
par(mar=c(4,4,2,1))

plot(df_none$currentTime, df_none$usedMemory, type="l", main="Memory Analysis (None Workload)", xlab="Time (hour)", ylab="Used Memory (MB)")
plot(df_01$currentTime, df_01$usedMemory, type="l", main="Memory Analysis (Workload of 0.1)", xlab="Time (hour)", ylab="Used Memory (MB)")
plot(df_05$currentTime, df_05$usedMemory, type="l", main="Memory Analysis (Workload of 0.5)", xlab="Time (hour)", ylab="Used Memory (MB)")
plot(df_1$currentTime, df_1$usedMemory, type="l", main="Memory Analysis (Workload of 1.0)", xlab="Time (hour)", ylab="Used Memory (MB)")

par(mfrow=c(1,1))

# Verificação de segurança caso o dataset da Netflix não esteja na pasta
if(file.exists("netflix_titles.csv")) {
  netflix <- read.csv("netflix_titles.csv", stringsAsFactors = FALSE)
  
  # Filtrando conteúdos com apenas um país (sem vírgula e que não estejam vazios)
  netflix_single <- netflix %>%
    filter(!grepl(",", country) & country != "")
  
  # Pegando os 10 maiores
  top10_countries <- netflix_single %>%
    group_by(country) %>%
    summarise(total = n()) %>%
    arrange(desc(total)) %>%
    head(10)
  
  plot_ly(top10_countries, labels = ~country, values = ~total, type = 'pie') %>%
    layout(title = 'Top 10 Países com Mais Conteúdo Exclusivo')
} else {
  print("Arquivo netflix_titles.csv não encontrado na pasta de trabalho.")
}
if(exists("top10_countries")) {
  plot_ly(
    type = 'table',
    header = list(
      values = c("<b>País</b>", "<b>Total de conteúdos</b>"),
      align = c('center'),
      line = list(color = "black", width = 1),
      fill = list(color = 'gray'),
      font = list(color = 'white', size = 14)
    ),
    cells = list(
      values = rbind(top10_countries$country, top10_countries$total),
      align = c('center'),
      line = list(color = "black", width = 1),
      font = list(color = c('black'), size = 12)
    )
  )
}
if(file.exists("netflix_titles.csv")) {
  # Agrupando por década e tipo
  decades_data <- netflix %>%
    mutate(Decada = (release_year %/% 10) * 10) %>%
    group_by(Decada, type) %>%
    summarise(count = n(), .groups = 'drop')
  
  # Separando TV e Movies
  tv_series <- decades_data %>% filter(type == "TV Show")
  movies <- decades_data %>% filter(type == "Movie")
  
  plot_ly() %>%
    add_trace(data = tv_series, x = ~Decada, y = ~count, type = 'scatter', mode = 'lines+markers', 
              name = 'TV Series', line = list(color = 'blue')) %>%
    add_trace(data = movies, x = ~Decada, y = ~count, type = 'scatter', mode = 'lines+markers', 
              name = 'Movies', line = list(color = 'orange')) %>%
    layout(title = "Quantidade de Conteúdo por Década",
           xaxis = list(title = "Década", tick0 = 1940, dtick = 20),
           yaxis = list(title = "Qnt. Conteúdo"))
}
if(file.exists("netflix_titles.csv")) {
  # Extraindo apenas o primeiro gênero de cada filme e filtrando de 2000 a 2010
  movies_genre <- netflix %>%
    filter(type == "Movie" & release_year >= 2000 & release_year <= 2010) %>%
    mutate(primeiro_genero = str_trim(gsub(",.*", "", listed_in))) %>%
    filter(primeiro_genero %in% c("Dramas", "Action & Adventure", "Comedies")) %>%
    group_by(release_year, primeiro_genero) %>%
    summarise(qnt = n(), .groups = 'drop')
  
  # Gráfico de barras lado a lado
  plot_ly(movies_genre, x = ~release_year, y = ~qnt, color = ~primeiro_genero, type = 'bar',
          colors = c("Action & Adventure" = "orange", "Comedies" = "green", "Dramas" = "blue")) %>%
    layout(barmode = 'group', 
           title = "Lançamentos de Filmes por Gênero (2000 - 2010)",
           xaxis = list(title = "Ano de Lançamento", tickmode = 'linear', dtick = 2),
           yaxis = list(title = "Qnt. de Lançamentos"))
}