private Models.SearchResult CreateRelated(MetadataViewModel result) { Models.SearchResult res = null; if (result != null && result.Related != null) { res = new Models.SearchResult(); res.NumFound = result.Related.Count(); res.Offset = 1; res.Limit = result.Related.Count(); res.Items = new List <Models.SearchResultItem>(); res.Facets = new List <Models.Facet>(); res.Facets.Add(new Models.Facet { FacetField = "relateddata", FacetResults = new List <Models.Facet.FacetValue> { new Models.Facet.FacetValue { Count = result.Related.Count(), Name = "relateddata" } } }); foreach (var related in result.Related) { Models.SearchResultItem item = new Models.SearchResultItem(); item.Title = related.Title; item.Type = related.HierarchyLevel; item.Theme = related.KeywordsNationalTheme != null && related.KeywordsNationalTheme.Count > 0 ? related.KeywordsNationalTheme.FirstOrDefault().KeywordValue : ""; item.Organization = related.ContactOwner != null && related.ContactOwner.Organization != null ? related.ContactOwner.Organization : ""; item.OrganizationLogoUrl = related.OrganizationLogoUrl; item.ThumbnailUrl = related.Thumbnails != null && related.Thumbnails.Count > 0 ? related.Thumbnails[0].URL : ""; item.DistributionUrl = related.DistributionDetails != null && related.DistributionDetails.URL != null ? related.DistributionDetails.URL : null; item.ServiceDistributionUrlForDataset = related.ServiceDistributionUrlForDataset; item.ServiceWfsDistributionUrlForDataset = related.ServiceWfsDistributionUrlForDataset; item.Uuid = related.Uuid; res.Items.Add(item); } } return(res); }
private async Task ExecuteResultAsync(long resultId, Models.SearchResultItem item) { using (var context = this.dataAccess.GetContext()) { var result = await context.Tracking <DAL.Entities.SearchResult>() .Include(e => e.Query) .SingleAsync(e => e.Id == resultId); result.Name = item.Name; result.Description = item.Description; result.Ends = item.Ends ?? result.Ends; result.BidPrice = item.BidPrice; result.PurchasePrice = item.PurchasePrice; result.Closed = false; result.Sold = false; result.FinalPrice = null; if (!result.Hidden && result.Query.AutoFilterDeletedDuplicates) { var hasDeletedDuplicates = await context.NoTracking <DAL.Entities.SearchResult>() .AnyAsync(e => e.QueryId == this.Id && e.Hidden && e.Name == result.Name && e.Description == result.Description); result.Hidden = result.Hidden || hasDeletedDuplicates; if (hasDeletedDuplicates) { // todo lower level Context.GetCurrentLogger().Information("Deleted duplicates found for result with id {ResultId}", resultId); } } await context.SaveChangesAsync(); } }