private static void CancelarOrdensExperiradas(object state) { if (DateTime.Now.Hour < HorarioFechamentoBolsa) { OrdensExpiradasAtualizadas = false; } if ((DateTime.Now.Hour >= HorarioFechamentoBolsa) && (OrdensExpiradasAtualizadas == false)) { CamadaDeDados _CamadaDeDados = new CamadaDeDados(); _CamadaDeDados.AbrirConexao(); List <string> Ordens = _CamadaDeDados.BuscarOrdensValidasParaoDia(); IServicoOrdens ServicoOrdens = Ativador.Get <IServicoOrdens>(); for (int i = 0; i <= Ordens.Count - 1; i++) { ClienteCancelamentoInfo ClienteCancelamentoInfo = new ClienteCancelamentoInfo() { OrderID = Ordens[i].ToString() }; EnviarCancelamentoOrdemRequest request = new EnviarCancelamentoOrdemRequest() { ClienteCancelamentoInfo = ClienteCancelamentoInfo }; EnviarCancelamentoOrdemResponse response = ServicoOrdens.CancelarOrdem(request); } OrdensExpiradasAtualizadas = true; } }
private void CancelarOrdem() { ClienteCancelamentoInfo info = new ClienteCancelamentoInfo(); info.OrderID = "30032012030412-36938417"; EnviarCancelamentoOrdemRequest request = new EnviarCancelamentoOrdemRequest(); request.ClienteCancelamentoInfo = info; EnviarCancelamentoOrdemResponse response = new EnviarCancelamentoOrdemResponse(); response = new ServicoOrdens().CancelarOrdem(request); }
/// <summary> /// Exclui as ordens selecionadas /// </summary> /// <returns>Retorna uma string com mensagem de sucesso ou erro ao excluir as ordens</returns> private string ResponderExcluirOrdens() { string lRetorno = string.Empty; try { string lIds = Request.Form["Ids"]; string lPortas = Request.Form["Portas"]; string lMensagem = ""; List <string> lstIdOrdem = new List <string>(); IServicoOrdens lOrdem = Ativador.Get <IServicoOrdens>(); Dictionary <string, string> lCriticas = new Dictionary <string, string>(); EnviarCancelamentoOrdemResponse lResponse = new EnviarCancelamentoOrdemResponse(); string[] Ordens = lIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); string[] Portas = lPortas.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); ClienteCancelamentoInfo info; EnviarCancelamentoOrdemRequest lRequestCancel; for (int i = 0; i < Ordens.Length; i++) { info = new ClienteCancelamentoInfo(); info.OrderID = Ordens[i]; info.PortaControleOrdem = Portas[i]; lRequestCancel = new EnviarCancelamentoOrdemRequest() { ClienteCancelamentoInfo = info }; lResponse = lOrdem.CancelarOrdem(lRequestCancel); if (lResponse.StatusResposta != OMS.Ordens.Lib.Enum.CriticaRiscoEnum.Sucesso) { lCriticas.Add(info.OrderID, lResponse.DescricaoResposta); } } if (lCriticas.Count > 0) { foreach (KeyValuePair <string, string> critica in lCriticas) { lMensagem += string.Concat("Ordem: ", critica.Key, "Crítica - ", critica.Value); } lRetorno = RetornarSucessoAjax(lMensagem); } else { lRetorno = RetornarSucessoAjax("Orden(s) cancelada(s) com sucesso"); base.RegistrarLogExclusao(string.Concat("Foram EXCLUÍDAS as seguintes ordens: ", lIds)); } } catch (Exception ex) { lRetorno = base.RetornarErroAjax("Erro ao tentar cancelar ordem.", ex); } return(lRetorno); }
/// <summary> /// Método responsável por enviar um cancelamento de ordens para o roteador cancelar. /// </summary> /// <param name="pParametroCancelamentoRequest"></param> /// <returns></returns> public EnviarCancelamentoOrdemResponse CancelarOrdem(EnviarCancelamentoOrdemRequest pParametroCancelamentoRequest) { logger.Info("Iniciar rotina de cancelamento de ordens"); DateTime DataInicioExecucao = DateTime.Now; logger.Info("Data de inicio de execução: " + DataInicioExecucao.ToString()); EnviarCancelamentoOrdemResponse CancelamentoOrderResponse = new EnviarCancelamentoOrdemResponse(); OrdemFIXResponse <OrdemCancelamentoInfo> OrdemCancelamentoInfo = this.ParsearOrdemCancelamentoCliente(pParametroCancelamentoRequest.ClienteCancelamentoInfo); if (OrdemCancelamentoInfo.StatusResposta == CriticaRiscoEnum.Sucesso) { logger.Info("Solicitação de cancelamento de ordem enviado "); logger.Info("Bovespa : " + OrdemCancelamentoInfo.Objeto.Account.ToString()); logger.Info("ChannelID : " + OrdemCancelamentoInfo.Objeto.ChannelID.ToString()); logger.Info("ClOrdID : " + OrdemCancelamentoInfo.Objeto.ClOrdID.ToString()); logger.Info("Exchange : " + OrdemCancelamentoInfo.Objeto.Exchange.ToString()); logger.Info("OrderID : " + OrdemCancelamentoInfo.Objeto.OrderID.ToString()); logger.Info("OrigClOrdID : " + OrdemCancelamentoInfo.Objeto.OrigClOrdID.ToString()); logger.Info("Side : " + OrdemCancelamentoInfo.Objeto.Side.ToString()); logger.Info("Symbol : " + OrdemCancelamentoInfo.Objeto.Symbol.ToString()); logger.Info("Mensagem parseado com sucesso!"); logger.Info("Inicializa serviço de roteamento de ordem"); //Invoca o serviço de roteamento de ordem IRoteadorOrdens ServicoRoteador = Ativador.Get <IRoteadorOrdens>(); logger.Info("Serviço do ativador inicializado com sucesso"); logger.Info("Calculando digito do cliente"); OrdemCancelamentoInfo.Objeto.Account = RetornaCodigoCliente(CodigoCorretora, OrdemCancelamentoInfo.Objeto.Account); logger.Info("Envia ordem para o roteador"); // Enviar a ordem para o roteador de ordens e aguarda o retorno. ExecutarCancelamentoOrdemResponse RespostaOrdem = ServicoRoteador.CancelarOrdem( new ExecutarCancelamentoOrdemRequest() { info = OrdemCancelamentoInfo.Objeto }); if (RespostaOrdem.DadosRetorno.StatusResposta == StatusRoteamentoEnum.Sucesso) { logger.Info("Cancelamento enviado com sucesso."); CancelamentoOrderResponse.DescricaoResposta = RespostaOrdem.DadosRetorno.Ocorrencias[0].Ocorrencia; CancelamentoOrderResponse.DataResposta = DateTime.Now; CancelamentoOrderResponse.StatusResposta = CriticaRiscoEnum.Sucesso; } else { logger.Info("Erro ao enviar o cancelamento para o Roteador."); CancelamentoOrderResponse.DescricaoResposta = RespostaOrdem.DadosRetorno.Ocorrencias[0].Ocorrencia; CancelamentoOrderResponse.DataResposta = DateTime.Now; CancelamentoOrderResponse.StatusResposta = CriticaRiscoEnum.ErroNegocio; } } else { CancelamentoOrderResponse.DescricaoResposta = OrdemCancelamentoInfo.CriticaInfo[0].Critica.ToString(); CancelamentoOrderResponse.CriticaInfo = OrdemCancelamentoInfo.CriticaInfo; CancelamentoOrderResponse.DataResposta = DateTime.Now; CancelamentoOrderResponse.StatusResposta = CriticaRiscoEnum.Sucesso; } TimeSpan datafinal = (DateTime.Now - DataInicioExecucao); logger.Info("Tempo total de execução :" + datafinal.ToString()); return(CancelamentoOrderResponse); }