package br.gov.servicos.orgao; import br.gov.servicos.cms.PaginaEstatica; import br.gov.servicos.servico.ServicoRepository; import br.gov.servicos.v3.schema.OrgaoXML; 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.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import java.util.HashMap; import java.util.Map; import static java.util.Comparator.comparing; import static java.util.stream.Collectors.toList; import static lombok.AccessLevel.PRIVATE; @Slf4j @Controller @FieldDefaults(level = PRIVATE, makeFinal = true) public class OrgaoController { OrgaoRepository orgaos; OrgaoRepositoryUtil orgaoUtils; ServicoRepository servicos; @Autowired OrgaoController(OrgaoRepository orgaos, OrgaoRepositoryUtil orgaoUtils, ServicoRepository servicos) { this.orgaos = orgaos; this.orgaoUtils = orgaoUtils; this.servicos = servicos; } @RequestMapping("/orgaos") ModelAndView orgaos() { return new ModelAndView("orgaos", "orgaos", orgaoUtils.findAll()); } @RequestMapping("/orgao/{id}") public ModelAndView orgao(@PathVariable("id") OrgaoXML orgaoXML) { Map<String, Object> model = new HashMap<>(); model.put("termo", orgaoXML.getId()); model.put("conteudo", orgaoXML); model.put("resultados", servicos.findByOrgao(orgaoXML) .stream() .map(PaginaEstatica::fromServico) .sorted(comparing(PaginaEstatica::getId)) .collect(toList())); return new ModelAndView("orgao", model); } }