public String[,] CrearArrayVentas(DashboardVO dashboardVO) { OperacionesDAL operacionesDAL = new OperacionesDAL(); String[,] arrayCom = operacionesDAL.CrearArrayVentas(dashboardVO); return(arrayCom); }
public static void ValidarTopes(decimal cantidad, LimitesPorPersonaEntity limite) { if (cantidad > limite.Tope) { throw new M4TraderApplicationException(CodigosMensajes.FE_USUARIO_BLOQUEADO_PARA_OPERAR, "Error el usr supero el monto establecido por el limite :" + limite.Tope.ToString()); } decimal cantidadoperado = OperacionesDAL.ObtenerCantidadOperda(limite); if (cantidadoperado + cantidad > limite.Tope) { throw new M4TraderApplicationException(CodigosMensajes.FE_USUARIO_BLOQUEADO_PARA_OPERAR, string.Format("El usr esta operando por un total de {0} pero ya opero por {1}, con lo cual solo puede realizar una operación por un monto de {2} o inferior ", (cantidadoperado + cantidad).ToString(), cantidadoperado.ToString(), (limite.Tope - (cantidadoperado + cantidad)).ToString())); } }
public static string ConcertarOperacion(OperacionEntity operacion) { List <MovimientosSaldos> movimientosSaldo = new List <MovimientosSaldos>(); LimitesPorPersonaEntity limiteComprador = new LimitesPorPersonaEntity(); LimitesPorPersonaEntity limiteVendedor = new LimitesPorPersonaEntity(); ValidarRestriccionesDeOperacion(operacion, ref limiteComprador, ref limiteVendedor); //Generar movimiento Saldo movimientosSaldo = TransaccionesHelper.CrearMovimimientosSaldos(operacion); movimientosSaldo.AddRange(TransaccionesHelper.CrearMovimimientosComisiones(operacion)); //ValidoSaldos ValidarSaldos(movimientosSaldo.Where(x => x.IdTipoMovimiento == TipoMovimientos.MonedaDebito).ToList()); //Insertar operacion y movimientos e impacto en saldos using (ReadCommittedTransactionScope ts = new ReadCommittedTransactionScope()) { MovimientosSaldos movDebitoComprador = movimientosSaldo.Where(x => x.IdTipoMovimiento == TipoMovimientos.MonedaDebito && x.IdPersona == operacion.IdPersonaComprador).FirstOrDefault(); MovimientosSaldos movDebitoVendedor = movimientosSaldo.Where(x => x.IdTipoMovimiento == TipoMovimientos.MonedaDebito && x.IdPersona == operacion.IdPersonaVendedor).FirstOrDefault(); byte[] ultimaactualizacionsaldocomprador = SaldosDAL.ObtenerUltimaActualizacionSaldo(movDebitoComprador.IdMoneda, movDebitoComprador.IdPersona); byte[] ultimaactualizacionsaldovendedor = SaldosDAL.ObtenerUltimaActualizacionSaldo(movDebitoVendedor.IdMoneda, movDebitoVendedor.IdPersona); CheckConcurrenciaSaldo(ultimaactualizacionsaldocomprador, operacion.CompraVenta == "C" ? operacion.TimestampSaldoComprador : operacion.TimestampSaldoVendedor); CheckConcurrenciaSaldo(ultimaactualizacionsaldovendedor, operacion.CompraVenta == "C" ? operacion.TimestampSaldoVendedor : operacion.TimestampSaldoComprador); OperacionesDAL.CrearOperacion(operacion); movimientosSaldo = movimientosSaldo.Select(c => { c.IdPropietario = operacion.IdOperacion; return(c); }).ToList(); SaldosDAL.GenerarMovimientos(movimientosSaldo); SaldosDAL.ActualizarSaldos(movimientosSaldo); if (limiteComprador != null) { OperacionesDAL.CrearRestricciones(operacion, limiteComprador); } if (limiteComprador != null) { OperacionesDAL.CrearRestricciones(operacion, limiteVendedor); } ts.Complete(); } NotificacionesEntity noti = new NotificacionesEntity(); noti.Fecha = DateTime.Now; noti.IdDestinatario = operacion.IdPersonaComprador; noti.IdTipoNotificacion = (byte)TipoNotificacionesMensajeria.Successfully; noti.IdSubTipoNotificacion = (byte)SubTipoNotificacionesMensajeria.OperacionRealizada; noti.Leido = false; noti.Mensaje = string.Format("Se registro la operación {0} de forma satisfactoaria e impacto en Saldos ", operacion.NroOperacion); NotificacionesHelperService.Instance.EnQueueMessage(noti); LoggingHelper.Instance.AgregarLog(new LogBitacoraOperacionEntity(operacion.IdOperacion, LogCodigoAccion.CrearOperacion, "Creación de la Operacion Nro:" + operacion.NroOperacion)); MessageHelper.InformarNuevoMensaje(operacion.IdPersonaComprador, TipoNotificacionesMensajeria.Successfully.ToString(), SubTipoNotificacionesMensajeria.OperacionRealizada.ToString(), "Se registro la operación de forma satisfactoaria e impacto en Saldos: " + operacion.NroOperacion, DateTime.Now); return("Se registro la operación de forma satisfactoaria e impacto en Saldos: " + operacion.NroOperacion); }
public OperacionesBLL() { this.dataAccess = new OperacionesDAL(); }