def resolveContactsForChannels()

in common/src/main/scala/com/gu/anghammarad/common/Contacts.scala [115:138]


  def resolveContactsForChannels(contacts: List[Contact], requestedChannel: RequestedChannel): Try[List[(Channel, Contact)]] = {
    val emails = contacts.collect {
      case ea: EmailAddress => Email -> ea
    }
    val webhooks = contacts.collect {
      case hr: HangoutsRoom => HangoutsChat -> hr
    }
    val resolved = requestedChannel match {
      case Email =>
        emails
      case HangoutsChat =>
        webhooks
      case All =>
        emails ++ webhooks
      case Preferred(Email) =>
        if (emails.nonEmpty) emails
        else webhooks
      case Preferred(HangoutsChat) =>
        if (webhooks.nonEmpty) webhooks
        else emails
    }
    if (resolved.isEmpty) Fail(s"Could not find any contacts for requested channel, $requestedChannel")
    else Success(resolved)
  }