public override object ExecuteCommand(InCourseRequest inCourseRequest)
        {
            OrdenOperacionEntity request = new OrdenOperacionEntity()
            {
                IdOrden             = IdOrden,
                Cantidad            = Cantidad,
                Precio              = Precio,
                NroOperacionMercado = NroOperacionMercado
            };

            // Cambio de Estado
            if (Orden == null)
            {
                Orden = OrdenesDAL.ObtenerOrdenbyID(IdOrden);
            }
            Orden.IdEstado = (Cantidad == Orden?.Cantidad && Remanente == 0) ? (byte)EstadoOrden.Aplicada : (Remanente > 0 && Remanente == Cantidad) ? (byte)EstadoOrden.Aplicada : (byte)EstadoOrden.AplicadaParcial;

            using (ReadCommittedTransactionScope scope = new ReadCommittedTransactionScope(TransactionScopeOption.Required))
            {
                // Insertar OrdenOperacion
                OrdenesDAL.InsertarOrdenOperacion(request, Orden.IdEstado, Orden.NumeroOrdenMercado);

                Orden.IdMercado = CachingManager.Instance.GetAllMercados().FirstOrDefault(x => x.EsInterno).IdMercado;
                OrdenesDAL.ActualizarOrden(Orden);

                scope.Complete();
            }

            LoggingHelper.Instance.AgregarLog(new LogBitacoraOrdenEntity(request.IdOrden, LogCodigoAccion.CierreMercadoInterno, "Cierre de Mercado Interno #:" + request.NroOperacionMercado, (EstadoOrden)Orden.IdEstado, null, SourceEnum.Mobile));

            return(null);
        }
        public object Execute(Query query)
        {
            CustomQueryReturn  cqr = new CustomQueryReturn();
            OperationStatusDto operationStatusDto = new OperationStatusDto();

            if (query.Filters.Find(x => x.Key == "ordenNumber").Value != null)
            {
                string ordenNumber = query.Filters.Find(x => x.Key == "ordenNumber").Value.ToString();
                operationStatusDto = OrdenesDAL.ObtenerEtadoOperacion(ordenNumber);
            }
            cqr.Data      = new object[1];
            cqr.Data[0]   = operationStatusDto;
            cqr.TotalRows = 1;

            return(cqr);
        }
        public override void Validate()
        {
            Orden = OrdenesDAL.ObtenerOrdenbyID(IdOrden);

            if (Remanente > 0 && Cantidad > Remanente)
            {
                keyArray        = new KeyArray();
                keyArray.Codigo = CodigosMensajes.ERR_CANTIDAEXCEDEORDEN;
                keyArray.Parametros.Add(NombreEntidad);
                fe.DataValidations.Add(keyArray);
                valida   = false;
                keyArray = new KeyArray();
            }

            if (Orden.IdEstado != (int)EstadoOrden.AplicadaParcial && Orden.IdEstado != (int)EstadoOrden.Ingresada)
            {
                keyArray        = new KeyArray();
                keyArray.Codigo = CodigosMensajes.FE_ESTADO_ORDEN_NO_VALIDO;
                keyArray.Parametros.Add(NombreEntidad);
                fe.DataValidations.Add(keyArray);
                valida   = false;
                keyArray = new KeyArray();
            }

            var coleccion = (from m in context.Mercado where m.EsInterno select m);

            if (!coleccion.Any())
            {
                keyArray        = new KeyArray();
                keyArray.Codigo = CodigosMensajes.FE_NO_EXISTE_MERCADO_INTERNO;
                keyArray.Parametros.Add(NombreEntidad);
                fe.DataValidations.Add(keyArray);
                valida   = false;
                keyArray = new KeyArray();
            }


            if (!valida)
            {
                throw fe;
            }
        }