Purpose ###
To run a task once or repeatedly at a specified time.
Scheduler --- Get pending emails Send()
Email --- Email subject content event_id schedule
Schedule --- frequency send_at
System Defined events --- event_id event_name event_label enabled
- Use Case:
user accepts offer
- Scheduler:
fire_event( job_offer_accepted, data )
- process_event_notifications
email[] = getEmailsByEvent( job_offer_accepted )
email->parseTemplate( $data )
queueEmails(email[])
execute()
Email can be attached to system events
Emitter --- addListener('event.name', $listener) emitter->emit($event)
Event --- --- name data = []