Пример #1
0
        /// <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>();

                Gradual.Core.Ordens.Lib.IServicoOrdens lOrdem = Ativador.Get <Gradual.Core.Ordens.Lib.IServicoOrdens>();

                Dictionary <string, string> lCriticas = new Dictionary <string, string>();

                ExecutarCancelamentoOrdemResponse lResponse = new ExecutarCancelamentoOrdemResponse();

                string[] Ordens = lIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                string[] Portas = lPortas.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                OrdemCancelamentoInfo info;

                EnviarCancelamentoOrdemRequest lRequestCancel;

                for (int i = 0; i < Ordens.Length; i++)
                {
                    info = new  OrdemCancelamentoInfo();

                    info.OrigClOrdID = Ordens[i];

                    info.ChannelID = int.Parse(Portas[i]);

                    lRequestCancel = new EnviarCancelamentoOrdemRequest()
                    {
                        ClienteCancelamentoInfo = info
                    };

                    lResponse = lOrdem.CancelarOrdem(lRequestCancel);

                    if (lResponse.DadosRetorno.StatusResposta != StatusRoteamentoEnum.Sucesso)
                    {
                        lCriticas.Add(info.OrderID, lResponse.DadosRetorno.StackTrace);
                    }
                }

                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);
        }
Пример #2
0
        /// <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 lAccounts = Request.Form["Accounts"];

                string lSymbols = Request.Form["Symbols"];

                string lMensagem = "";

                List <string> lstIdOrdem = new List <string>();

                //IServicoOrdens lOrdem = Ativador.Get<IServicoOrdens>();

                Gradual.Core.Ordens.Lib.IServicoOrdens lOrdem = Ativador.Get <Gradual.Core.Ordens.Lib.IServicoOrdens>();

                Dictionary <string, string> lCriticas = new Dictionary <string, string>();

                ExecutarCancelamentoOrdemResponse lResponse = new ExecutarCancelamentoOrdemResponse();

                string[] Ordens = lIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                string[] Portas = lPortas.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                string[] Accounts = lAccounts.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                string[] Symbols = lSymbols.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                //OrdemCancelamentoInfo info;

                //EnviarCancelamentoOrdemRequest lRequestCancel;

                for (int i = 0; i < Ordens.Length; i++)
                {
                    IFixServerLowLatencyAdm fixAdm = Ativador.Get <IFixServerLowLatencyAdm>();
                    OrderCancelingRequest   req    = new OrderCancelingRequest();

                    req.Account     = Accounts[i];
                    req.OrigClOrdID = Ordens[i];
                    req.ChannelID   = Portas[i];
                    req.Symbol      = Symbols[i];

                    OrderCancelingResponse resp = fixAdm.CancelOrder(req);

                    /*
                     * info = new  OrdemCancelamentoInfo();
                     *
                     * info.OrigClOrdID = Ordens[i];
                     *
                     * info.ChannelID = int.Parse( Portas[i]);
                     *
                     * lRequestCancel = new EnviarCancelamentoOrdemRequest()
                     * {
                     *  ClienteCancelamentoInfo = info
                     * };
                     *
                     * lResponse = lOrdem.CancelarOrdem(lRequestCancel);
                     */
                    if (resp.StatusResponse == 0 && !string.IsNullOrEmpty(resp.DescricaoErro))
                    {
                        lCriticas.Add(req.OrigClOrdID, resp.DescricaoErro);
                    }
                }

                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);
        }