package br.gov.servicos.orgao; import br.gov.servicos.servico.ServicoRepository; import br.gov.servicos.v3.schema.OrgaoXML; import br.gov.servicos.v3.schema.ServicoXML; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; import lombok.experimental.Wither; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; import static java.util.stream.Collectors.toList; @Controller @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) public class CartasEmPdfController { ServicoRepository servicos; @Autowired public CartasEmPdfController(ServicoRepository servicos) { this.servicos = servicos; } @RequestMapping(value = "/carta/{id}", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET) @ResponseBody public Carta carta(@PathVariable("id") OrgaoXML orgaoXML) { List<String> servicos = this.servicos.findByOrgao(orgaoXML) .stream() .map(ServicoXML::getXml) .collect(toList()); return new Carta() .withXmlOrgao(orgaoXML.getXml()) .withXmlServicos(servicos); } @Wither @Getter @AllArgsConstructor @NoArgsConstructor public class Carta { String xmlOrgao; List<String> xmlServicos; } }