public static async Task <bool> SetRole(string username, string roleName, string accessLevelValue) { using (Contexts.SMEManagementContext db = new Contexts.SMEManagementContext()) { Models.Authentication.User user = await (from current in db.Users where current.Name == username select current).FirstOrDefaultAsync(); if (user != null) { Models.Authentication.Role role = await (from current in db.Roles where current.Name == roleName select current).FirstOrDefaultAsync(); if (role != null) { Models.Authentication.AccessLevel accessLevel = await (from current in db.AccessLevels where current.Value == accessLevelValue select current).FirstOrDefaultAsync(); if (accessLevel != null) { Models.Authentication.UserRole userRole = await (from current in db.UserRoles where current.AccessLevelId == accessLevel.Id && current.RoleId == role.Id && current.UserId == user.Id select current).FirstOrDefaultAsync(); if (userRole == null) { userRole = new Models.Authentication.UserRole() { User = user, Role = role, AccessLevel = accessLevel }; await db.UserRoles.AddAsync(userRole); await db.SaveChangesAsync(); } return(true); } } } return(false); } }
public static async Task <bool> SetRole(string username, string roleName, string accessLevelValue, Guid perfil) { using (Contexts.SMEManagementContextData db = new Contexts.SMEManagementContextData()) { var user = await (from current in db.Users where current.Name.Equals(username) select current).FirstOrDefaultAsync(); if (user == null) { return(false); } var role = await (from current in db.Roles where current.Name.Equals(roleName) select current).FirstOrDefaultAsync(); if (role == null) { return(false); } var accessLevel = await (from current in db.AccessLevels where current.Value.Equals(accessLevelValue) select current).FirstOrDefaultAsync(); if (accessLevel == null) { return(false); } var userRole = await (from current in db.UserRoles where current.AccessLevelId.Equals(accessLevel.Id) && current.RoleId.Equals(role.Id) && current.UserId.Equals(user.Id) && current.PerfilId.Equals(perfil) select current).FirstOrDefaultAsync(); if (userRole != null) { return(true); } userRole = new Models.Authentication.UserRole() { User = user, Role = role, AccessLevel = accessLevel, PerfilId = perfil }; await db.UserRoles.AddAsync(userRole); await db.SaveChangesAsync(); return(true); } }