package br.com.elotech.controller;

import br.com.elotech.model.AtivacaoParams;
import br.com.elotech.model.Registro;
import br.com.elotech.services.AtivadorService;
import br.com.elotech.services.impl.AtivadorServiceImpl;
import br.com.elotech.util.Crypto;
import br.com.elotech.util.Util;
import org.apache.commons.lang3.StringUtils;

public class AtivadorCtrl {

    private AtivadorService service = new AtivadorServiceImpl();

  public void carregaVerificacaoDeSistema(AtivacaoParams params) throws Exception{
        if(StringUtils.isBlank(params.getChave())){
            service.bloquearSistema(params);
            throw new Exception("Chave do sistema não foi configurada! Por favor, solicite apoio técnico.");
        }
        service.liberarSistema(params);
      Registro tabRegistro = service.verificaRegistro(params);
    Registro bluemixRegistro = null;
    if(tabRegistro == null){
            bluemixRegistro = service.verificaBluemix(params);
            if(bluemixRegistro != null){
                service.gravaRegistroValido(bluemixRegistro);
            }
        }else{
            if(Crypto.checkHash(tabRegistro)){
                if(!service.verificaValidadeRegistro(tabRegistro.getValidade())){
                    bluemixRegistro = service.verificaBluemix(params);
                    if(bluemixRegistro != null){
                        if(bluemixRegistro.getValidade().after(Util.adicionaDia(tabRegistro.getValidade()))){
                            service.atualizaRegistro(bluemixRegistro);
                            carregaVerificacaoDeSistema(params);
                        }else{
                            service.bloquearSistema(params);
                        }
                    }
                }
            }else{
                bluemixRegistro = service.verificaBluemix(params);
                if(bluemixRegistro != null){
                    service.atualizaRegistro(bluemixRegistro);
                    carregaVerificacaoDeSistema(params);
                }
            }
        }
    }
}
