Abbiamo un sistema che memorizza le informazioni sugli eventi. Esiste un elenco principale di eventi e un elenco secondario, che possono sovrapporsi. Gli elenchi secondari sono combinati con il primario sulla base di 3 regole principali.
- Predefinito - visualizzato solo quando nessun evento è attuale
- Eventi: vengono visualizzati solo quando gli eventi principali sono attuali
- Override - visualizzato al posto degli eventi
Un nuovo sistema di terze parti che dobbiamo integrare significa che dobbiamo ottenere ciascuno dei diversi stati durante i giorni di ciò che gli eventi / eventi secondari dovrebbero mostrare. Ad esempio, da 9 a 5 questi eventi sono aggiornati in base alle tempistiche / regole, ma dopo 5 questi eventi sono aggiornati in base ai tempi e alle regole.
Un semplice esempio
Eventi principali
- Alfa evento | 10:30 - 14:30
- Evento bravo | 14:00 - 16:00
- evento charlie | 18:30 - 20:00
Eventi secondari
- Evento zulu | 00:00 - 23:59 | di default
- Evento yankee | Dalle 09:00 alle 11:00 di default
- Raggi x degli eventi | 09:00 - 11:30 | eventi
- Whisky degli eventi | 19:00 - 19:15 | ignorare
Proprio su questo esempio molto piccolo ciò risulterebbe come i seguenti elenchi che avremmo bisogno di generare
00: 00-09: 00 Evento zulu
09: 00-10: 30 Evento zulu Evento yankee
10: 30-11: 30 Alfa evento Xray eventi
11: 30-14: 00 Evento alpha
14: 00-14: 30 Alfa evento Evento bravo
14: 30-16: 00 Evento bravo
16: 00-18: 30 Evento zulu
18: 30-19: 00 Evento charlie
19: 00-19: 15 Whisper evento
19: 15-20: 00 Evento charlie
20: 00-23: 59 Evento zulu
Questo è un piccolo esempio di produzione di solito ci sono da centinaia a migliaia di eventi per molti giorni. Al momento gli unici endpoint trattano questo problema dinamicamente al volo, questo sistema di terze parti richiede che forniamo i dati in questo modo.
È tutto scritto in php e abbiamo gli elenchi di eventi primari e secondari in un array ciascuno.
Qual è il modo più efficiente per creare questi elenchi?
Abbiamo considerato di fare un controllo minuto per minuto, ma questo sembra orribilmente inefficiente e spero che esista un modo migliore.