public ResponseServicosNotaFiscal GravarNotaFiscalNoBancoDeDados(XElement xml, string chaveUsuario)
        {
            ResponseServicosNotaFiscal response;
            try
            {
                var usuario = RepositorioUsuario.BuscarUsuarioPorChave(chaveUsuario);
                ValidarUsuario(usuario);

                ValidarXmlDaNota(xml, usuario);

                var nota = FabricaNotaFiscal.Criar(xml, usuario);
                ValidarNotaFiscal(nota);
                SalvarXmlNaPastaDoEmitente(nota, xml);
                RepositorioNota.Incluir(nota);

                var emitente = FabricaParticipante.CriarEmitente(xml);
                RepositorioParticipante.Incluir(emitente);

                var destinatario = FabricaParticipante.CriarDestinatario(xml);
                if (RepositorioParticipante.SelecionarPorCnpjCpf(destinatario.CnpjCpf) == null)
                    RepositorioParticipante.Incluir(destinatario);

                response = new ResponseServicosNotaFiscal(100, "Nota recebida com sucesso");
                return response;
            }
            catch (ServicosException ex)
            {
                return ex.Response;
            }
            catch (Exception ex)
            {
                return response = new ResponseServicosNotaFiscal(501, "erro no servidor " + ex.Message);
            }
        }
 public JsonResult EFDJson()
 {
     var response = new ResponseServicosNotaFiscal();
     try
     {
         var xml = XElement.Parse(Request.Form["xml"].ToString());
         var key = Request.Form["key"].ToString();
         response = Servicos.GravarNotaFiscalNoBancoDeDados(xml, key);
     }
     catch (Exception ex)
     {
         response.Codigo = 501;
         response.Status = "Houve um erro no processamento da nota fiscal";
         log.Error(response.Status, ex);
     }
     return Json(response);
 }
 public ServicosException(string message, Exception innerException, int codigo)
     : base(message, innerException)
 {
     this.Codigo = codigo;
     Response = new ResponseServicosNotaFiscal(codigo, message);
 }
 public ServicosException(string message)
     : base(message)
 {
     this.Codigo = 0;
     Response = new ResponseServicosNotaFiscal(this.Codigo, message);
 }