/// <summary>
        /// Obtiene los permisos asignados al usuario segun sistema
        /// </summary>
        /// <param name="usuario">Usuario</param>
        /// <param name="codigoSistema">Código del Sistema</param>
        /// <returns>Cuenta de Usuario</returns>
        public CuentaUsuario ObtenerPermisos(CuentaUsuario usuario, string codigoSistema)
        {
            SeguridadServiceClient seguridadService = new SeguridadServiceClient();
            var lsSystem = seguridadService.List_SystemSRA_x_Token(codigoSistema, usuario.Codigo);

            if (lsSystem.Length > 0)
            {
                var sistema         = lsSystem.FirstOrDefault();
                var perfile         = seguridadService.GetUserAccessService(usuario.Alias, 0, sistema.N_ID_SYSTEM);
                var listCompanyUser = seguridadService.List_CompanyXsLogin(usuario.Alias);

                usuario.Perfil           = perfile.S_NAME_PROFILE;
                usuario.CodigoSistemaSra = sistema.N_ID_SYSTEM;

                usuario.Modulos = new List <Modulo>();
                var modulo         = new Modulo();
                var vistasPermisos = new List <Vista>();
                modulo.Vistas = vistasPermisos;

                usuario.Modulos.Add(modulo);

                foreach (var rol in perfile.ROLES)
                {
                    foreach (var permiso in rol.PERMISOS)
                    {
                        var  listaAgrupadoPorOpcion = rol.PERMISOS.Where(x => x.N_ID_OPTION == permiso.E_OptionM.N_ID_OPTION).ToList();
                        bool lectura      = false;
                        bool escritura    = false;
                        bool controlTotal = false;

                        foreach (var item in listaAgrupadoPorOpcion)
                        {
                            switch (item.N_ID_ACTION)
                            {
                            case 1:
                                lectura = true;
                                break;

                            case 2:
                                escritura = true;
                                break;

                            case 3:
                                controlTotal = true;
                                break;
                            }
                        }

                        var controles = new List <Control>();
                        controles.Add(new Control()
                        {
                            Lectura      = lectura,
                            Escritura    = escritura,
                            ControlTotal = controlTotal
                        });

                        vistasPermisos.Add(new Vista()
                        {
                            Nombre    = permiso.E_OptionM.S_NAME, //Asi es lo correcto.
                            URL       = permiso.E_OptionM.S_URL_OPTION,
                            Controles = controles
                        });
                    }
                }

                usuario.ListEmpresa = new List <Empresa>();
                foreach (var item in listCompanyUser)
                {
                    Empresa obj = new Empresa();
                    obj.NombreEmpresa = item.S_NAME;
                    obj.Ruc           = item.N_RUC;
                    obj.AreaNegocio   = item.S_NAME_SHORT;
                    usuario.ListEmpresa.Add(obj);
                }
            }
            return(usuario);
        }
Esempio n. 2
0
        /// <summary>
        /// Obtiene los permisos asignados al usuario segun sistema
        /// </summary>
        /// <param name="usuario">Usuario</param>
        /// <param name="codigoSistema">Código del Sistema</param>
        /// <returns>Cuenta de Usuario</returns>
        public JsonResult ObtenerPermisos(string perfiles)
        {
            ProcessResult <string> resultado = new ProcessResult <string>();

            var refrescar     = false;
            var usuario       = HttpGyMSessionContext.CurrentAccount();
            var codigoSistema = ConfigurationManager.AppSettings["CLIENT_SITE_TOKEN"];
            SeguridadServiceClient seguridadService = new SeguridadServiceClient();
            var lsSystem = seguridadService.List_SystemSRA_x_Token(codigoSistema, usuario.Codigo);

            if (lsSystem.Length > 0)
            {
                var sistema = lsSystem.FirstOrDefault();
                var perfile = seguridadService.GetUserAccessService(usuario.Alias, 0, sistema.N_ID_SYSTEM);
                usuario.Perfil           = perfile.S_NAME_PROFILE;
                usuario.CodigoSistemaSra = sistema.N_ID_SYSTEM;

                usuario.Modulos = new List <Modulo>();
                var modulo         = new Modulo();
                var vistasPermisos = new List <Vista>();
                modulo.Vistas = vistasPermisos;

                usuario.Modulos.Add(modulo);

                foreach (var rol in perfile.ROLES)
                {
                    foreach (var permiso in rol.PERMISOS)
                    {
                        var  listaAgrupadoPorOpcion = rol.PERMISOS.Where(x => x.N_ID_OPTION == permiso.E_OptionM.N_ID_OPTION).ToList();
                        bool lectura      = false;
                        bool escritura    = false;
                        bool controlTotal = false;

                        foreach (var item in listaAgrupadoPorOpcion)
                        {
                            switch (item.N_ID_ACTION)
                            {
                            case 1:
                                lectura = true;
                                break;

                            case 2:
                                escritura = true;
                                break;

                            case 3:
                                controlTotal = true;
                                break;
                            }
                        }

                        var controles = new List <Control>();
                        controles.Add(new Control()
                        {
                            Lectura      = lectura,
                            Escritura    = escritura,
                            ControlTotal = controlTotal
                        });

                        vistasPermisos.Add(new Vista()
                        {
                            Nombre    = permiso.S_NAME,
                            URL       = permiso.E_OptionM.S_URL_OPTION,
                            Controles = controles
                        });
                    }
                }
            }

            if (usuario != null)
            {
                HttpGyMSessionContext.SetAccount(usuario);
                CustomHtmlHelper.AplicarMenu(usuario);
            }

            //Obtenemos los perfiles
            var usuarioSRA = seguridadService.GetUserByLoginAD(usuario.Alias, usuario.Dominio);

            if (usuarioSRA != null)
            {
                var perfilesOriginal = usuarioSRA.PERFILES.Where(p => p.S_TOKEN == ConfigurationManager.AppSettings["CLIENT_SITE_TOKEN"].ToString()).ToList();

                if (!string.IsNullOrEmpty(perfiles))
                {
                    string[] perfilesArray = perfiles.Split(',');

                    foreach (var item in perfilesArray)
                    {
                        if (perfilesOriginal.Where(x => x.N_ID_PROFILE.ToString() == item).FirstOrDefault() != null)
                        {
                            refrescar = true;
                        }
                    }

                    if (refrescar == false)
                    {
                        foreach (var item in perfilesArray)
                        {
                            if (item.Trim() == usuarioSRA.ID_USER.ToString())
                            {
                                refrescar = true;
                            }
                        }
                    }
                }
            }

            resultado.IsSuccess = true;
            resultado.Result    = refrescar.ToString();
            return(Json(resultado));
        }