package controllers; import common.contexts.UserContext; import common.controllers.ControllerDependency; import common.controllers.SunriseController; import common.pages.LinkData; import play.i18n.Lang; import play.libs.F; import play.mvc.Result; import productcatalog.pages.CategoryLinkDataFactory; import productcatalog.pages.HomePageContent; import javax.inject.Inject; import javax.inject.Singleton; import java.util.Locale; /** * Controller for main web pages like index, imprint and contact. */ @Singleton public final class HomeController extends SunriseController { @Inject public HomeController(final ControllerDependency controllerDependency) { super(controllerDependency); } public F.Promise<Result> show() { final String languageTag = request().acceptLanguages().stream().findFirst().map(Lang::code).orElse("en"); return F.Promise.pure(redirect(reverseRouter().home(languageTag))); } public F.Promise<Result> show(final String languageTag) { return F.Promise.pure(getResult(userContext(languageTag))); } private Result getResult(final UserContext userContext) { final CategoryLinkDataFactory linkFactory = CategoryLinkDataFactory.of(reverseRouter(), userContext.locale()); final LinkData menLink = linkFactory.create(categories().findBySlug(Locale.ENGLISH, "men").get()); final LinkData womenLink = linkFactory.create(categories().findBySlug(Locale.ENGLISH, "women").get()); final HomePageContent content = new HomePageContent(womenLink, menLink); return ok(templateService().renderToHtml("home", pageData(userContext, content))); } }