// GET: Perfiles/Create
        public IActionResult Create()
        {
            var i = (ClaimsIdentity)User.Identity;

            if (i.IsAuthenticated)
            {
                var permisos = i.Claims.Where(c => c.Type == "Perfiles").Select(c => c.Value).SingleOrDefault().Split(";");

                if (Convert.ToBoolean(permisos[1]))
                {
                    List <Menu> menus  = _context.Menu.Include(m => m.SubMenu).Where(m => m.CodigoMenu == null).ToList();
                    Perfil      perfil = new Perfil
                    {
                        PerfilDetalle = new List <PerfilDetalle>()
                    };
                    foreach (Menu menu in menus.Where(m => m.CodigoMenu == null))
                    {
                        PerfilDetalle detalle = new PerfilDetalle
                        {
                            //CodigoCompania = CodigoCompania,
                            CodigoMenu = menu.Codigo,
                            Menu       = new Menu()
                        };
                        detalle.Menu.Codigo     = menu.Codigo;
                        detalle.Menu.CodigoMenu = menu.CodigoMenu;
                        detalle.Menu.Nombre     = menu.Nombre;
                        detalle.Menu.Visible    = menu.Visible;
                        detalle.Menu.Ver        = menu.Ver;
                        detalle.Menu.Crear      = menu.Crear;
                        detalle.Menu.Editar     = menu.Editar;
                        detalle.Menu.Eliminar   = menu.Eliminar;
                        detalle.Menu.Exportar   = menu.Exportar;
                        detalle.Menu.Importar   = menu.Importar;
                        perfil.PerfilDetalle.Add(detalle);
                        foreach (Menu subMenu in menu.SubMenu.OrderBy(s => s.Orden))
                        {
                            PerfilDetalle detalle1 = new PerfilDetalle
                            {
                                //CodigoCompania = CodigoCompania,
                                CodigoMenu = subMenu.Codigo,
                                Menu       = new Menu()
                            };
                            detalle1.Menu.Codigo     = subMenu.Codigo;
                            detalle1.Menu.CodigoMenu = subMenu.CodigoMenu;
                            detalle1.Menu.Nombre     = subMenu.Nombre;
                            detalle1.Menu.Visible    = subMenu.Visible;
                            detalle1.Menu.Ver        = subMenu.Ver;
                            detalle1.Menu.Crear      = subMenu.Crear;
                            detalle1.Menu.Editar     = subMenu.Editar;
                            detalle1.Menu.Eliminar   = subMenu.Eliminar;
                            detalle1.Menu.Exportar   = subMenu.Exportar;
                            detalle1.Menu.Importar   = subMenu.Importar;
                            perfil.PerfilDetalle.Add(detalle1);
                        }
                    }
                    return(View(perfil));
                }
                else
                {
                    return(Redirect("../Perfiles"));
                }
            }
            else
            {
                return(Redirect("../Identity/Account/Login"));
            }
        }
        // GET: Perfiles/Edit/5
        public async Task <IActionResult> Edit(string codigo)
        {
            var i = (ClaimsIdentity)User.Identity;

            if (i.IsAuthenticated)
            {
                var permisos = i.Claims.Where(c => c.Type == "Perfiles").Select(c => c.Value).SingleOrDefault().Split(";");
                codigo = Encriptacion.Decrypt(codigo);
                if (Convert.ToBoolean(permisos[2]))
                {
                    if (codigo == null)
                    {
                        return(NotFound());
                    }

                    var perfil = await _context.Perfil.Include(f => f.PerfilDetalle).SingleOrDefaultAsync(f => f.Codigo == codigo);

                    if (perfil == null)
                    {
                        return(NotFound());
                    }

                    List <Menu> menus = _context.Menu.Include(m => m.SubMenu).Where(m => m.CodigoMenu == null).ToList();

                    Perfil p = new Perfil
                    {
                        Codigo          = perfil.Codigo,
                        Nombre          = perfil.Nombre,
                        FechaCreacion   = perfil.FechaCreacion,
                        UsuarioCreacion = perfil.UsuarioCreacion,
                        PerfilDetalle   = new List <PerfilDetalle>()
                    };
                    foreach (Menu menu in menus.Where(m => m.CodigoMenu == null))
                    {
                        var           a       = perfil.PerfilDetalle.Single(f => f.CodigoMenu == menu.Codigo);
                        PerfilDetalle detalle = new PerfilDetalle
                        {
                            CodigoPerfil = a.CodigoPerfil,
                            CodigoMenu   = a.CodigoMenu,
                            Menu         = new Menu()
                        };
                        detalle.Menu.Codigo     = a.Menu.Codigo;
                        detalle.Menu.CodigoMenu = menu.CodigoMenu;
                        detalle.Menu.Nombre     = menu.Nombre;
                        detalle.Menu.Visible    = menu.Visible;
                        detalle.Menu.Ver        = menu.Ver;
                        detalle.Menu.Crear      = menu.Crear;
                        detalle.Menu.Editar     = menu.Editar;
                        detalle.Menu.Eliminar   = menu.Eliminar;
                        detalle.Menu.Exportar   = menu.Exportar;
                        detalle.Menu.Importar   = menu.Importar;
                        p.PerfilDetalle.Add(detalle);
                        foreach (Menu subMenu in menu.SubMenu.OrderBy(s => s.Orden))
                        {
                            var           b        = perfil.PerfilDetalle.Single(f => f.CodigoMenu == subMenu.Codigo);
                            PerfilDetalle detalle1 = new PerfilDetalle
                            {
                                CodigoPerfil = b.CodigoPerfil,
                                CodigoMenu   = b.CodigoMenu,
                                Ver          = b.Ver,
                                Crear        = b.Crear,
                                Editar       = b.Editar,
                                Eliminar     = b.Eliminar,
                                Exportar     = b.Exportar,
                                Importar     = b.Importar,
                                Menu         = new Menu
                                {
                                    Codigo     = subMenu.Codigo,
                                    CodigoMenu = subMenu.CodigoMenu,
                                    Nombre     = subMenu.Nombre,
                                    Visible    = subMenu.Visible,
                                    Ver        = subMenu.Ver,
                                    Crear      = subMenu.Crear,
                                    Editar     = subMenu.Editar,
                                    Eliminar   = subMenu.Eliminar,
                                    Exportar   = subMenu.Exportar,
                                    Importar   = subMenu.Importar
                                }
                            };
                            p.PerfilDetalle.Add(detalle1);
                        }
                    }

                    return(View(p));
                }
                else
                {
                    return(Redirect("../Perfiles"));
                }
            }
            else
            {
                return(Redirect("../Identity/Account/Login"));
            }
        }