Sto sviluppando un'applicazione che invia preventivi ai clienti via email. Poiché le virgolette sono ottenute da varie risorse (per ogni cliente) finiscono in un unico array che viene poi utilizzato come fonte per l'e-mail.
La funzionalità desiderata è che il client non riceve lo stesso preventivo fino al completamento della rotazione completa, ma possono esserci nuove virgolette che appaiono nell'array poiché non ne controllo l'origine.
per es.
- Il client ha una serie di virgolette
[Foo, Bar, Baz]
. - Algoritmo seleziona in modo casuale
Bar
da inviare, segnalandolo come inviato. - La prossima citazione inviata è prelevata da
[Foo, Baz]
. - Algoritmo seleziona a caso
Foo
da inviare, segnalandolo come inviato. - Una nuova quota diventa disponibile
Qux
. - La prossima citazione inviata è prelevata da
[Baz, Qux]
. - Algoritmo seleziona a caso
Baz
da inviare, segnalandolo come inviato. - La prossima citazione inviata è prelevata da
[Qux]
. - Algoritmo seleziona
Qux
da inviare, segnalandolo come inviato. - La prossima citazione inviata non ha articoli disponibili e i reroll hanno già inviato elementi, riprendendo da
[Foo, Bar, Baz, Qux]
. - Algoritmo seleziona a caso
Foo
da inviare, segnalandolo come inviato.
ecc.
Riesco a immaginare che possa essere eseguito in questo modo, memorizzando i record di SentQuote
già nel database e sottraendoli manualmente dall'array. Nel caso in cui ci siano zero corrispondenze, eseguirò il reroll - invalidando SentQuote
.
Questo mi sembra un po 'ingombrante. Potrebbe esserci un modo migliore? Sto usando PHP 7.2