v1.0.6.2
This commit is contained in:
@@ -231,41 +231,41 @@ namespace Saxonite.Net.Core.Web.Base.Consoles
|
||||
IndexStatsData stats = new IndexStatsData();
|
||||
|
||||
// Index entries required for activity.
|
||||
List<IndexEntryData> indexEntries = GetEntriesForIndex(indexData);
|
||||
List<IndexEntryData> indexEntryDataList = GetEntriesForIndex(indexData);
|
||||
|
||||
// Retrieve existing index entries for the item.
|
||||
List<SaxActivityIndex> itemIndexEntries = internals.ActivityMgr.GetActivityIndexListForItem(indexData.ItemId);
|
||||
foreach (SaxActivityIndex itemIndexEntry in itemIndexEntries)
|
||||
List<SaxActivityIndex> indexEntries = internals.ActivityMgr.GetActivityIndexListForItem(indexData.ItemId);
|
||||
foreach (SaxActivityIndex indexEntry in indexEntries)
|
||||
{
|
||||
// Is the index entry still required.
|
||||
// Logic only compares the Ids (item, sport, region) and then updates the effective date if a match is found.
|
||||
// Based on the fact that and change in the effective date will impact all entries in the index for the item
|
||||
// and this approach minimises the number of updates required as Ids can't be changed in code (protected setters).
|
||||
IndexEntryData indexEntry = indexEntries.Find(item => item.MatchesIds(itemIndexEntry));
|
||||
if (indexEntry != null)
|
||||
IndexEntryData indexEntrydata = indexEntryDataList.Find(item => item.MatchesIds(indexEntry));
|
||||
if (indexEntrydata != null)
|
||||
{
|
||||
// Match found - if the effective date differs, update it.
|
||||
if (!itemIndexEntry.EffectiveOn.Equals(indexEntry.EffectiveOn))
|
||||
if (!indexEntry.EffectiveOn.Equals(indexEntrydata.EffectiveOn))
|
||||
{
|
||||
itemIndexEntry.EffectiveOn = indexEntry.EffectiveOn;
|
||||
if (internals.ActivityMgr.UpdateActivityIndex(itemIndexEntry, dbUpdateInfo))
|
||||
indexEntry.EffectiveOn = indexEntrydata.EffectiveOn;
|
||||
if (internals.ActivityMgr.UpdateActivityIndex(indexEntry, dbUpdateInfo))
|
||||
stats.EntriesUpdated++;
|
||||
else SaLogger.Warn(fn + " Failed to update Activity Index - " + internals.ActivityMgr.ErrorStateMessage);
|
||||
}
|
||||
// Remove the entry from the 'required' list.
|
||||
// Entries remaining in this list will be created.
|
||||
indexEntries.Remove(indexEntry);
|
||||
indexEntryDataList.Remove(indexEntrydata);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Index entry no longer required.
|
||||
if (internals.ActivityMgr.DeleteActivityIndex(itemIndexEntry, dbUpdateInfo))
|
||||
if (internals.ActivityMgr.DeleteActivityIndex(indexEntry, dbUpdateInfo))
|
||||
stats.EntriesDeleted++;
|
||||
else SaLogger.Warn(fn + " Failed to delete Activity Index - " + internals.ActivityMgr.ErrorStateMessage);
|
||||
}
|
||||
}
|
||||
// The remaining required Index entries will be created.
|
||||
foreach (IndexEntryData indexEntry in indexEntries)
|
||||
foreach (IndexEntryData indexEntry in indexEntryDataList)
|
||||
{
|
||||
SaxActivityIndex itemIndexEntry = internals.ActivityMgr.CreateActivityIndex(indexEntry.ItemId, indexEntry.SportId, indexEntry.RegionId, indexEntry.EffectiveOn);
|
||||
if (internals.ActivityMgr.InsertActivityIndex(itemIndexEntry, dbUpdateInfo))
|
||||
|
||||
Reference in New Issue
Block a user