package br.gov.servicos.frontend;
import br.gov.servicos.destaques.AreasDeInteresseEmDestaque;
import br.gov.servicos.destaques.ServicosEmDestaque;
import br.gov.servicos.orgao.OrgaoRepositoryUtil;
import br.gov.servicos.v3.schema.OrgaoXML;
import com.github.slugify.Slugify;
import lombok.experimental.FieldDefaults;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;
import java.io.IOException;
import static lombok.AccessLevel.PRIVATE;
@Slf4j
@Controller
@FieldDefaults(level = PRIVATE, makeFinal = true)
class IndexController {
private static final int SERVICOS_DESTACADOS = 8;
ServicosEmDestaque destaques;
AreasDeInteresseEmDestaque areasDestaque;
OrgaoRepositoryUtil orgaos;
Slugify slugify;
@Autowired
IndexController(ServicosEmDestaque servicosEmDestaque, AreasDeInteresseEmDestaque areasDestaque, OrgaoRepositoryUtil orgaos, Slugify slugify) {
this.destaques = servicosEmDestaque;
this.areasDestaque = areasDestaque;
this.orgaos = orgaos;
this.slugify = slugify;
}
@RequestMapping(value = "/", params = "orgao")
ModelAndView redirectParaOrgao(@RequestParam("orgao") String url) throws IOException {
OrgaoXML orgao = orgaos.obterOrgao(new OrgaoXML()
.withId(slugify.slugify(url))
.withUrl(url));
if (orgao == null)
return index();
return new ModelAndView(new RedirectView("/orgao/" + orgao.getId()));
}
@RequestMapping("/")
ModelAndView index() {
ModelAndView modelAndView = new ModelAndView("index");
modelAndView.addObject("destaques", destaques.servicos(SERVICOS_DESTACADOS));
modelAndView.addObject("areasDestaque", areasDestaque.areasDeInteresse());
return modelAndView;
}
}