/**
  *
  * @param array $users array<UserModel>
  * @param ProjectSettingsModel $project
  * @param string $subject
  * @param string $smsTemplate
  * @param string $emailTemplate
  * @param string $htmlEmailTemplate
  * @param DeliveryInterface|null $delivery
  * @return string
  */
 public static function communicateToUsers($users, $project, $subject, $smsTemplate, $emailTemplate, $htmlEmailTemplate = '', DeliveryInterface $delivery = null)
 {
     // store message in database
     $messageModel = new MessageModel($project);
     $messageModel->subject = $subject;
     $messageModel->content = $emailTemplate;
     $messageId = $messageModel->write();
     foreach ($users as $user) {
         self::communicateToUser($user, $project, $subject, $smsTemplate, $emailTemplate, $htmlEmailTemplate, $delivery);
         $unreadModel = new UnreadMessageModel($user->id->asString(), $project->id->asString());
         $unreadModel->markUnread($messageId);
         $unreadModel->write();
     }
     SmsQueue::processQueue($project->databaseName());
     return $messageId;
 }