Пример #1
0
        public async Task <IActionResult> Mine()
        {
            var user = await GetKahlaUser();

            var personalRelations = (await _dbContext.PrivateConversations
                                     .AsNoTracking()
                                     .Where(t => t.RequesterId == user.Id || t.TargetId == user.Id)
                                     .Select(t => user.Id == t.RequesterId ? t.TargetUser : t.RequestUser)
                                     .ToListAsync())
                                    .Select(t => t.Build(_onlineJudger))
                                    .OrderBy(t => t.NickName);
            var groups = await _dbContext.GroupConversations
                         .AsNoTracking()
                         .Where(t => t.Users.Any(p => p.UserId == user.Id))
                         .OrderBy(t => t.GroupName)
                         .ToListAsync();

            var searched = SearchedGroup.Map(groups);

            return(Json(new MineViewModel
            {
                Code = ErrorType.Success,
                Message = "Successfully get all your groups and friends.",
                Users = personalRelations,
                Groups = searched,
            }));
        }
Пример #2
0
        public async Task <IActionResult> SearchEverything(SearchEverythingAddressModel model)
        {
            var users = _dbContext
                        .Users
                        .AsNoTracking()
                        .Where(t =>
                               t.MakeEmailPublic && t.Email.Contains(model.SearchInput) ||
                               t.NickName.Contains(model.SearchInput));

            var groups = _dbContext
                         .GroupConversations
                         .AsNoTracking()
                         .Where(t => t.GroupName.Contains(model.SearchInput));

            var searched = SearchedGroup.Map(await groups.ToListAsync());

            return(Json(new SearchEverythingViewModel
            {
                UsersCount = await users.CountAsync(),
                GroupsCount = await groups.CountAsync(),
                Users = await users.Take(model.Take).ToListAsync(),
                Groups = searched,
                Code = ErrorType.Success,
                Message = "Search result is shown."
            }));
        }
Пример #3
0
        public async Task <IActionResult> SearchEverything(SearchEverythingAddressModel model)
        {
            var user = await GetKahlaUser();

            var users = _dbContext
                        .Users
                        .AsNoTracking()
                        .Where(t =>
                               t.MakeEmailPublic && t.Email.Contains(model.SearchInput.ToLower(), StringComparison.CurrentCultureIgnoreCase) ||
                               t.NickName.ToLower().Contains(model.SearchInput.ToLower(), StringComparison.CurrentCultureIgnoreCase));

            var groups = _dbContext
                         .GroupConversations
                         .Include(t => t.Users)
                         .AsNoTracking()
                         .Where(t => t.GroupName.Contains(model.SearchInput.ToLower(), StringComparison.CurrentCultureIgnoreCase));

            var searched = SearchedGroup.Map(await groups.ToListAsync(), user.Id);

            return(this.AiurJson(new SearchEverythingViewModel
            {
                UsersCount = await users.CountAsync(),
                GroupsCount = await groups.CountAsync(),
                Users = await users.Take(model.Take).ToListAsync(),
                Groups = searched,
                Code = ErrorType.Success,
                Message = "Search result is shown."
            }));
        }
Пример #4
0
        public async Task <IActionResult> GroupSummary([Required] int id)
        {
            var group = await _dbContext.GroupConversations.SingleOrDefaultAsync(t => t.Id == id);

            if (group == null)
            {
                return(this.Protocol(ErrorType.NotFound, $"We can not find a group with id: {id}!"));
            }
            var view = new SearchedGroup(group);

            return(this.Protocol(new AiurValue <SearchedGroup>(view)
            {
                Code = ErrorType.Success,
                Message = "Successfully get your group result."
            }));
        }
Пример #5
0
 public async override Task OnGroupConnected(SearchedGroup group)
 {
     await MuteGroup(group.Name, true);
 }
Пример #6
0
 public virtual Task OnGroupConnected(SearchedGroup group) => Task.CompletedTask;
Пример #7
0
 public override async Task OnGroupConnected(SearchedGroup group)
 {
 }