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