Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
            }
        }