コード例 #1
0
        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");
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }