package br.gov.servicos.editor.frontend;

import br.gov.servicos.editor.servicos.*;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;

import java.util.ArrayList;

import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;

@Controller
public class IndexController {

    @RequestMapping("/")
    public ModelAndView index() {
        return new ModelAndView("index", "servico", new Servico());
    }

    @RequestMapping("/exemplo")
    public ModelAndView exemplo() {
        return new ModelAndView("index", "servico", new Servico()
                .withNome("Carteira Nacional de Habilitação (CNH)")
                .withNomesPopulares("carta de motorista, carteira, carta, cnh, habilitação")
                .withDescricao("A CNH blah blah blah...")
                .withPalavrasChave("carta de motorista, carteira, carta, cnh, habilitação")
                .withAreasDeInteresse(new ArrayList<>(asList("Comércio e Serviços", "Comunicações")))
                .withSegmentosDaSociedade(new ArrayList<>(asList("Cidadãos", "Empresas")))
                .withEventosDaLinhaDaVida(new ArrayList<>(asList("Documentos e certidões", "Contas e Impostos")))
                .withLegislacoes(new ArrayList<>(asList(
                        "http://www.lexml.gov.br/urn/urn:lex:br:federal:decreto:2009-08-11;6932",
                        "http://www.lexml.gov.br/urn/urn:lex:br:federal:lei:1993-06-21;8666")))
                .withSolicitantes(new ArrayList<>(singletonList("Cidadãos maiores de 18 anos")))
                .withTempoEstimado(new TempoEstimado()
                                .withTipo("entre")
                                .withMinimo("15")
                                .withTipoMinimo("dias")
                                .withMaximo("20")
                                .withTipoMaximo("dias")
                                .withExcecoes("Para solicitantes dos tipos C, D e E, o processo pode levar mais tempo.")
                )
                .withEtapas(singletonList(new Etapa()
                                .withTitulo("Agendar prova teórica do CFC")
                                .withDescricao("A prova teórica do CFC deve ser agendada nas...")
                                .withDocumentos(asList("RG", "CPF", "Termo de conclusão de curso no CFC"))
                                .withCustos(singletonList(new Custo().withDescricao("Taxa de emissão").withValor("78,50")))
                                .withCanaisDePrestacao(asList(
                                        new CanalDePrestacao().withDescricao("Posto de atendimento").withPreferencial(true).withTipo("Presencial"),
                                        new CanalDePrestacao().withDescricao("555").withPreferencial(false).withTipo("Telefone")
                                ))
                ))

                .withOrgao(new Orgao().withId("ministerio-da-saude-ms"))
                .withGratuito(true)
                .withSituacao("Sim: serviço parcialmente eletrônico (partes presenciais, via telefone ou em papel)")
        );
    }

    @RequestMapping(value = "/salvar", method = RequestMethod.POST)
    RedirectView salvar(@ModelAttribute("servico") Servico servico, BindingResult result) {
        System.out.println("servico = " + servico);
        return new RedirectView("/");
    }

}

@@ -484,37 +484,8 @@
 w;%0A%0A
-import java.util.ArrayList;%0A%0A
 impo
@@ -1232,32 +1232,16 @@
 teresse(
-new ArrayList%3C%3E(
 asList(%22
@@ -1274,25 +1274,24 @@
 unica%C3%A7%C3%B5es%22))
-)
 %0A           
@@ -1321,32 +1321,16 @@
 ciedade(
-new ArrayList%3C%3E(
 asList(%22
@@ -1348,25 +1348,24 @@
 %22Empresas%22))
-)
 %0A           
@@ -1395,32 +1395,16 @@
 aDaVida(
-new ArrayList%3C%3E(
 asList(%22
@@ -1445,25 +1445,24 @@
  Impostos%22))
-)
 %0A           
@@ -1483,32 +1483,16 @@
 slacoes(
-new ArrayList%3C%3E(
 asList(%0A
@@ -1683,17 +1683,16 @@
 ;8666%22))
-)
 %0A       
@@ -1722,24 +1722,8 @@
 tes(
-new ArrayList%3C%3E(
 sing
@@ -1763,17 +1763,16 @@
  anos%22))
-)
 %0A       

Remove new ArrayList<>(asList()) - #28