private bool ProcessarRotaFinalizada(long cdRota) { bool retorno = false; var rota = _dbContext.RotaRepository.GetRotaIndicadoresFluxoLES(cdRota); var ocorrenciasRota = _dbContext.OcorrenciaRepository.GetOcorrenciasCompletasOrdenadoDtInclusao(cdRota); var metaPainelIndicadores = _dbContext.MetasPainelIndicadoresRepository.GetByUnidadeNegocio(rota.CdUnidadeNegocio); var baldeiosEntregaRota = _dbContext.BaldeioEntregaRepository.GetBaldeiosMultiTransporteByRotaDestino(cdRota); var unidadesNegocio = _dbContext.UnidadeNegocioRepository.GetAll(); var depositosUnidadeNegocioRota = _dbContext.DepositoRepository.GetDepositosComGeoCoordenadas(rota.CdUnidadeNegocio); var depositos = _dbContext.DepositoRepository.GetDepositosComGeoCoordenadas(); var veiculoRota = _dbContext.VeiculoRepository.GetVeiculos(rota.CdPlacaVeiculo).FirstOrDefault(); var tipoVeiculoRota = _dbContext.TipoVeiculoRepository.GetTipoVeiculo(veiculoRota.CdTipoVeiculo).FirstOrDefault(); var deslocamentosAlmoco = _dbContext.DeslocamentoAlmocoRotaRepository.GetDeslocamentosPIM(cdRota); var deslocamentosAbastecimento = _dbContext.DeslocamentoAbastecimentoRotaRepository.GetDeslocamentosPIM(cdRota); var deslocamentosPernoite = _dbContext.DeslocamentoPernoiteRotaRepository.GetDeslocamentosPIM(cdRota); var paradas = _dbContext.ParadasTratadasAnaliticoRepository.Get(cdRota); decimal valorMetaAderenciaUnidadeNegocio = metaPainelIndicadores?.VlMetaAderencia ?? 0; rota.Entregas = _dbContext.EntregaRepository.EntregasComUnidadeNegocio(rota.Entregas).ToList(); rota.Entregas = _dbContext.EntregaRepository.EntregasComCliente(rota.Entregas).ToList(); if (rota.CdSituacao == (long)SituacaoMonitoramento.Finalizada) { try { Integracao integracaoXml = new Integracao(); integracaoXml.NumeroRota = rota.CdRotaNegocio; // MultiTransporte integracaoXml.MultiTransporte = MultiTransporteNode.Processar(baldeiosEntregaRota, rota); integracaoXml.Data = rota.DtRota.ToString("yyyy-MM-ddTHH:mm:ssZ"); integracaoXml.SetDtData(rota.DtRota); integracaoXml.Placa = rota.CdPlacaVeiculo; // BRF não envia código do motorista integracaoXml.CpfMotorista = string.Empty; integracaoXml.CnpjTransportador = rota.Transportadora?.NrCnpj ?? string.Empty; integracaoXml.UnidadeNegocio = rota.CdUnidadeNegocio; // Indicadores Fluxo LES integracaoXml.Ocorrencias.AdicionarOcorrencia(DivergenciaDiariaOcorrencia.Processar(rota)); integracaoXml.Ocorrencias.AdicionarOcorrencia(DivergenciaPernoiteOcorrencia.Processar(rota, ocorrenciasRota, depositos)); integracaoXml.Ocorrencias.AdicionarOcorrencia(CustoDescargaOcorrencia.Processar(rota)); integracaoXml.Ocorrencias.AdicionarOcorrencia(DevolucaoTransportadorOcorrencia.Processar(rota)); integracaoXml.Ocorrencias.AdicionarOcorrencia(ReentregaOcorrencia.Processar(rota)); integracaoXml.Ocorrencias.AdicionarOcorrencia(AdicionalBalsaOcorrencia.Processar(ocorrenciasRota)); integracaoXml.Ocorrencias.AdicionarOcorrencia(DivergenciaKmOcorrencia.Processar(rota, ocorrenciasRota, deslocamentosAlmoco, deslocamentosAbastecimento, deslocamentosPernoite, paradas, valorMetaAderenciaUnidadeNegocio)); integracaoXml.Ocorrencias.AdicionarOcorrencia(AdicionalMeiaPernoiteOcorrencia.Processar(ocorrenciasRota, depositosUnidadeNegocioRota, rota)); integracaoXml.Ocorrencias.AdicionarOcorrencia(DiariaClienteOcorrencia.Processar(rota, tipoVeiculoRota)); var objRequest = ConverterObjetoRequisicaoWS(integracaoXml); #region Criação do arquivo XML var xml = XmlParser.ObjectToXml(objRequest); Console.Write(xml + "\n\n"); XmlParser.CreateXmlFile(xml, @"C:\FluxoLES\xml", rota.CdRotaNegocio.ToString()); #endregion _integrator.Enviar(objRequest); //Execute(xml); retorno = true; } catch (Exception ex) { throw ex; } return(retorno); } return(retorno); }