def makeContainer()

in sport/app/football/containers/FixturesAndResults.scala [45:140]


  def makeContainer(
      tagId: String,
  )(implicit request: RequestHeader, context: ApplicationContext): Option[FaciaContainer] = {

    (for {
      teamId <- TeamMap.findTeamIdByUrlName(tagId)
      teamName <- teamNameBuilder.withId(teamId)
    } yield {
      val relevantMatches = competitions.sortedMatches
        .filter({ theMatch =>
          theMatch.homeTeam.id == teamId || theMatch.awayTeam.id == teamId
        })
        .toList

      val container = FixedContainers.footballTeamFixtures

      val fixtureExists = relevantMatches.exists(_.isFixture)
      val resultExists = relevantMatches.exists(_.isResult)
      val leagueTableExists = competitions.mostPertinentCompetitionForTeam(teamId).isDefined
      val cssClasses = Seq("facia-snap--football", "facia-snap-embed")
      val missingComponentClasses = Seq("football-component-missing")

      val maybeCompetitionAndGroup = competitionAndGroupFinder.bestForTeam(teamId).filter(_ => leagueTableExists)

      val now = LocalDate.now(Edition.defaultEdition.timezoneId)
      val fixturesComponent = if (fixtureExists) {
        Some(
          matchesComponent(
            TeamFixturesList(now, competitions.competitions, teamId, tagId, 2),
            Some(s"Show more $teamName fixtures", s"/football/$tagId/fixtures"),
          ),
        )
      } else None
      val resultsComponent = if (resultExists) {
        Some(
          matchesComponent(
            TeamResultsList(now, competitions.competitions, teamId),
            Some(s"Show more $teamName results", s"/football/$tagId/results"),
          ),
        )
      } else None

      if (Seq(maybeCompetitionAndGroup, fixturesComponent, resultsComponent).flatten.nonEmpty) {
        val blobs = Seq(
          Some(
            HtmlAndClasses(
              1,
              fixturesComponent getOrElse Html("No upcoming fixtures"),
              if (fixturesComponent.isDefined) cssClasses else missingComponentClasses,
            ),
          ),
          Some(
            HtmlAndClasses(
              2,
              resultsComponent getOrElse Html("No recent results"),
              if (resultsComponent.isDefined) cssClasses else missingComponentClasses,
            ),
          ),
          maybeCompetitionAndGroup map { case CompetitionAndGroup(competition, group) =>
            HtmlAndClasses(
              3,
              tablesComponent(competition, group, competition.fullName, highlightTeamId = Some(teamId), false),
              cssClasses,
            )
          },
        ).flatten

        val layout = ContainerLayout.forHtmlBlobs(container.slices, blobs)

        val faciaContainer = FaciaContainer(
          index = 1,
          dataId = "fixtures-and-results",
          displayName = Some("Fixtures and results"),
          href = None,
          componentId = Some("fixtures-and-results"),
          container = Fixed(container),
          collectionEssentials = CollectionEssentials.empty,
          containerLayout = Some(layout),
          showDateHeader = false,
          showLatestUpdate = false,
          commercialOptions = ContainerCommercialOptions(omitMPU = false, adFree = request.isAdFree),
          customHeader = None,
          customClasses = Some(Seq("fc-container--tag")),
          hideToggle = true,
          showTimestamps = false,
          dateLinkPath = None,
          useShowMore = false,
          hasShowMoreEnabled = true,
          isThrasher = false,
          targetedTerritory = None,
        )
        Some(faciaContainer)
      } else None

    }).flatten
  }