public int ResolveId()
{
//TODO: Need to test this method with a database (children's) that has all the scenarios.
//NOTE: At this point I'm not sure of the presedence here. The other issue is that within the
//presedence issue there may be "exit" situations which is hard to control/debug. Need valid
//test cases to further refactor.hk
int id = -1;
//there is an oldArticleId and displayOption is "Article"
//NOTE: TO make these work you must verify that the mapping tables exists.
//Publish_CategoryMapping
//Columns: NewItemId and OldArticleID
//Publish_ArticleMapping
//Columns: NewItemId and OldCateogryID
if (PreviousArticleId != -1 && string.Compare(DisplayOption, "texthtml", StringComparison.OrdinalIgnoreCase) == 0)
{
id = ItemId;
}
//Verify that these tables have been populated correctly! hk
if (PreviousArticleId != -1 && string.Compare(DisplayOption, "article", StringComparison.OrdinalIgnoreCase) == 0)
{
id = Article.GetOldArticleId(PreviousArticleId);
}
//there is an oldArticleID and displayOption is either "Title" or "Abstract"
if (PreviousCategoryId != -1 && (string.Compare(DisplayOption, "title", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(DisplayOption, "abstract", StringComparison.OrdinalIgnoreCase) == 0))
{
id = Category.GetOldCategoryId(PreviousCategoryId);
}
//Old article ID passed in (aid).
object oAid = HttpContext.Current.Request.QueryString["aid"];
if (oAid != null)
{
id = Article.GetOldArticleId(Convert.ToInt32(oAid, CultureInfo.InvariantCulture));
}
//There is an ArticleId
if (AdArticleId != -1 && DisplayType == "ArticleDisplay")
{
if (!IsOverrideable || (IsOverrideable && id == -1))
{
id = AdArticleId;
}
}
else if (AdArticleId != -1 && String.IsNullOrEmpty(DisplayType))
{
id = AdArticleId;
}
//There is a CategoryId
if (CategoryId != -1 && (DisplayType == "CategoryDisplay" || DisplayType == "ItemListing" || DisplayType == "CategoryFeatureDisplay" || DisplayType == "CategorySearch" || DisplayType == "CategoryNLevels" || DisplayType == "CustomDisplay"))
{
if (!IsOverrideable || (IsOverrideable && id == -1))
{
id = CategoryId;
}
}
if (CategoryId != -1 && String.IsNullOrEmpty(DisplayType))
{
id = CategoryId;
}
return(id);
}