-
Notifications
You must be signed in to change notification settings - Fork 0
/
1_procesa_solicitudes_charlas.R
96 lines (65 loc) · 2.67 KB
/
1_procesa_solicitudes_charlas.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
library(formularios11F)
library(dplyr)
# Configuración
config <- leer_config("config/config.json")
ID_SHEET_SOLICITUDES_ORIGINAL <- config$ids_googledrive$solicitudes$original
ID_SHEET_SOLICITUDES_LIMPIO <- config$ids_googledrive$solicitudes$limpio
# Cargar datos
solicitudes_original <- get_solicitudes_charlas_original(file_id=ID_SHEET_SOLICITUDES_ORIGINAL)
solicitudes_limpio <- get_solicitudes_charlas_limpio(file_id=ID_SHEET_SOLICITUDES_LIMPIO)
# Filtrar nuevas solicitudes
if(dim(solicitudes_limpio)[1]!=0){
solicitudes_new <- solicitudes_original %>%
filter(! id %in% solicitudes_limpio$id)
} else solicitudes_new <- solicitudes_original
# Añadir solicitudes corregidas que no tienen coordenadas para que se procesen también
if(dim(solicitudes_limpio)[1]!=0){
solicitudes_corregidas <- solicitudes_limpio %>%
filter(procesado == "CORREGIDO") %>%
filter(is.na(lon) | is.na(lat)) %>%
select(-lon, -lat) %>%
mutate(
fallos = "",
fallos_geolocalizacion = ""
)
}
solicitudes_new <- solicitudes_new %>%
rbind(solicitudes_corregidas) %>%
arrange(timestamp)
solicitudes_limpio <- solicitudes_limpio %>%
filter(! id %in% solicitudes_corregidas$id)
if (nrow(solicitudes_new) == 0) {
stop("No hay nuevas solicitudes de actividad.")
}
# Limpiar nuevas solicitudes
solicitudes_new <- limpia_solicitudes_charlas(solicitudes_new) %>%
mutate(procesado = ifelse(fallos == "", "OK", "FALLO"))
# FIXME tarda mucho en procesar el campo web
# Geolocalizar centros (coordenadas código postal)
solicitudes_new <- geolocaliza_solicitudes_charlas(solicitudes_new) %>%
mutate(
procesado = ifelse(fallos_geolocalizacion == "", procesado,
ifelse(procesado == "FALLO", "FALLO + FALLO GEO", "FALLO GEO"))
)
# Tratar duplicados
solicitudes_limpio <- solicitudes_limpio %>%
rbind(solicitudes_new) %>%
marca_duplicados_solicitudes_charlas() %>%
mutate(
procesado = case_when(
procesado == "CORREGIDO" ~ "CORREGIDO",
duplicado_seguro ~ "DUPLICADO",
duplicado_posible & procesado == "OK" ~ "POSIBLE DUPLICADO (EMAIL)",
duplicado_posible & grepl("FALLO", procesado) ~ paste("POSIBLE DUPLICADO (EMAIL) +", procesado),
TRUE ~ procesado
),
duplicado_posible = NULL,
duplicado_seguro = NULL
)
# Restaurar estado en las charlas corregidas
solicitudes_limpio <- solicitudes_limpio %>%
mutate(
procesado = ifelse(id %in% solicitudes_corregidas$id, "CORREGIDO", procesado)
)
# Subir a Google Drive
upload_solicitudes_charlas_limpio(solicitudes_limpio, file_id=ID_SHEET_SOLICITUDES_LIMPIO)