public async Task <Group> EditGroup(string id, GroupCreateRequestDto group) { var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == group.Creator.Id); var groupToEdit = await _context.Groups.FirstOrDefaultAsync(g => g.Id == id); if (user == null || groupToEdit == null || !user.Rank.Permissions.CanEditGroup) { return(null); } groupToEdit.LogoUrl = group.LogoUrl; groupToEdit.Name = group.Name; groupToEdit.Bio = group.Bio; try { _context.Groups.Update(groupToEdit); await _context.SaveChangesAsync(); } catch (Exception ex) { Console.Write(ex); return(null); } return(groupToEdit); }
public async Task <IActionResult> EditGroup([FromRoute] string id, GroupCreateRequestDto group) { var editedGroup = await _groupService.EditGroup(id, group); if (editedGroup == null) { return(BadRequest()); } return(Ok(editedGroup)); }
public async Task <IActionResult> CreateGroup(GroupCreateRequestDto group) { var groupCreated = await _groupService.CreateGroup(group); if (!groupCreated) { return(BadRequest()); } return(Ok()); }
private async Task GenerateGroups() { var users = await _context.Users.ToListAsync(); var groups = new GroupCreateRequestDto[] { new GroupCreateRequestDto() { Bio = "A new bio", Creator = users[0], LogoUrl = "https://www.mylogo.com/group.png", Name = $"Group by: {users[0].Profile.Username}" }, new GroupCreateRequestDto() { Bio = "A new bio", Creator = users[1], LogoUrl = "https://www.mylogo.com/group.png", Name = $"Group by: {users[1].Profile.Username}" }, }; foreach (var group in groups) { await _groupService.CreateGroup(group); } await _context.SaveChangesAsync(); }
public async Task <bool> CreateGroup(GroupCreateRequestDto group) { var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == group.Creator.Id); var groupExists = await _context.Groups.AnyAsync(g => g.Name == group.Name); // If a user doesn't exist, they already belong to a group, or the group already exists if (user == null || user.Group != null || groupExists) { return(false); } var newGroup = new Group(); newGroup.Bio = group.Bio; newGroup.LogoUrl = group.LogoUrl; newGroup.Name = group.Name; newGroup.Owner = group.Creator; try { await _context.Groups.AddAsync(newGroup); var ranks = await CreateDefaultRanks(newGroup); // Add this data to the creating user user.Group = newGroup; user.Rank = ranks.Find(r => r.Level == 1); _context.Users.Update(user); await _context.SaveChangesAsync(); } catch (Exception ex) { Console.Write(ex); return(false); } return(true); }