public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem); var xml = this.CarregarMensagem <Pollux.MSG0079>(mensagem); Conta objetoConta = null; UnidadeNegocio objetoUnidadeNeg = null; Categoria objetoCategoria = null; List <CategoriasCanal> lstCategCanal = null; if (String.IsNullOrEmpty(xml.CodigoConta) && String.IsNullOrEmpty(xml.CodigoUnidadeNegocio) && String.IsNullOrEmpty(xml.CodigoCategoria)) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "Pelo menos 1 parâmetro deve ser enviado."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno)); } if (!String.IsNullOrEmpty(xml.CodigoConta)) { objetoConta = new Intelbras.CRM2013.Domain.Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoConta)); if (objetoConta == null) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "[Conta] não encontrada."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno)); } } if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio)) { objetoUnidadeNeg = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio); if (objetoUnidadeNeg == null) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "[Unidade Negócio] não encontrada."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0078R1>(numeroMensagem, retorno)); } } if (!String.IsNullOrEmpty(xml.CodigoCategoria)) { objetoCategoria = new Intelbras.CRM2013.Domain.Servicos.CategoriaService(this.Organizacao, this.IsOffline).ObterPor(new Guid(xml.CodigoCategoria)); if (objetoCategoria == null) { resultadoConsulta.Sucesso = false; resultadoConsulta.Mensagem = "[Categoria] não encontrada."; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno)); } } List <CategoriasCanal> lstObjetoCategoria = new List <CategoriasCanal>(); List <Guid> lstUnd = new List <Guid>(); if (objetoConta != null) { if (objetoUnidadeNeg != null) { lstObjetoCategoria = new Intelbras.CRM2013.Domain.Servicos.CategoriaCanalService(this.Organizacao, this.IsOffline).ListarPor((Guid)objetoConta.ID, (Guid)objetoUnidadeNeg.ID); } else { lstObjetoCategoria = new Intelbras.CRM2013.Domain.Servicos.CategoriaCanalService(this.Organizacao, this.IsOffline).ListarPor((Guid)objetoConta.ID, null); } foreach (CategoriasCanal item in lstObjetoCategoria ?? Enumerable.Empty <CategoriasCanal>()) { if (!lstUnd.Contains(item.UnidadeNegocios.Id)) { lstUnd.Add(item.UnidadeNegocios.Id); } } if (lstUnd.Count == 0) { resultadoConsulta.Sucesso = true; retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno)); } } else if (objetoUnidadeNeg != null) { lstUnd.Add(objetoUnidadeNeg.ID.Value); } else if (objetoCategoria != null) { lstUnd = null; } List <LinhaCorteRevenda> objLinhaCorteRevenda = new List <LinhaCorteRevenda>(); if (objetoCategoria != null) { objLinhaCorteRevenda = new Intelbras.CRM2013.Domain.Servicos.LinhaCorteService(this.Organizacao, this.IsOffline).ListarLinhadeCorteRevenda(lstUnd, objetoCategoria); } else if (lstObjetoCategoria.Count > 0) { //Passado Canal, mas nao categoria. As categorias foram obtidas atraves de CategoriasCanal foreach (var itemCateg in lstObjetoCategoria) { Categoria categ = new Servicos.CategoriaService(this.Organizacao, this.IsOffline).ObterPor(itemCateg.Categoria.Id); List <LinhaCorteRevenda> lstPorItem = new Intelbras.CRM2013.Domain.Servicos.LinhaCorteService(this.Organizacao, this.IsOffline).ListarLinhadeCorteRevenda(lstUnd, categ); if (lstPorItem.Count > 0) { foreach (var linhaCorte in lstPorItem) { objLinhaCorteRevenda.Add(linhaCorte); } } } } else { //Não foi passsado categoria, apenas CAnal, e nao foi encontrada CategoriasCanal objLinhaCorteRevenda = new Intelbras.CRM2013.Domain.Servicos.LinhaCorteService(this.Organizacao, this.IsOffline).ListarLinhadeCorteRevenda(lstUnd, null); } foreach (var item in objLinhaCorteRevenda) { if (!response.Exists(x => x.CodigoLinhaCorte == item.ID.Value.ToString())) { response.Add(this.DefinirPropriedades(item)); } } if (!resultadoConsulta.Sucesso) { retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno)); } resultadoConsulta.Sucesso = true; if (response != null && response.Count > 0) { resultadoConsulta.Mensagem = "Integração ocorrida com sucesso."; retorno.Add("LinhasCorteItens", response); } else { resultadoConsulta.Mensagem = "Linha de Corte Revenda não encontrado no Crm."; } retorno.Add("Resultado", resultadoConsulta); return(CriarMensagemRetorno <Pollux.MSG0079R1>(numeroMensagem, retorno)); }
//public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) //{ // try // { // //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem); // usuarioIntegracao = usuario; // Intelbras.Message.Helper.MSG0111 xml = this.CarregarMensagem<Pollux.MSG0111>(mensagem); // ParametroGlobal objeto = this.DefinirPropriedades(xml); // if (!resultadoPersistencia.Sucesso) // { // retorno.Add("Resultado", resultadoPersistencia); // return CriarMensagemRetorno<Pollux.MSG0111R1>(numeroMensagem, retorno); // } // objeto = new Domain.Servicos.ParametroGlobalService(this.Organizacao, this.IsOffline).ObterPor(tipoParamentroCod, unidadeNegocioId, classificacaoId, categoriaId, nivelPosVendaId, compromissoId, beneficioId,null); // if (objeto == null) // { // resultadoPersistencia.Sucesso = true; // resultadoPersistencia.Mensagem = "Registro não encontrado!"; // } // else // { // Pollux.Entities.ParametroGlobal objRetorno = new Pollux.Entities.ParametroGlobal(); // objRetorno.TipoDado = objeto.TipoDado; // objRetorno.Valor = objeto.Valor; // retorno.Add("ParametroGlobal", objRetorno); // resultadoPersistencia.Sucesso = true; // resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso"; // } // retorno.Add("Resultado", resultadoPersistencia); // return CriarMensagemRetorno<Pollux.MSG0111R1>(numeroMensagem, retorno); // } // catch (Exception e) // { // resultadoPersistencia.Sucesso = false; // resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e); // retorno.Add("Resultado", resultadoPersistencia); // return CriarMensagemRetorno<Pollux.MSG0111R1>(numeroMensagem, retorno); // //throw new ArgumentException(e.Message); // } //} #endregion #region Definir Propriedades public ParametroGlobal DefinirPropriedades(Intelbras.Message.Helper.MSG0111 xml) { ParametroGlobal crm = new ParametroGlobal(this.Organizacao, this.IsOffline); //Obrigatorio TipodeParametroGlobal tipoParamentro = new Servicos.TipodeParametroGlobalService(this.Organizacao, this.IsOffline).ObterPor(xml.TipoParametroGlobal); if (tipoParamentro != null && tipoParamentro.Codigo.HasValue) { tipoParamentroCod = tipoParamentro.Codigo.Value; crm.TipoParametro = new Lookup(tipoParamentro.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "TipoParametroGlobal/Codigo não cadastrada no Crm."; return(crm); } //Não Obrigatório if (!String.IsNullOrEmpty(xml.CodigoBeneficio)) { if (xml.CodigoBeneficio.Length == 36) { crm.Beneficio = new Lookup((Guid)(TransformaGuid(xml.CodigoBeneficio)), ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador CodigoBeneficio fora do padrão (Guid)."; return(crm); } } //Não obrigatorio if (!String.IsNullOrEmpty(xml.CodigoClassificacao)) { Classificacao classificacao = new Servicos.ClassificacaoService(this.Organizacao, this.IsOffline).BuscaClassificacao(new Guid(xml.CodigoClassificacao)); if (classificacao != null) { crm.Classificacao = new Lookup(classificacao.ID.Value, ""); classificacaoId = classificacao.ID.Value; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Classificação não cadastrada no Crm."; return(crm); } } //Não obrigatorio if (!String.IsNullOrEmpty(xml.CodigoCategoria)) { Categoria categoria = new Servicos.CategoriaService(this.Organizacao, this.IsOffline).ObterPor(new Guid(xml.CodigoCategoria)); if (categoria != null) { crm.Categoria = new Lookup(categoria.ID.Value, ""); categoriaId = categoria.ID.Value; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Categoria não cadastrada no Crm."; return(crm); } } //Não Obrigatorio if (!String.IsNullOrEmpty(xml.CodigoCompromisso)) { if (xml.CodigoCompromisso.Length == 36) { crm.Compromisso = new Lookup(new Guid(xml.CodigoCompromisso), ""); compromissoId = new Guid(xml.CodigoCompromisso); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador CodigoCompromisso fora do padrão (Guid)."; return(crm); } } //Não Obrigatorio if (!String.IsNullOrEmpty(xml.CodigoBeneficio)) { if (xml.CodigoBeneficio.Length == 36) { crm.Beneficio = new Lookup(new Guid(xml.CodigoBeneficio), ""); beneficioId = new Guid(xml.CodigoBeneficio); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador CodigoBeneficio fora do padrão (Guid)."; return(crm); } } //Não Obrigatorio if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio)) { UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio); if (unidadeNeg != null) { crm.UnidadeNegocio = new Lookup(unidadeNeg.ID.Value, ""); unidadeNegocioId = unidadeNeg.ID.Value; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "UnidadeNegocio não cadastrada no Crm."; return(crm); } } //Não Obrigatorio if (!String.IsNullOrEmpty(xml.CodigoNivelPosVenda)) { if (xml.CodigoNivelPosVenda.Length == 36) { crm.NivelPosVenda = new Lookup(new Guid(xml.CodigoNivelPosVenda), ""); nivelPosVendaId = new Guid(xml.CodigoNivelPosVenda); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador NivelPosVenda fora do padrão (Guid)."; return(crm); } } return(crm); }