public void UpdateEntityIfChanged(string type, int sortOrder, int? entityId, bool updatePresentation,
int? presentationId)
{
var somethingChanged = false;
if (sortOrder == -1)
throw new Exception("Sortorder is never -1 any more; deprecated");
var listMain = ListWithNulls(type); // this[type].Select(p => p?.EntityId).ToList();
// if necessary, add to end
if (listMain.Count < sortOrder + 1)
listMain.AddRange(Enumerable.Repeat(new int?(), (sortOrder + 1) - listMain.Count));
if (listMain[sortOrder] != entityId)
{
listMain[sortOrder] = entityId;
somethingChanged = true;
}
var package = PrepareSavePackage(type, listMain);
if (updatePresentation)
{
var type2 = ReCapitalizePartName(type).Replace(cContent, cPresentation);
var listPres = ListWithNulls(type2);
if (listPres.Count < sortOrder + 1)
listPres.AddRange(Enumerable.Repeat(new int?(), (sortOrder + 1) - listPres.Count));
if (listPres[sortOrder] != presentationId)
{
listPres[sortOrder] = presentationId;
somethingChanged = true;
}
package = PrepareSavePackage(type2, listPres, package);
}
if (somethingChanged)
SaveChangedLists(package);
}