private static HashSet <int> GetFeaturesByUserId(string userId) { HashSet <int> result = new HashSet <int>(); var listProfiles = DBUserProfiles.GetByUserId(userId); if (listProfiles != null && listProfiles.Count() > 0) { var listProfilesId = listProfiles.Select(s => s.IdPerfil).ToList(); foreach (var profileId in listProfilesId) { var listAccessProfile = DBAccessProfiles.GetByProfileModelId(profileId).ToList(); if (listAccessProfile != null && listAccessProfile.Count() > 0) { var listProfileFeatures = new HashSet <int>(); listProfileFeatures = listAccessProfile.Select(s => s.Funcionalidade).ToHashSet <int>(); result.UnionWith(listProfileFeatures); } } } var listUserAccess = DBUserAccesses.GetByUserId(userId); if (listUserAccess != null && listUserAccess.Count() > 0) { var listFeatures = new HashSet <int>(); listFeatures = listUserAccess.Select(s => s.Funcionalidade).ToHashSet <int>(); result.UnionWith(listFeatures); } return(result); }
public static PerfisUtilizador Create(PerfisUtilizador ObjectToCreate) { try { using (var ctx = new SuchDBContext()) { //Add Profile User ObjectToCreate.DataHoraCriação = DateTime.Now; ctx.PerfisUtilizador.Add(ObjectToCreate); //Add ProfileAccesses to UserAccesses List <AcessosPerfil> ProfileAccessesToAdd = DBAccessProfiles.GetByProfileModelId(ObjectToCreate.IdPerfil); ProfileAccessesToAdd.ForEach(pa => { AcessosUtilizador AU = DBUserAccesses.GetById(ObjectToCreate.IdUtilizador, pa.Funcionalidade); if (AU != null) { ctx.AcessosUtilizador.Remove(AU); ctx.SaveChanges(); } AU = new AcessosUtilizador() { IdUtilizador = ObjectToCreate.IdUtilizador, Funcionalidade = pa.Funcionalidade, Leitura = pa.Leitura, Inserção = pa.Inserção, Modificação = pa.Modificação, Eliminação = pa.Eliminação, DataHoraCriação = DateTime.Now, UtilizadorCriação = pa.UtilizadorCriação }; ctx.AcessosUtilizador.Add(AU); ctx.SaveChanges(); }); ctx.SaveChanges(); } return(ObjectToCreate); } catch (Exception ex) { return(null); } }