/// <summary> /// Envia um pedido de execucao de ordem para o canal correspondente /// </summary> /// <param name="request"></param> /// <returns></returns> public ExecutarOrdemResponse ExecutarOrdem(ExecutarOrdemRequest request) { ExecutarOrdemResponse response = new ExecutarOrdemResponse(); CanalInfo _canal = null; StatusRoteamentoEnum status = StatusRoteamentoEnum.Sucesso; string msg = "Ordem Enviada"; logger.Debug("*** ExecutarOrdem()"); TradutorFix.DumpOrdemInfo(request.info); try { _canal = (CanalInfo)_canais[request.info.Exchange + request.info.ChannelID]; if (_canal == null) { msg = "Nao ha canal configurado para " + request.info.Exchange + "-" + request.info.ChannelID; status = StatusRoteamentoEnum.Erro; logger.Info(msg); response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaEO(msg, status); } else { if (_canal.roteador == null || _canal.Conectado == false) { status = StatusRoteamentoEnum.Erro; msg = "Nao ha canal ativo e conectado para " + request.info.Exchange + "-" + request.info.ChannelID; logger.Info(msg); response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaEO(msg, status); } else { _criaReportStore(request.info.ClOrdID); _notificaEnvioParaCanal(request.info); response = _canal.roteador.ExecutarOrdem(request); } } } catch (Exception ex) { msg = "Error ExecutarOrdem(): " + ex.Message; status = StatusRoteamentoEnum.Erro; logger.Error(msg + "-" + ex.StackTrace); response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaEO(msg, status); if (_canal != null) { _resetCanal(_canal); } } logger.Debug("*** End of ExecutarOrdem()"); return(response); }
private ExecutarCancelamentoOrdemResponse EnfileirarCancelamento(ExecutarCancelamentoOrdemRequest request) { ExecutarCancelamentoOrdemResponse response = new ExecutarCancelamentoOrdemResponse(); string msg = "Cancelamento de Ordem enviado com sucesso"; StatusRoteamentoEnum status = StatusRoteamentoEnum.Sucesso; response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status); queueCancelamento.Enqueue(request); return(response); }
/// <summary> /// Formata uma mensagem de erro de Execucao de OrdemCross /// </summary> /// <param name="msg">Mensagem a ser informada para o requerente</param> /// <param name="status">Status indicando sucesso ou erro</param> /// <returns></returns> public static DadosRetornoExecutarOrdemCross FormatarRespostaEOX(string msg, StatusRoteamentoEnum status) { DadosRetornoExecutarOrdemCross retorno = new DadosRetornoExecutarOrdemCross(); retorno.DataResposta = DateTime.Now; OcorrenciaRoteamentoOrdem ocorrencia = new OcorrenciaRoteamentoOrdem(); ocorrencia.DataHoraOcorrencia = DateTime.Now; ocorrencia.Ocorrencia = msg; retorno.Ocorrencias.Add(ocorrencia); retorno.StatusResposta = status; return(retorno); }
/// <summary> /// Envia um pedido de cancelamento de ordem para o canal correspondente /// </summary> /// <param name="request"></param> /// <returns></returns> public ExecutarCancelamentoOrdemResponse CancelarOrdem(ExecutarCancelamentoOrdemRequest request) { ExecutarCancelamentoOrdemResponse response = new ExecutarCancelamentoOrdemResponse(); CanalInfo _canal = null; StatusRoteamentoEnum status = StatusRoteamentoEnum.Sucesso; string msg = "Cancelamento Enviado"; logger.Debug("Request de Cancelamento Recebido:"); logger.Debug("Cliente ......: " + request.info.Account); logger.Debug("Bolsa ........: " + request.info.Exchange); logger.Debug("Canal ........: " + request.info.ChannelID); logger.Debug("Order ID .....: " + request.info.OrderID); logger.Debug("OrigClOrdID ..: " + request.info.OrigClOrdID); logger.Debug("ClOrdID ......: " + request.info.ClOrdID); try { _canal = (CanalInfo)_canais[request.info.Exchange + request.info.ChannelID]; if (!_bKeepRunning) { msg = "Servico esta em finalizacao"; status = StatusRoteamentoEnum.Erro; logger.Info(msg); response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status); return(response); } if (_canal == null) { msg = "Nao ha canal configurado para " + request.info.Exchange + "-" + request.info.ChannelID; status = StatusRoteamentoEnum.Erro; logger.Info(msg); response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status); } else { if (_canal.roteador == null || _canal.Conectado == false) { status = StatusRoteamentoEnum.Erro; msg = "Nao ha canal ativo e conectado para " + request.info.Exchange + "-" + request.info.ChannelID; logger.Info(msg); response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status); } else { response = EnfileirarCancelamento(request); } } } catch (Exception ex) { msg = "CancelarOrdem(): " + ex.Message; status = StatusRoteamentoEnum.Erro; logger.Error(msg + "-" + ex.StackTrace); response.DadosRetorno = RoteadorOrdensUtil.FormatarRespostaCancelamento(msg, status); if (_canal != null) { _resetCanal(_canal); } } logger.Info(msg); logger.Debug("Request de Cancelamento Recebido:"); return(response); }
public FixResendResponse ExecutarFixResend(FixResendRequest request) { FixResendResponse response = new FixResendResponse(); CanalInfo _canal = null; StatusRoteamentoEnum status = StatusRoteamentoEnum.Sucesso; string msg = "Ordem Enviada"; logger.Debug("*** ExecutarFixResend()"); try { _canal = (CanalInfo)_canais[request.Bolsa + request.Canal]; if (_canal == null) { msg = "Nao ha canal configurado para " + request.Bolsa + "-" + request.Canal; status = StatusRoteamentoEnum.Erro; logger.Info(msg); response.DadosRetorno = new DadosAdmRetornoBase(); response.DadosRetorno.DataResposta = DateTime.Now; response.DadosRetorno.Erro = true; response.DadosRetorno.Ocorrencias.Add(msg); } else { if (_canal.roteador == null || _canal.Conectado == false) { status = StatusRoteamentoEnum.Erro; msg = "Nao ha canal conectado para " + request.Bolsa + "-" + request.Canal; logger.Info(msg); response.DadosRetorno = new DadosAdmRetornoBase(); response.DadosRetorno.DataResposta = DateTime.Now; response.DadosRetorno.Erro = true; response.DadosRetorno.Ocorrencias.Add(msg); } else { response = _canal.roteadorAdm.ExecutarFixResend(request); } } } catch (Exception ex) { logger.Error("Error ExecutarFixResend():" + ex.Message, ex); msg = "Error ExecutarFixResend(): " + ex.Message; status = StatusRoteamentoEnum.Erro; response.DadosRetorno = new DadosAdmRetornoBase(); response.DadosRetorno.DataResposta = DateTime.Now; response.DadosRetorno.Erro = true; response.DadosRetorno.Ocorrencias.Add(msg); if (_canal != null) { _resetCanal(_canal); } } logger.Debug("*** End of ExecutarOrdem()"); return(response); }