/**
  * @param TodoAssigneeWasReminded $event
  */
 public function __invoke(TodoAssigneeWasReminded $event)
 {
     $user = $this->userFinder->findById($event->userId()->toString());
     $todo = $this->todoFinder->findById($event->todoId()->toString());
     $mail = new Mail\Message();
     $mail->setBody("Hello {$user->name}. This a reminder for '{$todo->text}'. Don't be lazy!");
     $mail->setFrom('*****@*****.**', 'Proophessor-do');
     $mail->addTo($user->email, $user->name);
     $mail->setSubject('Proophessor-do Todo Reminder');
     $this->mailer->send($mail);
 }
 /**
  * @param TodoWasMarkedAsExpired $event
  * @return void
  */
 public function __invoke(TodoWasMarkedAsExpired $event)
 {
     $todo = $this->todoFinder->findById($event->todoId()->toString());
     $user = $this->userFinder->findById($todo->assignee_id);
     $message = sprintf('Hi %s! Just a heads up: your todo `%s` has expired on %s.', $user->name, $todo->text, $todo->deadline);
     $mail = new Mail\Message();
     $mail->setBody($message);
     $mail->setEncoding('utf-8');
     $mail->setFrom('*****@*****.**', 'Proophessor-do');
     $mail->addTo($user->email, $user->name);
     $mail->setSubject('Proophessor-do Todo expired');
     $this->mailer->send($mail);
 }