public async Task <ActionResult> SearchOrganizationUsersAsync([FromBody] OrganizationContactsSearchCriteria searchCriteria) { searchCriteria.OrganizationId = searchCriteria.OrganizationId ?? WorkContext.CurrentUser?.Contact?.Organization?.Id; //Allow to register new users only within own organization var authorizationResult = await _authorizationService.AuthorizeAsync(User, new Organization { Id = searchCriteria.OrganizationId }, CanEditOrganizationResourceAuthorizeRequirement.PolicyName); if (!authorizationResult.Succeeded) { return(Unauthorized()); } if (searchCriteria.OrganizationId != null) { var contactsSearchResult = await _memberService.SearchOrganizationContactsAsync(searchCriteria); var userIds = contactsSearchResult.Select(x => x.SecurityAccounts?.FirstOrDefault()).OfType <SecurityAccount>().Select(x => x.Id); var users = new List <User>(); foreach (var userId in userIds) { var user = await _userManager.FindByIdAsync(userId); if (user != null) { users.Add(user); } } return(Json(new { TotalCount = contactsSearchResult.TotalItemCount, Results = users })); } return(Ok()); }
public async Task <IPagedList <Contact> > SearchOrganizationContactsAsync(OrganizationContactsSearchCriteria criteria) { var criteriaDto = new customerDto.MembersSearchCriteria { MemberId = criteria.OrganizationId, Skip = (criteria.PageNumber - 1) * criteria.PageSize, Take = criteria.PageSize, Sort = criteria.Sort, SearchPhrase = criteria.SearchPhrase }; var searchResult = await _customerApi.SearchAsync(criteriaDto); var contacts = _customerApi.GetContactsByIds(searchResult.Results.Select(x => x.Id).ToList()).Select(x => x.ToContact()).ToList(); return(new StaticPagedList <Contact>(contacts, criteria.PageNumber, criteria.PageSize, searchResult.TotalCount.Value)); }
public async Task <Organization> GetOrganizationByIdAsync(string organizationId) { Organization result = null; var cacheKey = CacheKey.With(GetType(), "GetOrganizationByIdAsync", organizationId); var dto = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var organizationDto = await _customerApi.GetOrganizationByIdAsync(organizationId); if (organizationDto != null) { cacheEntry.AddExpirationToken(CustomerCacheRegion.CreateChangeToken(organizationDto.Id)); cacheEntry.AddExpirationToken(_apiChangesWatcher.CreateChangeToken()); } return(organizationDto); }); if (dto != null) { result = dto.ToOrganization(); //Lazy load organization contacts result.Contacts = new MutablePagedList <Contact>((pageNumber, pageSize, sortInfos, @params) => { var criteria = new OrganizationContactsSearchCriteria { OrganizationId = result.Id, PageNumber = pageNumber, PageSize = pageSize }; if (!sortInfos.IsNullOrEmpty()) { criteria.Sort = SortInfo.ToString(sortInfos); } if (@params != null) { criteria.CopyFrom(@params); } return(SearchOrganizationContacts(criteria)); }, 1, 20); } return(result); }
public IPagedList <Contact> SearchOrganizationContacts(OrganizationContactsSearchCriteria criteria) { return(SearchOrganizationContactsAsync(criteria).GetAwaiter().GetResult()); }
public IPagedList <Contact> SearchOrganizationContacts(OrganizationContactsSearchCriteria criteria) { return(Task.Factory.StartNew(() => SearchOrganizationContactsAsync(criteria), CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult()); }