public IActionResult AtualizarNfeConfiguracao([FromBody] NfeConfiguracao objJson, string cnpj)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(StatusCode(400, new RetornoJsonErro(400, "Objeto inválido [Atualizar NfeConfiguracao]", null)));
                }

                string pdvConfiguracao     = Request.Headers["pdv-configuracao"];
                var    definition          = new { decimaisQuantidade = 2, decimaisValor = 2 };
                var    pdvConfiguracaoJson = JsonConvert.DeserializeAnonymousType(pdvConfiguracao, definition);

                int decimaisQuantidade = pdvConfiguracaoJson.decimaisQuantidade;
                int decimaisValor      = pdvConfiguracaoJson.decimaisValor;

                // chama o método atualizar do service e aguarda um objeto para a porta
                AcbrMonitorPorta portaMonitor = _service.Atualizar(objJson, cnpj, decimaisQuantidade, decimaisValor);

                // configura o cabeçalho de retorno, enviando a porta e o endereço do servidor
                if (portaMonitor != null)
                {
                    Response.Headers.Add("endereco-monitor", Constantes.ENDERECO_SERVIDOR);
                    Response.Headers.Add("porta-monitor", portaMonitor.Id.ToString());
                }

                return(CreatedAtRoute("ConsultarObjetoNfeConfiguracao", new { id = objJson.Id }, objJson));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new RetornoJsonErro(500, "Erro no Servidor [Atualizar NfeConfiguracao]", ex)));
            }
        }
 public void Excluir(NfeConfiguracao objeto)
 {
     using (ISession Session = NHibernateHelper.GetSessionFactory().OpenSession())
     {
         NHibernateDAL <NfeConfiguracao> DAL = new NHibernateDAL <NfeConfiguracao>(Session);
         DAL.Delete(objeto);
         Session.Flush();
     }
 }
 public void Alterar(NfeConfiguracao objeto)
 {
     using (ISession Session = NHibernateHelper.GetSessionFactory().OpenSession())
     {
         NHibernateDAL <NfeConfiguracao> DAL = new NHibernateDAL <NfeConfiguracao>(Session);
         DAL.SaveOrUpdate(objeto);
         Session.Flush();
     }
 }
        public NfeConfiguracao ConsultarObjeto(int id)
        {
            NfeConfiguracao Resultado = null;

            using (ISession Session = NHibernateHelper.GetSessionFactory().OpenSession())
            {
                NHibernateDAL <NfeConfiguracao> DAL = new NHibernateDAL <NfeConfiguracao>(Session);
                Resultado = DAL.SelectId <NfeConfiguracao>(id);
            }
            return(Resultado);
        }
        public NfeConfiguracao ConsultarObjetoFiltro(string filtro)
        {
            NfeConfiguracao Resultado = null;

            using (ISession Session = NHibernateHelper.GetSessionFactory().OpenSession())
            {
                var consultaSql = "from NfeConfiguracao where " + filtro;
                NHibernateDAL <NfeConfiguracao> DAL = new NHibernateDAL <NfeConfiguracao>(Session);
                Resultado = DAL.SelectObjetoSql <NfeConfiguracao>(consultaSql);
            }
            return(Resultado);
        }
        public AcbrMonitorPorta Atualizar(NfeConfiguracao nfeConfiguracao, string cnpj, int decimaisQuantidade, int decimaisValor)
        {
            using (ISession Session = NHibernateHelper.GetSessionFactory().OpenSession())
            {
                string  filtro  = "CNPJ = '" + cnpj + "'";
                Empresa empresa = new EmpresaService().ConsultarObjetoFiltro(filtro);
                if (empresa != null)
                {
                    // salva o objeto de configuração no banco de dados
                    nfeConfiguracao.Empresa = empresa;
                    nfeConfiguracao.CaminhoSalvarXml.Replace("\\", "\\\\");
                    nfeConfiguracao.CaminhoSalvarPdf.Replace("\\", "\\\\");
                    filtro = "ID_EMPRESA = " + empresa.Id.ToString();
                    NfeConfiguracao configuracao = ConsultarObjetoFiltro(filtro);
                    if (configuracao != null)
                    {
                        nfeConfiguracao.Id = configuracao.Id;
                        Alterar(nfeConfiguracao);
                    }
                    else
                    {
                        Inserir(nfeConfiguracao);
                    }

                    // verificar se já existe uma porta definida para o monitor da empresa
                    // ALTER TABLE acbr_monitor_porta AUTO_INCREMENT=3435; - executa um comando no banco de dados para definir a porta inicial para o ID
                    filtro = "ID_EMPRESA = " + empresa.Id.ToString();
                    AcbrMonitorPortaService acbrMonitorPortaService = new AcbrMonitorPortaService();
                    AcbrMonitorPorta        portaMonitor            = acbrMonitorPortaService.ConsultarObjetoFiltro(filtro);
                    if (portaMonitor == null)
                    {
                        portaMonitor         = new AcbrMonitorPorta();
                        portaMonitor.Empresa = empresa;
                        acbrMonitorPortaService.Inserir(portaMonitor);
                    }

                    // criar a pasta do monitor para a empresa
                    CriarPastaAcbrMonitor(cnpj);

                    // configurar o arquivo INI
                    ConfigurarArquivoIniMonitor(nfeConfiguracao, empresa, decimaisQuantidade, decimaisValor, portaMonitor.Id);

                    return(portaMonitor);
                }
                else
                {
                    return(null);
                }
            }
        }
        public IActionResult AlterarNfeConfiguracao([FromBody] NfeConfiguracao objJson, int id)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(StatusCode(400, new RetornoJsonErro(400, "Objeto inválido [Alterar NfeConfiguracao]", null)));
                }

                if (objJson.Id != id)
                {
                    return(StatusCode(400, new RetornoJsonErro(400, "Objeto inválido [Alterar NfeConfiguracao] - ID do objeto difere do ID da URL.", null)));
                }

                _service.Alterar(objJson);

                return(ConsultarObjetoNfeConfiguracao(id));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new RetornoJsonErro(500, "Erro no Servidor [Alterar NfeConfiguracao]", ex)));
            }
        }
        private void ConfigurarArquivoIniMonitor(NfeConfiguracao nfeConfiguracao, Empresa empresa, int decimaisQuantidade, int decimaisValor, int portaMonitor)
        {
            string caminhoComCnpj = "C:\\ACBrMonitor\\" + empresa.Cnpj + "\\";

            nfeConfiguracao.CaminhoSalvarPdf = caminhoComCnpj + "PDF";
            nfeConfiguracao.CaminhoSalvarXml = caminhoComCnpj + "DFes";

            string  nomeArquivoIni = caminhoComCnpj + "ACBrMonitor.ini";
            IniFile acbrMonitorIni = new IniFile(nomeArquivoIni);

            try
            {
                //*******************************************************************************************
                //  [ACBrMonitor]
                //*******************************************************************************************
                acbrMonitorIni.IniWriteString("ACBrMonitor", "TCP_Porta", portaMonitor.ToString());

                //*******************************************************************************************
                //  [ACBrNFeMonitor]
                //*******************************************************************************************
                acbrMonitorIni.IniWriteString("ACBrNFeMonitor", "Arquivo_Log_Comp", caminhoComCnpj + "LOG_DFe.TXT");
                acbrMonitorIni.IniWriteString("ACBrNFeMonitor", "ArquivoWebServices", caminhoComCnpj + "ACBrNFeServicos.ini");
                acbrMonitorIni.IniWriteString("ACBrNFeMonitor", "ArquivoWebServicesCTe", caminhoComCnpj + "ACBrCTeServicos.ini");
                acbrMonitorIni.IniWriteString("ACBrNFeMonitor", "ArquivoWebServicesMDFe", caminhoComCnpj + "ACBrMDFeServicos.ini");
                acbrMonitorIni.IniWriteString("ACBrNFeMonitor", "ArquivoWebServicesGNRe", caminhoComCnpj + "ACBrGNREServicos.ini");
                acbrMonitorIni.IniWriteString("ACBrNFeMonitor", "ArquivoWebServiceseSocial", caminhoComCnpj + "ACBreSocialServicos.ini");
                acbrMonitorIni.IniWriteString("ACBrNFeMonitor", "ArquivoWebServicesReinf", caminhoComCnpj + "ACBrReinfServicos.ini");
                acbrMonitorIni.IniWriteString("ACBrNFeMonitor", "ArquivoWebServicesBPe", caminhoComCnpj + "ACBrBPeServicos.ini");

                //*******************************************************************************************
                //  [WebService]
                //*******************************************************************************************
                // tpAmb - 1-Produção/ 2-Homologação
                // OBS: o monitor leva em conta o índice do Radiogroup, ou seja, será 0 para produção e 1 para homologação
                int ambiente = nfeConfiguracao.WebserviceAmbiente - 1;
                acbrMonitorIni.IniWriteString("WebService", "Ambiente", ambiente.ToString());
                acbrMonitorIni.IniWriteString("WebService", "UF", empresa.Uf);

                //*******************************************************************************************
                //  [RespTecnico]
                //*******************************************************************************************
                if (nfeConfiguracao.RespTecHashCsrt != "0")
                {
                    acbrMonitorIni.IniWriteString("RespTecnico", "CSRT", nfeConfiguracao.RespTecHashCsrt);
                }
                if (nfeConfiguracao.RespTecIdCsrt != "0")
                {
                    acbrMonitorIni.IniWriteString("RespTecnico", "idCSRT", nfeConfiguracao.RespTecIdCsrt);
                }

                //*******************************************************************************************
                //  [NFCe]
                //*******************************************************************************************
                acbrMonitorIni.IniWriteString("NFCe", "IdToken", nfeConfiguracao.NfceIdCsc);
                acbrMonitorIni.IniWriteString("NFCe", "Token", nfeConfiguracao.NfceCsc);
                if (nfeConfiguracao.NfceModeloImpressao == "A4")
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ModoImpressaoEvento", "0");
                }
                else
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ModoImpressaoEvento", "1");
                }
                if (nfeConfiguracao.NfceImprimirItensUmaLinha == "S")
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ImprimirItem1Linha", "1");
                }
                else
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ImprimirItem1Linha", "0");
                }
                if (nfeConfiguracao.NfceImprimirDescontoPorItem == "S")
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ImprimirDescAcresItem", "1");
                }
                else
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ImprimirDescAcresItem", "0");
                }
                if (nfeConfiguracao.NfceImprimirQrcodeLateral == "S")
                {
                    acbrMonitorIni.IniWriteString("NFCe", "QRCodeLateral", "1");
                }
                else
                {
                    acbrMonitorIni.IniWriteString("NFCe", "QRCodeLateral", "0");
                }
                if (nfeConfiguracao.NfceImprimirGtin == "S")
                {
                    acbrMonitorIni.IniWriteString("NFCe", "UsaCodigoEanImpressao", "1");
                }
                else
                {
                    acbrMonitorIni.IniWriteString("NFCe", "UsaCodigoEanImpressao", "0");
                }
                if (nfeConfiguracao.NfceImprimirNomeFantasia == "S")
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ImprimeNomeFantasia", "1");
                }
                else
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ImprimeNomeFantasia", "0");
                }
                if (nfeConfiguracao.NfceImpressaoTributos == "S")
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ExibeTotalTributosItem", "1");
                }
                else
                {
                    acbrMonitorIni.IniWriteString("NFCe", "ExibeTotalTributosItem", "0");
                }

                //*******************************************************************************************
                //  [DANFCe]
                //*******************************************************************************************
                acbrMonitorIni.IniWriteString("DANFCe", "MargemInf", nfeConfiguracao.NfceMargemInferior.ToString().Replace(".", ","));
                acbrMonitorIni.IniWriteString("DANFCe", "MargemSup", nfeConfiguracao.NfceMargemSuperior.ToString().Replace(".", ","));
                acbrMonitorIni.IniWriteString("DANFCe", "MargemDir", nfeConfiguracao.NfceMargemDireita.ToString().Replace(".", ","));
                acbrMonitorIni.IniWriteString("DANFCe", "MargemEsq", nfeConfiguracao.NfceMargemEsquerda.ToString().Replace(".", ","));
                acbrMonitorIni.IniWriteString("DANFCe", "LarguraBobina", nfeConfiguracao.NfceResolucaoImpressao.ToString());

                //*******************************************************************************************
                //  [FonteLinhaItem]
                //*******************************************************************************************
                acbrMonitorIni.IniWriteString("FonteLinhaItem", "Size", nfeConfiguracao.NfceTamanhoFonteItem.ToString());

                //*******************************************************************************************
                //  [DANFE]
                //*******************************************************************************************
                acbrMonitorIni.IniWriteString("DANFE", "PathPDF", nfeConfiguracao.CaminhoSalvarPdf);
                acbrMonitorIni.IniWriteString("DANFE", "DecimaisQTD", decimaisQuantidade.ToString());
                acbrMonitorIni.IniWriteString("DANFE", "DecimaisValor", decimaisValor.ToString());

                //*******************************************************************************************
                //  [Arquivos]
                //*******************************************************************************************
                acbrMonitorIni.IniWriteString("Arquivos", "PathNFe", nfeConfiguracao.CaminhoSalvarXml);
                acbrMonitorIni.IniWriteString("Arquivos", "PathInu", caminhoComCnpj + "Inutilizacao");
                acbrMonitorIni.IniWriteString("Arquivos", "PathDPEC", caminhoComCnpj + "EPEC");
                acbrMonitorIni.IniWriteString("Arquivos", "PathEvento", caminhoComCnpj + "Evento");
                acbrMonitorIni.IniWriteString("Arquivos", "PathArqTXT", caminhoComCnpj + "TXT");
                acbrMonitorIni.IniWriteString("Arquivos", "PathDonwload", caminhoComCnpj + "DistribuicaoDFe");
            }
            finally
            {
                Biblioteca.KillTask("ACBrMonitor_" + empresa.Cnpj + ".exe");
                string caminhoExecutavel = caminhoComCnpj + "ACBrMonitor_" + empresa.Cnpj + ".exe";
                Process.Start(caminhoExecutavel);
            }
        }