示例#1
0
        public DTOPortfolio GetPortfolioByCodigo(string codigo)
        {
            string       keyCache     = KEY_PORTFOLIO_CODIGO + "#" + codigo;
            DTOPortfolio dtoPortfolio = CacheLayer.Get <DTOPortfolio>(keyCache);

            if (dtoPortfolio == null)
            {
                using (OrdenesContext mc = new OrdenesContext())
                {
                    dtoPortfolio = (from p in mc.Portfolios
                                    where p.Codigo == codigo
                                    select new DTOPortfolio()
                    {
                        IdPortfolio = p.IdPortfolio,
                        Nombre = p.Nombre,
                        Codigo = p.Codigo,
                        EsDeSistema = p.EsDeSistema
                    }).FirstOrDefault();
                }
                if (dtoPortfolio != null)
                {
                    CacheLayer.Add(dtoPortfolio, keyCache);
                }
            }

            return(dtoPortfolio);
        }
        public static string get(InCourseRequest inCourseRequest, string WebUrlName)
        {
            DateTime fechaDelSistema = DateTime.Today;
            Guid     guidId          = inCourseRequest.SecurityTokenId;

            SessionHelper.GetSesionExistente(guidId);
            MAEUserSession userSession     = MAEUserSession.Instancia;
            var            beEstadoSistema = CachingManager.Instance.GetFechaSistema();

            if (beEstadoSistema != null)
            {
                fechaDelSistema           = beEstadoSistema.FechaSistema.Date;
                userSession.EstadoSistema = (beEstadoSistema.EstadoAbierto) ? "Abierto" : "Cerrado";
            }
            var          Permissions      = CachingManager.Instance.GetAllPermisosByIdUsuario(userSession.IdUsuario);
            DTOPortfolio DefaultPortfolio = CachingManager.Instance.GetPortfolioDefaultByIdUsuario(userSession.IdUsuario);
            string       CodigoPortfolio  = DefaultPortfolio?.Codigo;

            OrdenesAppContext context = new  OrdenesAppContext()
            {
                UserName                = userSession.UserName.ToString(),
                TipoParticipante        = UserHelper.getNombreTipoPersona(userSession.IdTipoPersona),
                SecurityTokenId         = userSession.ID.ToString(),
                WebUrlName              = WebUrlName,
                MaeAppName              = "Ordenes_v_500",
                EstadoSistema           = beEstadoSistema,
                FechaDelSistema         = fechaDelSistema,
                FormatoFechaCorta       = "dd/MM/yyyy",
                FormatoFechaCortaMoment = "DD/MM/YYYY",
                FormatoFechaHora        = "dd/MM/yyyy HH:mm",
                Global                    = userSession.Global,
                PublicKey                 = userSession.PublicKey,
                IdUsuario                 = userSession.IdUsuario,
                IdPersona                 = userSession.IdPersona,
                IdTipoPersona             = userSession.IdTipoPersona,
                ClientSecret              = userSession.ClientSecret,
                ServerPublic              = userSession.ServerPublic,
                Nonce                     = userSession.Nonce,
                JavascriptAllowedCommands = userSession.JavascriptAllowedCommands,
                PermisosUsuario           = userSession.PermisosUsuario,
                CodigoPortfolio           = CodigoPortfolio,
                LanguageTag               = userSession.ConfiguracionRegional,
                LoginRealizado            = userSession.LoginRealizado
            };



            var s = JsonConvert.SerializeObject(context, new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.Objects,
                TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
            });

            return(s);
        }
示例#3
0
        public override object ExecuteCommand(InCourseRequest inCourseRequest)
        {
            DTOPortfolio favorito         = CachingManager.Instance.GetPortfolioByCodigo("F" + IdUsuario.ToString());
            byte         idPlazo          = (byte)CachingManager.Instance.GetAllPlazos().Find(x => x.Descripcion == Plazo).IdPlazo;
            PortfolioComposicionEntity pc = CachingManager.Instance.GetPortfolioComposicionByPortfolioAndProducto(favorito.IdPortfolio, IdProducto, idPlazo);

            if (pc != null)
            {
                context.PortfoliosComposicion.Remove(pc);
            }

            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(new { Ok = true }));
        }
示例#4
0
        public override object ExecuteCommand(InCourseRequest inCourseRequest)
        {
            DTOPortfolio    favorito  = CachingManager.Instance.GetPortfolioByCodigo("F" + IdUsuario.ToString());
            int             idPlazo   = CachingManager.Instance.GetAllPlazos().Find(x => x.Descripcion == Plazo).IdPlazo;
            PortfolioEntity portfolio = new PortfolioEntity();

            if (favorito == null)
            {
                portfolio.Codigo      = "F" + IdUsuario.ToString();
                portfolio.EsDeSistema = false;
                portfolio.Nombre      = "Favorito_" + IdUsuario.ToString();
                portfolio.EsFavorito  = true;

                var portfolioComposicion = new PortfolioComposicionEntity()
                {
                    IdMercado  = 1,
                    IdPlazo    = (byte)idPlazo,
                    IdProducto = IdProducto,
                    Orden      = 1,
                    Portfolio  = portfolio
                };

                var portfolioUsuario = new PortfolioUsuarioEntity()
                {
                    IdUsuario = IdUsuario,
                    Portfolio = portfolio
                };

                this.AgregarAlContextoParaAlta(portfolio);
                this.AgregarAlContextoParaAlta(portfolioUsuario);
                this.AgregarAlContextoParaAlta(portfolioComposicion);
            }
            else
            {
                var portfolioComposicion = new PortfolioComposicionEntity()
                {
                    IdMercado   = 1,
                    IdPlazo     = (byte)idPlazo,
                    IdProducto  = IdProducto,
                    Orden       = 1,
                    IdPortfolio = favorito.IdPortfolio
                };

                this.AgregarAlContextoParaAlta(portfolioComposicion);
            }

            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(new { Ok = true }));
        }
示例#5
0
        public DTOPortfolio GetPortfolioDefaultByIdUsuario(int idUsuario)
        {
            string       keyCache     = KEY_PORTFOLIO_DEFAULT_USUARIO + "#" + idUsuario;
            DTOPortfolio dtoPortfolio = CacheLayer.Get <DTOPortfolio>(keyCache);

            if (dtoPortfolio == null)
            {
                using (OrdenesContext mc = new OrdenesContext())
                {
                    dtoPortfolio = (from p in mc.Portfolios
                                    join pu in mc.PortfoliosUsuario on p.IdPortfolio equals pu.IdPortfolio
                                    where pu.IdUsuario == idUsuario &&
                                    pu.PorDefecto
                                    select new DTOPortfolio()
                    {
                        IdPortfolio = p.IdPortfolio,
                        Nombre = p.Nombre,
                        Codigo = p.Codigo,
                        EsDeSistema = p.EsDeSistema
                    }).FirstOrDefault();
                    if (dtoPortfolio == null)
                    {
                        dtoPortfolio = (from p in mc.Portfolios
                                        join pu in mc.PortfoliosUsuario on p.IdPortfolio equals pu.IdPortfolio
                                        where pu.IdUsuario == idUsuario
                                        select new DTOPortfolio()
                        {
                            IdPortfolio = p.IdPortfolio,
                            Nombre = p.Nombre,
                            Codigo = p.Codigo,
                            EsDeSistema = p.EsDeSistema
                        }).FirstOrDefault();
                    }
                }
                if (dtoPortfolio != null)
                {
                    CacheLayer.Add(dtoPortfolio, keyCache);
                }
            }

            return(dtoPortfolio);
        }
示例#6
0
        private static UserValido ValidateUser(string UserName, string Password, InfoCliente infoCliente, TipoAplicacion tipoAplicacion, string NombreAgencia = null, bool passHashed = false, bool isValid = false)
        {
            var configuracionSeguridad = CachingManager.Instance.GetConfiguracionSeguridad();

            Guid       tokenGuid;
            UserValido response = new UserValido();

            response.IsOK = false;
            try
            {
                if (string.IsNullOrEmpty(UserName) || string.IsNullOrEmpty(Password))
                {
                    response.MensajeError = "El nombre de usuario y la contraseña no pueden estar vacíos.";
                    response.IsOK         = false;
                    return(response);
                }

                tokenGuid = DoLogIn(UserName, Password, infoCliente, tipoAplicacion, NombreAgencia, passHashed, isValid);

                if (tokenGuid != Guid.Empty)
                {
                    response.IsOK      = true;
                    response.TokenGuid = tokenGuid.ToString();
                    int          IdUsuario           = CachingManager.Instance.GetUsuarioByUsername(UserName).IdUsuario;
                    DTOPortfolio portfolioPorDefecto = CachingManager.Instance.GetPortfolioDefaultByIdUsuario(IdUsuario);
                    if (portfolioPorDefecto == null)
                    {
                        response.MensajeError = "El Usuario debe tener al menos un portfolio por defecto!.";
                        response.IsOK         = false;
                        return(response);
                    }
                }
                else
                {
                    response.MensajeError = "Verifique el nombre de usuario y contraseña.";
                    response.IsOK         = false;
                }
            }
            catch (M4TraderApplicationException ex)
            {
                if (ex.Codigo == "W100002")
                {
                    response.MensajeError    = "Por políticas de seguridad debe cambiar la contraseña.";
                    response.IsOK            = false;
                    response.NeedNewPassword = true;
                    return(response);
                }
                else
                {
                    response.MensajeError = ex.Message;
                    response.IsOK         = false;
                }
            }
            catch (SessionException ex)
            {
                if (ex.Code == "W100002")
                {
                    response.NeedNewPassword = true;
                    response.MensajeError    = "Por políticas de seguridad debe cambiar la contraseña.";
                    response.IsOK            = false;
                    return(response);
                }
                else
                {
                    response.MensajeError = ex.Message;
                    response.IsOK         = false;
                }
            }
            catch (Exception ex)
            {
                response.MensajeError = ex.Message;
                response.IsOK         = false;
            }
            return(response);
        }