Ejemplo n.º 1
0
        public OrderCancelingResponse CancelOrder(OrderCancelingRequest req)
        {
            OrderCancelingResponse resp = new OrderCancelingResponse();

            try
            {
                if (null != _lstfixInitiator)
                {
                    // Buscar o FixInitiator de acordo com o canal
                    int          canal = Convert.ToInt32(req.ChannelID);
                    FixInitiator item  = _lstfixInitiator.FirstOrDefault(x => x.Canal.ToString() == req.ChannelID);
                    if (null != item)
                    {
                        item.CancelOrderFromIntranet(req.Account, req.OrigClOrdID, req.ExchangeNumberID, req.Symbol);
                        resp.StatusResponse = 1;
                    }
                    else
                    {
                        resp.StatusResponse = 0;
                        resp.DescricaoErro  = "Canal não encontrado para efetuar cancelamento da oferta";
                    }
                }
                else
                {
                    resp.StatusResponse = 0;
                    resp.DescricaoErro  = "Lista de Initiators não definida";
                }
                return(resp);
            }
            catch (Exception ex)
            {
                logger.Error("CancelOrder(): Problemas no cancelamento da ordem: " + ex.Message, ex);
                resp.StatusResponse = 0;
                resp.StackTrace     = ex.StackTrace;
                resp.DescricaoErro  = ex.Message;
            }
            return(resp);
        }
Ejemplo n.º 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);
        }