package br.com.elotech.social;

import br.com.elotech.social.model.filters.*;
import br.com.elotech.social.service.SocialService;
import br.com.elotech.social.service.impl.SocialServiceImpl;
import br.com.elotech.util.Util;

public class SocialController implements Social {

  private SocialService service = new SocialServiceImpl();

  public void gerarRelatorio(String relatorio, Object filter) throws Exception {
    switch (relatorio.toLowerCase()) {
      case "resumogeral":
        resumoGeral(filter);
        break;
      case "certidaoliberatoria":
        certidaoLiberatoria(filter);
        break;
      case "atareuniao":
        ataReuniao(filter);
        break;
      case "atividadecoletivainscricaoaberta":
        atividadeColetivaInscricaoAberta(filter);
        break;
      case "atendimentorealizadoaosmunicipes":
        atendimentoRealizadoAosMunicipes(filter);
        break;
      case "prontuariosuas":
        prontuarioSuas(filter);
        break;
      case "beneficiosporatendente":
        beneficiosPorAtendente(filter);
        break;
      case "cidadaoscadastrados":
        cidadaosCadastrados(filter);
        break;
      case "atividadecoletivaprofissional":
        atividadeColetivaProfissional(filter);
        break;
      case "atendimentobasico":
        atendimentoBasico(filter);
        break;
      case "desligamentofamiliaacolhedora":
        desligamentoFamiliaAcolhedora(filter);
        break;
      case "declaracao":
        declaracao(filter);
        break;
      case "termoadesaofamiliaacolhedora":
        termoAdesaoFamiliaAcolhedora(filter);
        break;
      case "termoacolhimentofamiliaacolhedora":
        termoAcolhimentoFamiliaAcolhedora(filter);
        break;
      case "atendimentomensalcentropop":
        atendimentoMensalCentroPop(filter);
        break;
      case "recibobolsaauxilio":
        reciboBolsaAuxilio(filter);
        break;
      case "planoindividualatendimento":
        planoIndividualAtendimento(filter);
        break;
    }
  }

  @Override
  public void resumoGeral(Object filter) throws Exception {
    ResumoGeralFilter resumoGeralFilter = (ResumoGeralFilter) Util.fromJsom(filter.toString(), ResumoGeralFilter.class);
    service.resumoGeral(resumoGeralFilter);
  }

  @Override
  public void certidaoLiberatoria(Object filter) throws Exception {
    CertidaoLiberatoriaFilter certidaoLiberatoriaFilter = (CertidaoLiberatoriaFilter) Util
      .fromJsom(filter.toString(), CertidaoLiberatoriaFilter.class);
    service.certidaoLiberatoria(certidaoLiberatoriaFilter);
  }

  @Override
  public void atividadeColetivaInscricaoAberta(Object filter) throws Exception {
    AtividadeColetivaInscricaoAbertaFilter atividadeColetivaInscricaoAbertaFilter = (AtividadeColetivaInscricaoAbertaFilter) Util
      .fromJsom(filter.toString(), AtividadeColetivaInscricaoAbertaFilter.class);
    service.atividadeColetivaInscricaoAberta(atividadeColetivaInscricaoAbertaFilter);
  }

  @Override
  public void ataReuniao(Object filter) throws Exception {
    AtaReuniaoFilter ataReuniaoFilter = (AtaReuniaoFilter) Util.fromJsom(filter.toString(), AtaReuniaoFilter.class);
    service.ataReuniao(ataReuniaoFilter);
  }

  @Override
  public void atendimentoRealizadoAosMunicipes(Object filter) throws Exception {
    AtendimentoRealizadoAosMunicipesFilter atendimentoRealizadoAosMunicipesFilter = (AtendimentoRealizadoAosMunicipesFilter) Util
      .fromJsom(filter.toString(), AtendimentoRealizadoAosMunicipesFilter.class);
    service.atendimentoRealizadoAosMunicipes(atendimentoRealizadoAosMunicipesFilter);
  }

  @Override
  public void prontuarioSuas(Object filter) throws Exception {
    ProntuarioSuasFilter prontuarioSuasFilter = (ProntuarioSuasFilter) Util
      .fromJsom(filter.toString(), ProntuarioSuasFilter.class);
    service.prontuarioSuas(prontuarioSuasFilter);
  }

  @Override
  public void beneficiosPorAtendente(Object filter) throws Exception {
    BeneficiosPorAtendenteFilter beneficiosPorAtendenteFilter = (BeneficiosPorAtendenteFilter) Util
      .fromJsom(filter.toString(), BeneficiosPorAtendenteFilter.class);
    service.beneficiosPorAtendente(beneficiosPorAtendenteFilter);
  }

  @Override
  public void cidadaosCadastrados(Object filter) throws Exception {
    CidadaosCadastradosFilter cidadaosCadastradosFilter = (CidadaosCadastradosFilter) Util
      .fromJsom(filter.toString(), CidadaosCadastradosFilter.class);
    service.cidadaosCadastrados(cidadaosCadastradosFilter);
  }

  @Override
  public void atividadeColetivaProfissional(Object filter) throws Exception {
    AtividadeColetivaProfissionalFilter coletivaProfissionalFilter = (AtividadeColetivaProfissionalFilter) Util
      .fromJsom(filter.toString(), AtividadeColetivaProfissionalFilter.class);
    service.atividadeColetivaProfissional(coletivaProfissionalFilter);
  }

  @Override
  public void atendimentoBasico(Object filter) throws Exception {
    AtendimentoBasicoFilter atendimentoBasicoFilter = (AtendimentoBasicoFilter) Util
      .fromJsom(filter.toString(), AtendimentoBasicoFilter.class);
    service.atendimentoBasico(atendimentoBasicoFilter);
  }

  @Override
  public void termoAdesaoFamiliaAcolhedora(Object filter) throws Exception {
    TermoAdesaoFamiliaAcolhedoraFilter termoAdesaoFilter = (TermoAdesaoFamiliaAcolhedoraFilter) Util
      .fromJsom(filter.toString(), TermoAdesaoFamiliaAcolhedoraFilter.class);
    service.termoAdesaoFamiliaAcolhedora(termoAdesaoFilter);
  }

  @Override
  public void desligamentoFamiliaAcolhedora(Object filter) throws Exception {
    DesligamentoFamiliaAcolhedoraFilter desligamentoFamiliaAcolhedoraFilter = (DesligamentoFamiliaAcolhedoraFilter) Util
      .fromJsom(filter.toString(), DesligamentoFamiliaAcolhedoraFilter.class);
    service.desligamentoFamiliaAcolhedora(desligamentoFamiliaAcolhedoraFilter);
  }

  @Override
  public void termoAcolhimentoFamiliaAcolhedora(Object filter) throws Exception {
    TermoAcolhimentoFamiliaAcolhedoraFilter termoAcolhimentoFamiliaAcolhedoraFilter = (TermoAcolhimentoFamiliaAcolhedoraFilter) Util
      .fromJsom(filter.toString(), TermoAcolhimentoFamiliaAcolhedoraFilter.class);
    service.termoAcolhimentoFamiliaAcolhedora(termoAcolhimentoFamiliaAcolhedoraFilter);
  }

  @Override
  public void declaracao(Object filter) throws Exception {
    DeclaracaoFilter declaracaoFilter = (DeclaracaoFilter) Util.fromJsom(filter.toString(), DeclaracaoFilter.class);
    service.declaracao(declaracaoFilter);
  }

  @Override
  public void atendimentoMensalCentroPop(Object filter) throws Exception {
    AtendimentoMensalCentroPopFilter atendimentoMensalCentroPopFilter = (AtendimentoMensalCentroPopFilter) Util.fromJsom(filter.toString(), AtendimentoMensalCentroPopFilter.class);
    service.atendimentoMensalCentroPop(atendimentoMensalCentroPopFilter);
  }

  @Override
  public void reciboBolsaAuxilio(Object filter) throws Exception {
    ReciboBolsaAuxilioFilter reciboBolsaAuxilioFilter = (ReciboBolsaAuxilioFilter) Util.fromJsom(filter.toString(), ReciboBolsaAuxilioFilter.class);
    service.reciboBolsaAuxilio(reciboBolsaAuxilioFilter);
  }

  @Override public void planoIndividualAtendimento(Object filter) throws Exception {
    PlanoIdividualAtendimentoFilter piaFilter = (PlanoIdividualAtendimentoFilter) Util.fromJsom(filter.toString(), PlanoIdividualAtendimentoFilter.class);
    service.planoIndividualAtendimento(piaFilter);
  }
}
