/// <summary> Get the language specific item aggregation, from the complete item aggregation object </summary>
/// <param name="CompAggr"> Copmlete item aggregation object </param>
/// <param name="RequestedLanguage"> Language version requested </param>
/// <param name="Tracer"></param>
/// <returns> The language-specific aggregation, built from the complete aggregation object, or NULL if an error occurred </returns>
public static Item_Aggregation Get_Item_Aggregation(Complete_Item_Aggregation CompAggr, Web_Language_Enum RequestedLanguage, Custom_Tracer Tracer)
{
// If the complete aggregation was null, return null
if (CompAggr == null)
{
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "Complete item aggregation was NULL.. aborting and returning NULL");
}
return null;
}
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "Building language-specific item aggregation from the complete object");
}
// Build the item aggregation
Item_Aggregation returnValue = new Item_Aggregation(RequestedLanguage, CompAggr.ID, CompAggr.Code)
{
Active = CompAggr.Active,
BannerImage = CompAggr.Banner_Image(RequestedLanguage, null ),
Child_Types = CompAggr.Child_Types,
Contact_Email = CompAggr.Contact_Email,
ContactForm = CompAggr.ContactForm,
CSS_File = CompAggr.CSS_File,
Default_BrowseBy = CompAggr.Default_BrowseBy,
Default_Result_View = CompAggr.Default_Result_View,
Default_Skin = CompAggr.Default_Skin,
Description = CompAggr.Description,
Display_Options = CompAggr.Display_Options,
FrontBannerObj = CompAggr.Front_Banner_Image(RequestedLanguage),
Hidden = CompAggr.Hidden,
Last_Item_Added = CompAggr.Last_Item_Added,
Name = CompAggr.Name,
Rotating_Highlights = CompAggr.Rotating_Highlights,
ShortName = CompAggr.ShortName,
Statistics = CompAggr.Statistics,
Type = CompAggr.Type
};
// Copy the map search and browse information
if (CompAggr.Map_Search_Display != null) returnValue.Map_Search_Display = CompAggr.Map_Search_Display.Copy();
if (CompAggr.Map_Browse_Display != null) returnValue.Map_Browse_Display = CompAggr.Map_Browse_Display.Copy();
// Copy any children aggregations over
if (CompAggr.Active_Children_Count > 0)
{
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "...Copying children objects");
}
returnValue.Children = new List<Item_Aggregation_Related_Aggregations>();
foreach (Item_Aggregation_Related_Aggregations thisAggr in CompAggr.Children)
{
returnValue.Children.Add(thisAggr);
}
}
// Copy any parent aggregations over
if (CompAggr.Parent_Count > 0)
{
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "...Copying parent objects");
}
returnValue.Parents = new List<Item_Aggregation_Related_Aggregations>();
foreach (Item_Aggregation_Related_Aggregations thisAggr in CompAggr.Parents)
{
returnValue.Parents.Add(thisAggr);
}
}
// Copy all the facet information over
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "...Copying facets");
}
foreach (short thisFacet in CompAggr.Facets)
{
returnValue.Facets.Add(thisFacet);
}
// Copy over all the results views
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "...Copying result views");
}
foreach (Result_Display_Type_Enum display in CompAggr.Result_Views)
{
returnValue.Result_Views.Add(display);
}
// Copy all the views and searches over
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "...Copying views and searches");
}
if (CompAggr.Views_And_Searches != null)
{
foreach (Item_Aggregation_Views_Searches_Enum viewsSearches in CompAggr.Views_And_Searches)
{
returnValue.Views_And_Searches.Add(viewsSearches);
}
}
// Copy all the setting values
if ((CompAggr.Settings != null) && (CompAggr.Settings.Count > 0))
{
foreach (StringKeyValuePair setting in CompAggr.Settings)
{
returnValue.Add_Setting(setting.Key, setting.Value );
}
}
// Copy over any web skin limitations
if ((CompAggr.Web_Skins != null) && (CompAggr.Web_Skins.Count > 0))
{
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "...Copying web skins");
}
returnValue.Web_Skins = new List<string>();
foreach (string thisSkin in CompAggr.Web_Skins)
{
returnValue.Web_Skins.Add(thisSkin);
}
}
// Language-specific (and simplified) metadata type info
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "...Copying search anbd browseable fields");
}
foreach (Complete_Item_Aggregation_Metadata_Type thisAdvSearchField in CompAggr.Search_Fields)
{
returnValue.Search_Fields.Add(new Item_Aggregation_Metadata_Type(thisAdvSearchField.DisplayTerm, thisAdvSearchField.SobekCode));
}
foreach (Complete_Item_Aggregation_Metadata_Type thisAdvSearchField in CompAggr.Browseable_Fields)
{
returnValue.Browseable_Fields.Add(new Item_Aggregation_Metadata_Type(thisAdvSearchField.DisplayTerm, thisAdvSearchField.SobekCode));
}
// Language-specific (and simplified) child pages information
if ((CompAggr.Child_Pages != null) && (CompAggr.Child_Pages.Count > 0))
{
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "...Copying child pages");
}
returnValue.Child_Pages = new List<Item_Aggregation_Child_Page>();
foreach (Complete_Item_Aggregation_Child_Page fullPage in CompAggr.Child_Pages)
{
Item_Aggregation_Child_Page newPage = new Item_Aggregation_Child_Page
{
Browse_Type = fullPage.Browse_Type,
Code = fullPage.Code,
Parent_Code = fullPage.Parent_Code,
Source_Data_Type = fullPage.Source_Data_Type
};
string label = fullPage.Get_Label(RequestedLanguage);
if (!String.IsNullOrEmpty(label))
newPage.Label = label;
string source = fullPage.Get_Static_HTML_Source(RequestedLanguage);
if (!String.IsNullOrEmpty(label))
newPage.Source = source;
returnValue.Child_Pages.Add(newPage);
}
}
// Language-specific (and simplified) highlight information
if ((CompAggr.Highlights != null) && (CompAggr.Highlights.Count > 0))
{
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "...Copying relevant highlights");
}
returnValue.Highlights = new List<Item_Aggregation_Highlights>();
int day_integer = DateTime.Now.DayOfYear + 1;
int highlight_to_use = day_integer % CompAggr.Highlights.Count;
// If this is for rotating highlights, show up to eight
if ((CompAggr.Rotating_Highlights.HasValue ) && ( CompAggr.Rotating_Highlights.Value ))
{
// Copy over just the eight highlights we should use
int number = Math.Min(8, CompAggr.Highlights.Count);
for (int i = 0; i < number; i++)
{
Complete_Item_Aggregation_Highlights thisHighlight = CompAggr.Highlights[highlight_to_use];
Item_Aggregation_Highlights newHighlight = new Item_Aggregation_Highlights
{
Image = thisHighlight.Image,
Link = thisHighlight.Link
};
string text = thisHighlight.Get_Text(RequestedLanguage);
if (!String.IsNullOrEmpty(text))
newHighlight.Text = text;
string tooltip = thisHighlight.Get_Tooltip(RequestedLanguage);
if (!String.IsNullOrEmpty(tooltip))
newHighlight.Tooltip = tooltip;
returnValue.Highlights.Add(newHighlight);
highlight_to_use++;
if (highlight_to_use >= CompAggr.Highlights.Count)
highlight_to_use = 0;
}
}
else
{
Complete_Item_Aggregation_Highlights thisHighlight = CompAggr.Highlights[highlight_to_use];
Item_Aggregation_Highlights newHighlight = new Item_Aggregation_Highlights
{
Image = thisHighlight.Image,
Link = thisHighlight.Link
};
string text = thisHighlight.Get_Text(RequestedLanguage);
if (!String.IsNullOrEmpty(text))
newHighlight.Text = text;
string tooltip = thisHighlight.Get_Tooltip(RequestedLanguage);
if (!String.IsNullOrEmpty(tooltip))
newHighlight.Tooltip = tooltip;
returnValue.Highlights.Add(newHighlight);
}
}
// Language-specific source page
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "Getting the home page source");
}
returnValue.HomePageSource = String.Empty;
HTML_Based_Content homeHtml = Get_Home_HTML(CompAggr, RequestedLanguage, null);
returnValue.HomePageHtml = homeHtml;
returnValue.Custom_Home_Page = (CompAggr.Home_Page_File(RequestedLanguage) != null) && (CompAggr.Home_Page_File(RequestedLanguage).isCustomHome);
if (Tracer != null)
{
Tracer.Add_Trace("Item_Aggregation_Utilities.Get_Item_Aggregation", "Returning fully built item aggregation object");
}
return returnValue;
}