public async Task <ActionResult> AdicionarEmpresa(long id) { List <GroupItemViewModel> gruposPermissoesUsuario = (await UserManager.GetUserRolesByIdEmpresa(User.Identity.GetUserId(), id).ConfigureAwait(false)) .OrderBy(x => x).Select(x => new GroupItemViewModel { IsSelected = false, Name = x }).ToList(); if (gruposPermissoesUsuario.Any(x => x.Name == "Administrador")) { gruposPermissoesUsuario = RoleManager.Roles.OrderBy(x => x.Name).Select(x => new GroupItemViewModel { IsSelected = false, Name = x.Name }).ToList(); } var perfilImpressoras = PerfilImpressorasList(id); var empresasGrupos = new EmpresaGrupoViewModel { IdEmpresa = id, Nome = Empresas.First(f => f.IdEmpresa == id).Nome, Grupos = gruposPermissoesUsuario, PerfilImpressora = perfilImpressoras }; var list = new List <EmpresaGrupoViewModel> { empresasGrupos }; return(PartialView("_EmpresaGrupo", list)); }
public async Task <ActionResult> Edit(string id) { ViewBag.Empresas = _Empresas; ApplicationUser user = await UserManager.FindByNameAsync(id).ConfigureAwait(false); if (user == null) { throw new HttpException(404, "Not found"); } var empresas = _unitOfWork.UsuarioEmpresaRepository.GetAllEmpresasByUserId(user.Id); empresas = Empresas.Where(w => empresas.Contains(w.IdEmpresa)).Select(s => s.IdEmpresa).ToList(); var usuarioEmpresas = _unitOfWork.UsuarioEmpresaRepository.Tabela().Where(x => x.UserId == user.Id).ToList(); var perfil = _unitOfWork.PerfilUsuarioRepository.GetByUserId(user.Id); var model = new BOAccountEditViewModel { Ativo = perfil.Ativo, Cargo = perfil.Cargo, DataNascimento = perfil.DataNascimento, Departamento = perfil.Departamento, PerfilUsuarioId = perfil.PerfilUsuarioId, Nome = perfil.Nome, Email = user.Email, UserName = user.UserName }; foreach (long empresa in empresas) { var usuarioEmpresa = usuarioEmpresas.FirstOrDefault(x => x.IdEmpresa == empresa); var empGrupos = new EmpresaGrupoViewModel { IdEmpresa = empresa, Nome = Empresas.First(f => f.IdEmpresa == empresa).Nome, IsEmpresaPrincipal = perfil.EmpresaId == empresa ? true : false, IdPerfilImpressoraPadrao = usuarioEmpresa?.IdPerfilImpressoraPadrao, PerfilImpressora = PerfilImpressorasList(empresa, usuarioEmpresa?.IdPerfilImpressoraPadrao), CorredorEstoqueInicio = usuarioEmpresa?.CorredorEstoqueInicio, CorredorEstoqueFim = usuarioEmpresa?.CorredorEstoqueFim, CorredorSeparacaoInicio = usuarioEmpresa?.CorredorSeparacaoInicio, CorredorSeparacaoFim = usuarioEmpresa?.CorredorSeparacaoFim, }; List <string> gruposPermissoesUsuarioEdicao = (await UserManager.GetUserRolesByIdEmpresa(user.Id, empresa).ConfigureAwait(false)).OrderBy(x => x).ToList(); List <string> gruposPermissoesUsuarioLogado = (await UserManager.GetUserRolesByIdEmpresa(User.Identity.GetUserId(), empresa).ConfigureAwait(false)).OrderBy(x => x).ToList(); if (gruposPermissoesUsuarioLogado.Contains("Administrador")) { List <string> todosGrupos = RoleManager.Roles.OrderBy(x => x.Name).Select(x => x.Name).ToList(); foreach (var grupoPermissaoUsuario in todosGrupos) { var groupItemViewModel = new GroupItemViewModel { IsSelected = gruposPermissoesUsuarioEdicao.Any(x => x == grupoPermissaoUsuario), Name = grupoPermissaoUsuario }; empGrupos.Grupos.Add(groupItemViewModel); } } else { var gruposPermissoesSemelhantes = gruposPermissoesUsuarioEdicao.Where(x => gruposPermissoesUsuarioLogado.Contains(x)).ToList(); foreach (var grupoPermissaoUsuario in gruposPermissoesSemelhantes) { var groupItemViewModel = new GroupItemViewModel { IsSelected = true, Name = grupoPermissaoUsuario }; empGrupos.Grupos.Add(groupItemViewModel); } } empGrupos.Grupos.OrderBy(x => x.Name); model.EmpresasGrupos.Add(empGrupos); } return(View(model)); }