ToSic.SexyContent.ContentGroup.UpdateEntityIfChanged C# (CSharp) Method

UpdateEntityIfChanged() public method

public UpdateEntityIfChanged ( string type, int sortOrder, int entityId, bool updatePresentation, int presentationId ) : void
type string
sortOrder int
entityId int
updatePresentation bool
presentationId int
return void
        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);
        }