示例#1
0
        private void IntentarConfirmarRecepcionYConcertarOrden(NovedadFIXDTO concertacion)
        {
            AñadirTransaccionWrapperAMemoria(concertacion);

            var transaccionWrapper = TransaccionWrapperList.SingleOrDefault(a => a.Transaccion.ID == concertacion.IdTransaccion);

            if (transaccionWrapper == null)
            {
                return;
            }

            bool existePartida = false;

            if (transaccionWrapper.Concertaciones != null)
            {
                existePartida = transaccionWrapper.Concertaciones.Any(a => a.Partida == concertacion.Partida);
            }

            if (existePartida)
            {
                return;
            }

            _concertadorOrdenes.ConfirmarRecepcionYConcertarOrden(transaccionWrapper.Transaccion, concertacion);
        }
示例#2
0
        public void RealizarAccionDeOrden(NovedadFIXDTO concertacion)
        {
            try
            {
                switch (concertacion.TipoAccionOrden)
                {
                case TipoAccionOrden.CancelarOrden:
                    IntentarCancelarOrden(concertacion);
                    break;

                case TipoAccionOrden.ConfirmarRecepcion:
                    IntentarConfirmarRecepcionOrden(concertacion);
                    break;

                case TipoAccionOrden.Concertar:
                    IntentarConfirmarRecepcionYConcertarOrden(concertacion);
                    break;

                case TipoAccionOrden.ConfirmarRecepcionYConcertar:
                    IntentarConfirmarRecepcionYConcertarOrden(concertacion);
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void PedidoLectorQueueRedis(object source, ElapsedEventArgs e)
        {
            lock (_pedidoLectorQueueRedisLock)
            {
                try
                {
                    timerLectorQueueRedis.Enabled = false;
                    _interfacePresenter.MostrarMensaje("Leyendo cola de concertación");

                    var messages = _redisQueueConsumer.GetMessages();

                    if (messages == null)
                    {
                        timerLectorQueueRedis.Enabled = true;

                        return;
                    }

                    var redisMessagesToProcess = messages.ToArray();

                    _interfacePresenter.MostrarMensaje("Fin de lectura de cola de concertación");
                    _interfacePresenter.MostrarMensaje("Iniciando la decodificación de los mensajes...");

                    var msjsDecoded = new NovedadFIXDTO[redisMessagesToProcess.Length];

                    for (int i = 0; i < redisMessagesToProcess.Length; i++)
                    {
                        if (redisMessagesToProcess[i] == null)
                        {
                            continue;
                        }

                        msjsDecoded[i] = _messageDecoder.DecodificarMensaje(redisMessagesToProcess[i]);
                    }

                    _interfacePresenter.MostrarMensaje("Fin de la decodificación de los mensajes.");
                    _interfacePresenter.MostrarMensaje("Empezando a tomar acciones en base al tipo de ordenes recibidas...");

                    for (int i = 0; i < msjsDecoded.Length; i++)
                    {
                        if (msjsDecoded[i] == null)
                        {
                            continue;
                        }

                        _transaccionWrapperCRUDManager.RealizarAccionDeOrden(msjsDecoded[i]);
                    }

                    _interfacePresenter.MostrarMensaje("Acciones terminadas.");

                    timerLectorQueueRedis.Enabled = true;
                }
                catch (Exception ex)
                {
                }
            }
        }
示例#4
0
        private string ConstruirMsjNumeroPartidas(NovedadFIXDTO concertacion, TransaccionWrapper transaccionWrapper)
        {
            if (transaccionWrapper.Concertaciones.Any(a => a.Partida == concertacion.Partida))
            {
                return($"{concertacion.IdTransaccion} tiene las siguientes partidas en base de datos: {string.Join(",", transaccionWrapper.Concertaciones.Select(a => a.Partida))}");
            }

            return($"{concertacion.IdTransaccion} no tiene partidas en base de datos");
        }
示例#5
0
        private void IntentarConfirmarRecepcionOrden(NovedadFIXDTO concertacion)
        {
            AñadirTransaccionWrapperAMemoria(concertacion);

            var transaccionWrapper = TransaccionWrapperList.SingleOrDefault(a => a.Transaccion.ID == concertacion.IdTransaccion);

            if (transaccionWrapper == null)
            {
                return;
            }

            _concertadorOrdenes.ConfirmarRecepcionOrden(transaccionWrapper.Transaccion, concertacion);
        }
示例#6
0
        private void AñadirTransaccionWrapperAMemoria(NovedadFIXDTO concertacion)
        {
            var transaccion = ObtenerTransaccionEnBaseUltimoEstado(concertacion.IdTransaccion, concertacion.TipoAccionOrden);

            if (transaccion == null)
            {
                return;
            }

            TransaccionWrapperList.RemoveAll(a => a.Transaccion.ID == concertacion.IdTransaccion);

            TransaccionWrapperList.Add(
                new TransaccionWrapper
            {
                Transaccion    = transaccion,
                Concertaciones = ObtenerPartidasEnBd(concertacion.IdTransaccion)
            });
        }
示例#7
0
        private List <NovedadFIXDTO> ObtenerPartidasEnBd(int idTransaccion)
        {
            var concertaciones = new List <NovedadFIXDTO>();

            var partidas = _transaccionesServices.ObtenerPartidas(idTransaccion);

            if (partidas == null)
            {
                return(null);
            }

            foreach (var partida in partidas)
            {
                var concertacion = new NovedadFIXDTO();
                concertacion.Partida = partida;
                concertaciones.Add(concertacion);
            }

            return(concertaciones);
        }
        public NovedadFIXDTO DecodificarMensaje(string mensaje)
        {
            try
            {
                string[] campos        = null;
                int      idTransaccion = 0;

                campos = mensaje.Split('-');

                idTransaccion = ObtenerIdTransaccion(campos);

                var concertacion    = new NovedadFIXDTO();
                var tipoAccionOrden = (TipoAccionOrden)Convert.ToInt32(campos[0]);

                switch (tipoAccionOrden)
                {
                case TipoAccionOrden.CancelarOrden:
                    concertacion = IntentarCancelarOrden(idTransaccion, campos[2], mensaje, tipoAccionOrden);
                    break;

                case TipoAccionOrden.ConfirmarRecepcion:
                    concertacion = IntentarConfirmarRecepcionOrden(idTransaccion, campos, tipoAccionOrden);
                    break;

                case TipoAccionOrden.ConfirmarRecepcionYConcertar:
                case TipoAccionOrden.Concertar:
                    concertacion = IntentarConfirmarRecepcionYConcertarOrden(idTransaccion, campos, mensaje, tipoAccionOrden);
                    break;

                default:
                    throw new NotImplementedException();
                }

                return(concertacion);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }