public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonAlexaForBusinessConfig config = new AmazonAlexaForBusinessConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonAlexaForBusinessClient client = new AmazonAlexaForBusinessClient(creds, config); SearchContactsResponse resp = new SearchContactsResponse(); do { SearchContactsRequest req = new SearchContactsRequest { NextToken = resp.NextToken , MaxResults = maxItems }; resp = client.SearchContacts(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.Contacts) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.NextToken)); }
public async Task <ActionResult <MainResponse> > SearchNewContacts(SearchContactsRequest request) { User user = HttpContext.GetUser(); if (user == null) { return(StatusCode(401)); } string searchKey = "%" + request.SearchKey.Replace(" ", "%") + "%"; User[] users1 = new User[0]; User[] users2 = new User[0]; string[] friends1 = new string[0]; string[] friends2 = new string[0]; IQueryable <Contact> contacts = _context.Contacts.Where(p => p.User1.Id == user.Id || p.User2.Id == user.Id); if (request.IsNewContacts) { users1 = await _context.Users.Where(p => (EF.Functions.Like(p.Login, searchKey) || EF.Functions.Like(p.FirstName, searchKey) || EF.Functions.Like(p.LastName, searchKey) || EF.Functions.Like(p.FirstName + p.LastName, searchKey) || EF.Functions.Like(p.LastName + p.FirstName, searchKey)) && p.Id != user.Id).Skip(_serverConfig.Contacts.PartsSize.SearchResultsPerPart * (request.Part - 1)).Take(_serverConfig.Contacts.PartsSize.SearchResultsPerPart).ToArrayAsync(); string[] usersId = users1.Select(p => p.Id).ToArray(); friends1 = contacts.Where(p => usersId.Contains(p.User1.Id)).Select(p => p.User1.Id).ToArray(); friends2 = contacts.Where(p => usersId.Contains(p.User2.Id)).Select(p => p.User2.Id).ToArray(); } else { users1 = await contacts.Where(p => p.User1.Id != user.Id).Select(p => p.User1).Where(p => (EF.Functions.Like(p.Login, searchKey) || EF.Functions.Like(p.FirstName, searchKey) || EF.Functions.Like(p.LastName, searchKey) || EF.Functions.Like(p.FirstName + p.LastName, searchKey) || EF.Functions.Like(p.LastName + p.FirstName, searchKey)) && p.Id != user.Id).Skip(_serverConfig.Contacts.PartsSize.SearchResultsPerPart * (request.Part - 1)).Take(_serverConfig.Contacts.PartsSize.SearchResultsPerPart).ToArrayAsync(); users2 = await contacts.Where(p => p.User2.Id != user.Id).Select(p => p.User2).Where(p => (EF.Functions.Like(p.Login, searchKey) || EF.Functions.Like(p.FirstName, searchKey) || EF.Functions.Like(p.LastName, searchKey) || EF.Functions.Like(p.FirstName + p.LastName, searchKey) || EF.Functions.Like(p.LastName + p.FirstName, searchKey)) && p.Id != user.Id).Skip(_serverConfig.Contacts.PartsSize.SearchResultsPerPart * (request.Part - 1)).Take(_serverConfig.Contacts.PartsSize.SearchResultsPerPart).ToArrayAsync(); } SearchContactsResponse searchContacts = new SearchContactsResponse() { Users = new List <ExtUser>(), FriendsId = new List <string>() }; for (int i = 0; i < users1.Length; i++) { searchContacts.Users.Add((ExtUser)users1[i]); searchContacts.Users[i].Img?.SetPath(_serverConfig.General.ServerPath + _serverConfig.FileRoutes.UserImages.Route); } for (int i = 0; i < users2.Length; i++) { searchContacts.Users.Add((ExtUser)users2[i]); } searchContacts.FriendsId.AddRange(friends1); searchContacts.FriendsId.AddRange(friends2); return(MainResponse.GetSuccess(searchContacts)); }
public void NGManager_SearchContacts_Empty_ContactTypeIds_Or_EmptyStatuses_Should_Throw() { var ngManager = new NGManager(); var stubRequest = new SearchContactsRequest { ContractNumber = "dummy1234", FirstName = "Abc", Take = 10, Skip = 0 }; ngManager.SearchContacts(stubRequest); }
public GetOpportunityResponse getOpportunity(GetOpportunityRequest request) { GetOpportunityResponse response = new GetOpportunityResponse(); hasAccess(request.OpportunityID, request.RequestedBy, request.AccountId, request.RoleId); Opportunity opportunity = opportunityRepository.FindBy(request.OpportunityID); if (opportunity == null) { response.Exception = GetOpportunitiesNotFoundException(); } else { SearchContactsRequest contactsRequest = new SearchContactsRequest(); contactsRequest.ContactIDs = opportunity.Contacts.ToArray(); contactsRequest.AccountId = request.AccountId; contactsRequest.RoleId = request.RoleId; contactsRequest.RequestedBy = request.RequestedBy; contactsRequest.Limit = opportunity.Contacts.Count(); contactsRequest.PageNumber = 1; SearchContactsResponse <ContactEntry> contactsResponse = contactService.GetAllContacts <ContactEntry>(contactsRequest); IEnumerable <int> people = opportunity.Contacts; var contacts = contactsResponse.Contacts.Where(c => people.Contains(c.Id)); IEnumerable <Tag> tags = tagRepository.FindByOpportunity(request.OpportunityID); OpportunityViewModel opportunityViewModel = Mapper.Map <Opportunity, OpportunityViewModel>(opportunity); opportunityViewModel.Contacts = contacts; opportunityViewModel.ContactCount = opportunity.Contacts.Count(); response.OpportunityViewModel = opportunityViewModel; opportunityViewModel.TagsList = tags; if (opportunity.ImageID != null) { Image image = opportunityRepository.GetOpportunityProfileImage(opportunity.ImageID.Value); opportunityViewModel.Image = Mapper.Map <Image, ImageViewModel>(image); opportunityViewModel.Image.ImageContent = urlService.GetUrl(opportunityViewModel.AccountID, ImageCategory.OpportunityProfile, opportunityViewModel.Image.StorageName); } } return(response); }
public async void TestSearch() { String accessToken = this.RandomString(); String query = this.RandomString(); SearchContactsRequest req = new SearchContactsRequest(); req.SearchQuery = query; MockAPI <Contacts> mock = this.MockFor <Contacts>( HttpMethod.Post, "/api/v1/contacts.search", m => m.WithContent(req.ToString()) .Respond("application/json", "{ \"contacts\": [{\"contactId\":\"" + this.RandomString() + "\"}]}") ); APIResponse <ContactsResponseBody> res = await mock.Instance.Search(accessToken, query, null); mock.Handler.VerifyNoOutstandingExpectation(); Assert.Equal(res.Body.Contacts.Count, 1); }
public SearchContactsResponse SearchContacts(SearchContactsRequest request) { throw new NotImplementedException(); }
SearchOpportunityResponse search(SearchOpportunityRequest request, IEnumerable <Type> types, IList <string> fields, bool matchAll, bool autoComplete) { SearchOpportunityResponse response = new SearchOpportunityResponse(); SearchParameters parameters = new SearchParameters(); parameters.Limit = request.Limit; parameters.PageNumber = request.PageNumber == 0 ? 1 : request.PageNumber; parameters.Types = types; parameters.MatchAll = matchAll; parameters.AccountId = request.AccountId; parameters.Ids = request.OpportunityIDs; parameters.UserID = request.UserID; parameters.StartDate = request.StartDate; parameters.EndDate = request.EndDate; if (request.SortField != null) { List <string> sortFields = new List <string>(); var maps = SmartTouch.CRM.ApplicationServices.ObjectMappers.MapperConfigurationProvider.Instance.FindTypeMapFor <OpportunityViewModel, Opportunity>(); foreach (var propertyMap in maps.GetPropertyMaps()) { if (request.SortField.Equals(propertyMap.SourceMember.Name)) { sortFields.Add(propertyMap.DestinationProperty.MemberInfo.Name); break; } } parameters.SortDirection = request.SortDirection; parameters.SortFields = sortFields; } Logger.Current.Informational("Search string:" + request.Query); Logger.Current.Informational("Parameters:" + parameters.ToString()); SearchResult <Opportunity> searchResult; bool isAccountAdmin = cachingService.IsAccountAdmin(request.RoleId, request.AccountId); bool isPrivate = cachingService.IsModulePrivate(AppModules.Opportunity, request.AccountId); if (isPrivate && !isAccountAdmin) { int userId = (int)request.RequestedBy; searchResult = searchService.Search(request.Query, c => c.OwnerId == userId, parameters); } else if (request.UserID != null && request.StartDate != null && request.EndDate != null) { int userId = (int)request.UserID; searchResult = searchService.Search(request.Query, c => c.CreatedBy == userId, parameters); } else { searchResult = searchService.Search(request.Query, parameters); } IEnumerable <Opportunity> opportunities = searchResult.Results; Logger.Current.Informational("Search complete, total results:" + searchResult.Results.Count()); if (opportunities == null) { response.Exception = GetOpportunitiesNotFoundException(); } else { IEnumerable <OpportunityViewModel> list = Mapper.Map <IEnumerable <Opportunity>, IEnumerable <OpportunityViewModel> >(opportunities); IEnumerable <int> contactIds = searchResult.Results.SelectMany(o => o.Contacts).Distinct().ToList(); SearchContactsRequest contactsRequest = new SearchContactsRequest(); contactsRequest.ContactIDs = contactIds.ToArray(); contactsRequest.AccountId = request.AccountId; contactsRequest.RoleId = request.RoleId; contactsRequest.RequestedBy = request.RequestedBy; contactsRequest.Limit = contactIds.Count(); contactsRequest.PageNumber = 1; contactsRequest.Module = AppModules.Opportunity; SearchContactsResponse <ContactEntry> contactsResponse = contactService.GetAllContacts <ContactEntry>(contactsRequest); foreach (Opportunity opportunity in searchResult.Results) { var opportunityViewModel = list.SingleOrDefault(o => o.OpportunityID == opportunity.Id); IEnumerable <int> people = opportunity.Contacts; //if (isPrivate && !isAccountAdmin) //{ // IList<int> owncontacts = contactRepository.GetContactByUserId((int)request.RequestedBy); // var peopleinvoled = opportunity.PeopleInvolved.Where(n => !owncontacts.Contains(n.ContactID)); // foreach (var p in peopleinvoled) // { // p.IsPrivate = true; // } //} var contacts = contactsResponse.Contacts.Where(c => people.Contains(c.Id)); opportunityViewModel.Contacts = contacts; } response.Opportunities = list; response.TotalHits = searchResult.TotalHits; } return(response); }