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); }