public async Task <Organization> RemovePlayerAsync(User requester, string organizationId, string playerId) { SanityOrganization organization = (await GetOrganizationsAsync()).FirstOrDefault(o => o.Id == organizationId && o.Members.Where(m => m.RoleStrength() >= 3 && m.Player.Ref == requester.Id).ToList().Count > 0); SanityMember member = organization?.Members.FirstOrDefault(m => m.Player.Ref == playerId); if (member != null) { organization.Members.Remove(member); await Sanity.DocumentSet <SanityOrganization>().Update(organization).CommitAsync(); return(organization.ToOrganization()); } throw new Exception("Member not found or user has no access"); }
public async Task <Organization> UpdateMemberAsync(User requester, string organizationId, Member member) { SanityOrganization organization = await Sanity.DocumentSet <SanityOrganization>().GetAsync(organizationId); SanityMember m = organization.Members.FirstOrDefault(m => m.Player.Ref == member?.Player.Id); if (m != null) { m.Role = member.Role; await Sanity.DocumentSet <SanityOrganization>().Update(organization).CommitAsync(); return(organization.ToOrganization()); } return(null); }
public async Task <Team> AddTeamAsync(User requester, Team team) { if (string.IsNullOrEmpty(team.Id)) { team.Id = Guid.NewGuid().ToString(); SanityOrganization org = await Sanity.DocumentSet <SanityOrganization>().GetAsync(team.Organization?.Id); SanityMember mem = org?.Members.Find(m => m.Player.Ref == requester.Id); if (mem?.Role == "owner" || mem?.Role == "officer") { SanityTeam sTeam = new SanityTeam() { Id = team.Id, Name = team.Name, Captain = new SanityReference <Player>() { Ref = team.Captain.Id, }, Game = new SanityReference <SanityGame>() { Ref = team.Game.Id, }, Organization = new SanityReference <SanityOrganization>() { Ref = team.Organization.Id } }; await Sanity.DocumentSet <SanityTeam>().Create(sTeam).CommitAsync(); (await GetTeamsAsync()).Add(team); return(team); } } return(null); }