Come implementare un'e-mail di Daily Recap dei record del database modificata il giorno precedente inviata agli utenti iscritti come fa Basecamp?

0

Sto creando un modulo di gestione dei progetti per SugarCRM. Consiste in un " Progetto " che contiene informazioni sul progetto come Nome, descrizione, date di inizio e di completamento, nome del creatore, stato (aperto, in corso, annullato, completato), priorità (alta, bassa, ecc ...), tipo (php, javascript, magento, sugarCRM, SEO, ecc ...).

Un progetto ha anche " Attività di progetto " in cui un progetto può avere tutte le attività che desideri. Un'attività di progetto ha molti degli stessi campi DB di un progetto con alcune altre funzionalità come l'ordinamento.

Infine, un progetto ha " Documenti di progetto " che ti permettono di caricare immagini, file di testo, qualsiasi tipo di file realmente correlato al progetto.

Nel database del progetto, ho un campo chiamato " subscribers " che è un campo di testo e memorizzo un elenco separato da virgole di ID utente per gli utenti che sono iscritti ad aggiornamenti / email relativi a questo progetto. Quindi il campo del sottoscrittore è su base Per Progetto. Un utente potrebbe essere iscritto al Progetto 1 ma non al Progetto 2.

Il ragionamento che sta alla base del campo Database iscritti ai Progetti, è che vorrei inviare un'email giornaliera a tutti gli utenti iscritti che mostrano i Progetti a cui sono iscritti che sono stati modificati il giorno prima. Quindi, se sono iscritto a " Progetto 1 " e vengono modificati i campi del database, sono stati aggiunti nuovi documenti o aggiunte nuove attività, completate o modificate, quindi ricevo un'email la mattina seguente che mostra tutti quei dati in una email di Daily Recap.

La mia idea per questo viene dall'utilizzo della popolare app / servizio di gestione dei progetti Basecamp che ogni mattina invia una ricapitolazione quotidiana di tutti i progetti e le attività del giorno precedente a cui sei iscritto.

Sto cercando feedback su come implementare al meglio questo sistema. Ho tutto codificato e funzionante fino alla parte di abbonamento in cui gli ID utente sono salvati nel database del progetto. Quindi fondamentalmente avrò un cron o simile che viene eseguito quotidianamente per inviare le email a tutti gli iscritti.

Credo che cerco l'approccio migliore per determinare quali progetti e quali dovrebbero essere contenuti in queste e-mail. Nel mio database Attività di progetto, ho un campo Data / ora modificato in modo da poter determinare quando gli elementi sono stati modificati, lo stesso sulla tabella Progetti ...

Quindi penso che posso solo interrogare le mie 3 tabelle del database e creare un elenco basato su elementi modificati nel passato.

Che cosa fa Basecamp, invece di inviare una e-mail separata allo stesso utente per ogni progetto a cui sono iscritti, riceve 1 email. Per fare questo, dovrei scorrere il mio elenco di utenti anziché il mio elenco di progetti. Su ciascun utente, dovrei quindi interrogare tutti i progetti per trovare i progetti a cui l'utente è iscritto, quindi eseguire le mie query sui progetti appropriati. Tieni presente che non posso semplicemente archiviare un elenco di progetti a cui ogni utente è iscritto nella tabella utente in quanto questo è un modulo.

Spero solo di ottenere un feedback, idee, suggerimenti su miglioramenti a questa idea o un modo migliore o se quello che ho delineato suona abbastanza bene?

posta JasonDavis 23.09.2014 - 05:47
fonte

1 risposta

-1

È possibile interrogare quali progetti o attività sono stati modificati? - > Sì Quindi eseguirò l'iterazione su tutti questi elementi, estrarrò gli utenti e costruirò una tabella inmemoria, dove per ogni utente vengono registrati gli elementi modificati. Poi faccio scorrere gli utenti, ottengo gli elementi che voglio aggiungere alla posta, costruisco la posta e la invio.

    
risposta data 23.09.2014 - 07:32
fonte

Leggi altre domande sui tag