public async Task <IActionResult> AddUserToGroup(string groupId, string userId) { var user = await _userManager.Users.FirstOrDefaultAsync(u => u.Id == userId); var groupToAdd = _context.Group.Include(g => g.Participants).FirstOrDefault(g => g.GroupId == groupId); if (user == null || groupToAdd == null) { return(NotFound()); } if (groupToAdd.Participants == null) { groupToAdd.Participants = new List <Models.UserGroup>(); } var userGroup = new Models.UserGroup(); userGroup.User = user; userGroup.Group = groupToAdd; userGroup.UserId = user.Id; userGroup.GroupId = groupToAdd.GroupId; if (!groupToAdd.Participants.Select(i => i.UserId).Contains(userId)) { groupToAdd.Participants.Add(userGroup); } _context.Update(groupToAdd); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Users), new { id = groupId })); }
public void RemovePersonToUserGroup(Models.Person p, Models.UserGroup ug) { if (ug.PersonInGroup.Contains(p)) { ug.PersonInGroup.Add(p); } }
public async Task <IActionResult> Create([Bind("GroupId,Name,DateOpened,OwnerId")] Group @group) { var date = DateTime.Now; var user = await _userManager.GetUserAsync(HttpContext.User); if (user == null) { return(View(@group)); } if (_context.Group.Select(i => i.Name).Contains(group.Name)) { return(View(@group)); } group.DateOpened = date; group.Owner = user; group.OwnerId = user.Id; group.Participants = new List <Models.UserGroup>(); var userGroup = new Models.UserGroup(); userGroup.User = user; userGroup.Group = group; userGroup.UserId = user.Id; userGroup.GroupId = group.GroupId; group.Participants.Add(userGroup); if (ModelState.IsValid) { _context.Add(@group); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["OwnerId"] = new SelectList(_context.Users, "Id", "Id", @group.OwnerId); return(View(@group)); }
public static void ToEntity(ref Models.UserGroup entity, UserGroupModel source) { if (source != null) { var objectHelper = new ObjectHelper(); objectHelper.CopyValue(source, entity, IgnoreList); } }
public void RemoveContainerGroupFromUserGroup(Models.ContainerGroup cg, Models.UserGroup ug) { var v = _store.UserGroupContainerGroupAccesses.Find(access => access.ContainerGroup.Id == cg.Id && access.UserGroup.Id == ug.Id); if (v != null) { _store.UserGroupContainerGroupAccesses.RemoveAll(a => a.Id == v.Id); } }
public static ViewModel.UserGroup.UserGroupModel FromEntity(Models.UserGroup entity) { var data = new ViewModel.UserGroup.UserGroupModel(); if (entity != null) { var objectHelper = new ObjectHelper(); objectHelper.CopyValue(entity, data); } return(data); }
private static Models.UserGroup SetupInstance() { Models.UserGroup result = new Models.UserGroup() { Id = 1, GroupName = "test" }; UserGroupDAL.Instance.AddUserGroup(result); result.Id = UserGroupDAL.Instance.GetGroupByName(result.GroupName).Id; return result; }
//TODO Add User to shared container list //TODO remove User to shared container list //TODO Add Container to shared user list public void AddContainerGroupToUserGroup(Models.ContainerGroup cg, Models.UserGroup ug) { if (!_store.UserGroupContainerGroupAccesses.Exists(access => access.ContainerGroup.Id == cg.Id && access.UserGroup.Id == ug.Id)) { //increment var Id = _store.UserGroupContainerGroupAccesses.Count + 1; _store.UserGroupContainerGroupAccesses.Add(new Models.UserGroupContainerGroupAccess { ContainerGroup = cg, UserGroup = ug, Id = Id }); } }
public void Get() { try { test = SetupInstance(); Models.UserGroup g = UserGroupDAL.Instance.GetGroupById(test.Id); Assert.AreEqual("test", g.GroupName); g = UserGroupDAL.Instance.GetGroupByName(test.GroupName); Assert.AreEqual(test.Id, g.Id); } finally { Assert.IsTrue(UserGroupDAL.Instance.DeleteUserGroupByName(test.GroupName)); } }
/// <summary> /// Creates a new <see cref="User"/> from a given <paramref name="model"/>. /// </summary> /// <param name="model">The <see cref="Api.Models.User"/> to use as a template.</param> /// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param> /// <returns>A <see cref="Task{TResult}"/> resulting in a new <see cref="User"/> on success, <see langword="null"/> if the requested <see cref="UserGroup"/> did not exist.</returns> async Task <Models.User> CreateNewUserFromModel(Api.Models.User model, CancellationToken cancellationToken) { Models.PermissionSet permissionSet = null; Models.UserGroup group = null; if (model.Group != null) { group = await DatabaseContext .Groups .AsQueryable() .Where(x => x.Id == model.Group.Id) .Include(x => x.PermissionSet) .FirstOrDefaultAsync(cancellationToken) .ConfigureAwait(false); } else { permissionSet = new Models.PermissionSet { AdministrationRights = model.PermissionSet?.AdministrationRights ?? AdministrationRights.None, InstanceManagerRights = model.PermissionSet?.InstanceManagerRights ?? InstanceManagerRights.None, } }; return(new Models.User { CreatedAt = DateTimeOffset.UtcNow, CreatedBy = AuthenticationContext.User, Enabled = model.Enabled ?? false, PermissionSet = permissionSet, Group = group, Name = model.Name, SystemIdentifier = model.SystemIdentifier, OAuthConnections = model .OAuthConnections ?.Select(x => new Models.OAuthConnection { Provider = x.Provider, ExternalUserId = x.ExternalUserId }) .ToList() ?? new List <Models.OAuthConnection>(), }); } }
public async Task <IActionResult> Create([FromBody] UserGroup model, CancellationToken cancellationToken) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (model.Name == null) { return(BadRequest(new ErrorMessage(ErrorCode.ModelValidationFailure))); } var totalGroups = await DatabaseContext .Groups .AsQueryable() .CountAsync(cancellationToken) .ConfigureAwait(false); if (totalGroups >= generalConfiguration.UserGroupLimit) { return(Conflict(new ErrorMessage(ErrorCode.UserGroupLimitReached))); } var permissionSet = new Models.PermissionSet { AdministrationRights = model.PermissionSet?.AdministrationRights ?? AdministrationRights.None, InstanceManagerRights = model.PermissionSet?.InstanceManagerRights ?? InstanceManagerRights.None }; var dbGroup = new Models.UserGroup { Name = model.Name, PermissionSet = permissionSet, }; DatabaseContext.Groups.Add(dbGroup); await DatabaseContext.Save(cancellationToken).ConfigureAwait(false); Logger.LogInformation("Created new user group {0} ({1})", dbGroup.Name, dbGroup.Id); return(Created(dbGroup.ToApi(true))); }
/// <summary> 要存master、permission、User </summary> public string SaveChanges(ref Models.UserGroup entity, List <int> permissions, List <int> insertUser, List <int> deleteUser, EntityState state) { var errMsg = ""; using (var trans = _Entity.Database.BeginTransaction(IsolationLevel.Snapshot)) { try { if (state == EntityState.Deleted) { var userGroupID = entity.ID; _Entity.UserGroupPermission.RemoveRange(_Entity.UserGroupPermission.Where(x => x.UserGroupID == userGroupID)); //移除權限 _Entity.UserGroupUser.RemoveRange(_Entity.UserGroupUser.Where(x => x.GroupID == userGroupID)); //移除使用者 _Entity.UserGroup.Remove(entity); _Entity.SaveChanges(); } else { var userGroupID = entity.ID; if (state == EntityState.Added) { _Entity.UserGroup.Add(entity); _Entity.SaveChanges(); userGroupID = entity.ID; } else { //先移除在全部新增回去 _Entity.UserGroupPermission.RemoveRange(_Entity.UserGroupPermission.Where(x => x.UserGroupID == userGroupID)); _Entity.SaveChanges(); } _Entity.UserGroupPermission.AddRange(permissions.Select(x => { return(new UserGroupPermission() { PermissionID = x, UserGroupID = userGroupID }); })); _Entity.UserGroupUser.AddRange(insertUser.Select(x => { return(new UserGroupUser() { UserID = x, GroupID = userGroupID }); })); _Entity.UserGroupUser.RemoveRange(deleteUser.Select(x => { return(new UserGroupUser() { UserID = x, GroupID = userGroupID }); })); _Entity.SaveChanges(); } trans.Commit(); } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { errMsg = ex.Message; } catch (Exception ex) { errMsg = ex.Message;//ValidationHelper.GetSQLMessage(ex); } } return(errMsg); }
/// <summary> /// 新增群組成員 /// </summary> /// <param name="User">使用者</param> /// <param name="Database">資料庫</param> public void AddMember(User User,SharpDiskDbContext Database) { if (IsMember(User, Database)) { throw new ApiInvalidOperationException("重複成員"); } UserGroup newdata = new Models.UserGroup() { User = User, Group = this }; Database.UserGroup.Add(newdata); Database.SaveChanges(); }
//Who is in user group X public List <Models.Person> getListOfPeapleInGroupQuery(Models.UserGroup ug) { return(ug.PersonInGroup); }
static void Main(string[] args) { //SetUp Storage s = new Storage(); Commands c = new Commands(s); Queries q = new Queries(s); var shad = new Models.Person { Email = "*****@*****.**", DNVGLID = Guid.NewGuid().ToString(), Id = 1, Name = "Shad" }; var anatoliy = new Models.Person { Email = "*****@*****.**", DNVGLID = Guid.NewGuid().ToString(), Id = 2, Name = "Anatoliy" }; var s1 = new Models.Container { Id = 1, Name = "ship_01", ResourceId = Guid.NewGuid().ToString() }; var s2 = new Models.Container { Id = 2, Name = "ship_02", ResourceId = Guid.NewGuid().ToString() }; c.AddUser(shad); c.AddUser(anatoliy); c.AddContainer(s1); c.AddContainer(s2); //Add all ships containers to container grouping ships var cg1 = new Models.ContainerGroup { Id = 1, name = "ships", ContainerInGroup = new List <Models.Container>() }; c.AddContainerToContainerGroup(s1, cg1); c.AddContainerToContainerGroup(s2, cg1); //Create user groups to access ships var ug1 = new Models.UserGroup { Id = 1, name = "readers of ships", PersonInGroup = new List <Models.Person>() }; var ug2 = new Models.UserGroup { Id = 2, name = "admin of ships", PersonInGroup = new List <Models.Person>() }; //Add users to a user group c.AddPersonToUserGroup(shad, ug1); c.AddPersonToUserGroup(shad, ug2); c.AddPersonToUserGroup(anatoliy, ug2); //Give access to ship c.AddContainerGroupToUserGroup(cg1, ug1); c.AddContainerGroupToUserGroup(cg1, ug2); //Which group has access? var o = q.getListOfUserGroupsWithAcessToContainerGroup(cg1); Console.WriteLine($"Which group has access to {cg1.name}"); Console.WriteLine(o.Count); foreach (var aa in o) { Console.WriteLine(aa.name); Console.WriteLine("whos in that group?"); var p = q.getListOfPeapleInGroupQuery(aa); foreach (var pp in p) { Console.WriteLine(pp.Name); } } Console.WriteLine($"-------------------------"); Console.WriteLine($"Removing user group {ug1.name} access from container group {cg1.name}"); //Remove access c.RemoveContainerGroupFromUserGroup(cg1, ug1); //Which group has access? o = q.getListOfUserGroupsWithAcessToContainerGroup(cg1); Console.WriteLine($"Which group has access to {cg1.name}"); Console.WriteLine(o.Count); foreach (var aa in o) { Console.WriteLine(aa.name); Console.WriteLine("whos in that group?"); var p = q.getListOfPeapleInGroupQuery(aa); foreach (var pp in p) { Console.WriteLine(pp.Name); } } Console.Read(); }
public void Delete() { test = SetupInstance(); Assert.IsTrue(UserGroupDAL.Instance.DeleteUserGroupById(test.Id)); }