Beispiel #1
0
    public async Task <IEnumerable <(Group Group, bool MayEdit)> > GetAllAsync(ClaimsPrincipal?principal, int countryId)
    {
        if (principal.IsCountryAdministratorInCountry(countryId))
        {
            using var dbContext = Factory.CreateDbContext();
            var items = await dbContext.Groups.AsNoTracking()
                        .Where(g => (g.CountryId == countryId) || (g.GroupDomainId > 0 && principal.GroupDomainIds().Contains(g.GroupDomainId.Value)))
                        .Include(g => g.GroupDomain)
                        .Include(g => g.Country)
                        .OrderBy(g => g.FullName)
                        .ToListAsync();

            return(items.Select(i => (i, true)));
        }
        else
        {
            using var dbContext = Factory.CreateDbContext();
            var items = await dbContext.Groups.AsNoTracking()
                        .Where(g => (g.GroupDomainId > 0 && principal.GroupDomainIds().Contains(g.GroupDomainId.Value)) || g.GroupMembers.Any(gm => gm.PersonId == principal.PersonId()))
                        .Include(g => g.GroupDomain)
                        .Include(g => g.Country)
                        .OrderBy(g => g.FullName)
                        .ToListAsync();

            return(items.Select(i => (i, i.GroupMembers.Any(gm => (gm.IsDataAdministrator || gm.IsGroupAdministrator) && gm.PersonId == principal.PersonId()))));
        }
    }
Beispiel #2
0
 protected async Task FilterUsers()
 {
     FilteredUsers = (await UserService.Get())
                     .Where(x => !GroupMembers
                            .Any(z => x.Id == z.Id))
                     .Where(x => x.Id != GroupObject.OwnerId)
                     .ToList();
 }
        public async Task SendSticker(StickerSelection stickerSelection)
        {
            string error;

            try
            {
                var result = new Result();
                if (GroupMembers.Any() && IsNewMessage)
                {
                    result =
                        await
                        _messageManager.CreateStickerPostWithNewGroupMessage(GroupMembers.ToArray(),
                                                                             stickerSelection.ManifestUrl,
                                                                             stickerSelection.Number.ToString(), stickerSelection.ImageUrl, stickerSelection.PackageId,
                                                                             stickerSelection.Type, Shell.Instance.ViewModel.CurrentTokens,
                                                                             Shell.Instance.ViewModel.CurrentUser.Region);
                }
                else
                {
                    result =
                        await
                        _messageManager.CreateStickerPost(SelectedMessageGroup.MessageGroupId,
                                                          stickerSelection.ManifestUrl,
                                                          stickerSelection.Number.ToString(), stickerSelection.ImageUrl, stickerSelection.PackageId,
                                                          stickerSelection.Type, Shell.Instance.ViewModel.CurrentTokens,
                                                          Shell.Instance.ViewModel.CurrentUser.Region);
                }

                await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, result);

                var resultCheck = await ResultChecker.CheckSuccess(result);

                if (resultCheck)
                {
                    SelectedMessageGroup = JsonConvert.DeserializeObject <MessageGroup>(result.ResultJson);
                    await GetMessages(SelectedMessageGroup);

                    //await GetMessageGroups(Shell.Instance.ViewModel.CurrentUser.Username);
                    IsNewMessage = false;
                }
                return;
            }
            catch (Exception ex)
            {
                error = ex.Message;
            }

            await ResultChecker.SendMessageDialogAsync(error, false);
        }
        private async Task SendMessageWithMedia()
        {
            var realImage = await ConvertToJpeg(AttachedImage);

            var result = new Result();

            if (GroupMembers.Any() && IsNewMessage)
            {
                result =
                    await _messageManager.CreateNewGroupMessageWithMedia(GroupMembers.ToArray(), Message, ImagePath,
                                                                         realImage,
                                                                         Shell.Instance.ViewModel.CurrentTokens, Shell.Instance.ViewModel.CurrentUser.Region);
            }
            else
            {
                if (SelectedMessageGroup == null)
                {
                    await ResultChecker.SendMessageDialogAsync("Selected Message Group Null!", false);
                }
                else
                {
                    result =
                        await
                        _messageManager.CreatePostWithMedia(SelectedMessageGroup.MessageGroupId, Message, ImagePath,
                                                            realImage,
                                                            Shell.Instance.ViewModel.CurrentTokens,
                                                            Shell.Instance.ViewModel.CurrentUser.Region);
                }
            }
            await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, result);

            var resultCheck = await ResultChecker.CheckSuccess(result);

            if (resultCheck)
            {
                IsImageAttached      = false;
                AttachedImage        = null;
                SelectedMessageGroup = JsonConvert.DeserializeObject <MessageGroup>(result.ResultJson);

                await GetMessages(SelectedMessageGroup);

                //await GetMessageGroups(Shell.Instance.ViewModel.CurrentUser.Username);
                IsNewMessage = false;
            }
        }
Beispiel #5
0
        public async Task SendSticker(StickerSelection stickerSelection)
        {
            var result = new Result();

            if (GroupMembers.Any() && IsNewMessage)
            {
                result =
                    await
                    _messageManager.CreateStickerPostWithNewGroupMessage(GroupMembers.ToArray(),
                                                                         stickerSelection.ManifestUrl,
                                                                         stickerSelection.Number.ToString(), stickerSelection.ImageUrl, stickerSelection.PackageId,
                                                                         stickerSelection.Type, Locator.ViewModels.MainPageVm.CurrentTokens,
                                                                         Locator.ViewModels.MainPageVm.CurrentUser.Region);
            }
            else
            {
                result =
                    await
                    _messageManager.CreateStickerPost(SelectedMessageGroup.MessageGroupId,
                                                      stickerSelection.ManifestUrl,
                                                      stickerSelection.Number.ToString(), stickerSelection.ImageUrl, stickerSelection.PackageId,
                                                      stickerSelection.Type, Locator.ViewModels.MainPageVm.CurrentTokens,
                                                      Locator.ViewModels.MainPageVm.CurrentUser.Region);
            }

            await AccountAuthHelpers.UpdateTokens(Locator.ViewModels.MainPageVm.CurrentUser, result);

            var resultCheck = await ResultChecker.CheckSuccess(result);

            if (resultCheck)
            {
                SelectedMessageGroup = JsonConvert.DeserializeObject <MessageGroup>(result.ResultJson);
                await GetMessages(SelectedMessageGroup);
                await GetMessageGroups(Locator.ViewModels.MainPageVm.CurrentUser.Username);

                IsNewMessage = false;
            }
        }
Beispiel #6
0
 protected virtual bool DoLeave(string rawParameters, params CommandParameter[] parameters)
 {
     // Member leaving
     if (Leader != null && Leader.GroupMembers.Any(x => x == this))
     {
         Leader.RemoveGroupMember(this, false);
     }
     // Leader leaving -> change leader
     else if (GroupMembers.Any())
     {
         ICharacter newLeader = GroupMembers.FirstOrDefault();
         if (newLeader == null)
         {
             Log.Default.WriteLine(LogLevels.Error, "DoLeave: problem with group, leader leaving but no other group member found.");
             return(true);
         }
         // New leader has no leader
         newLeader.ChangeLeader(null);
         // Remove member from old leader and add it to new leader
         IReadOnlyCollection <ICharacter> members = new ReadOnlyCollection <ICharacter>(GroupMembers.Where(x => x != newLeader).ToList()); // clone because RemoveGroupMember will modify GroupMembers
         foreach (ICharacter member in members)
         {
             RemoveGroupMember(member, true);
             newLeader.AddGroupMember(member, true);
         }
         // Warn members about leader change
         newLeader.Send("You are the new group leader.");
         //foreach (ICharacter member in newLeader.GroupMembers)
         //    member.Act(ActOptions.ToCharacter, "{0} is the new group leader.", newLeader);
         Act(ActOptions.ToGroup, "{0} is the new group leader.", newLeader);
     }
     else
     {
         Send("You are not in a group.");
     }
     return(true);
 }
Beispiel #7
0
        private async Task SendMessageWithoutMedia()
        {
            var result = new Result();

            if (GroupMembers.Any() && IsNewMessage)
            {
                result = await _messageManager.CreateNewGroupMessage(GroupMembers.ToArray(), Message,
                                                                     Locator.ViewModels.MainPageVm.CurrentTokens, Locator.ViewModels.MainPageVm.CurrentUser.Region);
            }
            else
            {
                if (SelectedMessageGroup == null)
                {
                    await ResultChecker.SendMessageDialogAsync("Selected Message Group Null!", false);
                }
                else
                {
                    result = await
                             _messageManager.CreatePost(SelectedMessageGroup.MessageGroupId, Message,
                                                        Locator.ViewModels.MainPageVm.CurrentTokens,
                                                        Locator.ViewModels.MainPageVm.CurrentUser.Region);
                }
            }
            await AccountAuthHelpers.UpdateTokens(Locator.ViewModels.MainPageVm.CurrentUser, result);

            var resultCheck = await ResultChecker.CheckSuccess(result);

            if (resultCheck)
            {
                SelectedMessageGroup = JsonConvert.DeserializeObject <MessageGroup>(result.ResultJson);
                await GetMessages(SelectedMessageGroup);
                await GetMessageGroups(Locator.ViewModels.MainPageVm.CurrentUser.Username);

                IsNewMessage = false;
            }
        }
Beispiel #8
0
 protected virtual bool DoGroup(string rawParameters, params CommandParameter[] parameters)
 {
     if (parameters.Length == 0)
     {
         ICharacter leader = null;
         // Member of a group
         if (Leader != null && Leader.GroupMembers.Any(x => x == this))
         {
             leader = Leader;
         }
         // Leader of a group
         else if (Leader == null && GroupMembers.Any())
         {
             leader = this;
         }
         if (leader == null)
         {
             Send("You are not in a group.");
         }
         else
         {
             StringBuilder sb = new StringBuilder();
             sb.AppendFormatLine("{0}'s group:", leader.DisplayName);
             AppendCharacterGroupMemberInfo(sb, leader, true);
             foreach (ICharacter member in leader.GroupMembers)
             {
                 AppendCharacterGroupMemberInfo(sb, member, false);
             }
             Send(sb);
         }
     }
     else
     {
         if (Leader != null)
         {
             Send("You are not the group leader.");
             return(true);
         }
         // Remove from group if target is already in the group
         ICharacter oldMember = FindHelpers.FindByName(GroupMembers.Where(CanSee), parameters[0]);
         if (oldMember != null)
         {
             RemoveGroupMember(oldMember, false);
             return(true);
         }
         // Search in room a new member to add
         ICharacter newMember = FindHelpers.FindByName(Room.People.Where(CanSee), parameters[0]);
         if (newMember == null) // not found
         {
             Send(StringHelpers.CharacterNotFound);
             return(true);
         }
         if (newMember == this)
         {
             Send("You cannot group yourself.");
             return(true);
         }
         if (newMember.Leader != this)
         {
             Act(ActOptions.ToCharacter, "{0} is not following you.", newMember);
             return(true);
         }
         if (newMember.GroupMembers.Any())
         {
             Act(ActOptions.ToCharacter, "{0} is already in a group", newMember);
             return(true);
         }
         if (GroupMembers.Any(x => x == newMember))
         {
             Act(ActOptions.ToCharacter, "{0} is already in your group.", newMember);
             return(true);
         }
         AddGroupMember(newMember, false);
     }
     return(true);
 }