コード例 #1
0
        /// <summary>
        ///     Метод, вызываемый вместе с сохранением документа
        /// </summary>
        private void SavePositionsCommonFolders(bool reloadPostions, List <DBCommand> cmds)
        {
            var positionCommonFolders0 = DocumentPosition <PositionCommonFolder> .LoadByDocId(int.Parse(Id));

            positionCommonFolders0.ForEach(delegate(PositionCommonFolder p0)
            {
                var p = PositionCommonFolders.FirstOrDefault(x => x.Id == p0.Id);
                if (p == null)
                {
                    p0.Delete(false);
                }
            });

            PositionCommonFolders.ForEach(delegate(PositionCommonFolder p)
            {
                if (string.IsNullOrEmpty(p.Id))
                {
                    p.DocumentId = int.Parse(Id);
                    p.Save(reloadPostions, cmds);
                    return;
                }

                var p0 = positionCommonFolders0.FirstOrDefault(x => x.Id == p.Id && x.ChangedTime != p.ChangedTime);
                if (p0 != null)
                {
                    p.Save(reloadPostions, cmds);
                }
            });
        }
コード例 #2
0
        /// <summary>
        ///     Сохранение позици ПозицииУказанийИТПапки
        /// </summary>
        /// <param name="folders">Список выбранных папок</param>
        /// <param name="reloadPostions">Перезапросить данные о позициях</param>
        public void SavePositionsCommonFoldersByDictionary(Dictionary <string, string> folders, bool reloadPostions)
        {
            //Удаляем те позиции, которых нет в списке
            var positionForClear = new List <PositionCommonFolder>();

            foreach (var p in from p in PositionCommonFolders
                     let f = folders.Where(x => x.Key == p.CommonFolderId.ToString())
                             .Select(x => (KeyValuePair <string, string>?)x)
                             .FirstOrDefault()
                             where f == null
                             select p)
            {
                if (string.IsNullOrEmpty(p.Id))
                {
                    positionForClear.Add(p);
                }
                else
                {
                    p.Delete(false);
                }
            }

            positionForClear.ForEach(
                delegate(PositionCommonFolder p) { PositionCommonFolders.RemoveAll(x => x.GuidId == p.GuidId); });

            //получаем сохраненные позиции
            var cfSaved = DocumentPosition <PositionCommonFolder> .LoadByDocId(int.Parse(Id));


            //сохраняем те выбранные элементы, для которых уже были созданы объекты PositionCommonFolders
            PositionCommonFolders.Where(x => string.IsNullOrEmpty(x.Id)).ToList().ForEach(
                delegate(PositionCommonFolder p)
            {
                if (cfSaved.Count > 0)
                {
                    var cf = cfSaved.FirstOrDefault(x => x.CommonFolderId == p.CommonFolderId);
                    if (cf != null)
                    {
                        return;
                    }
                }

                p.DocumentId = int.Parse(Id);
                p.Save(false);
            });

            //сохраняем те выбранные элементы, для которых не созданы объекты PositionCommonFolders
            foreach (var p in from f in folders
                     let p = PositionCommonFolders.FirstOrDefault(x => x.CommonFolderId.ToString() == f.Key)
                             where p == null
                             select new PositionCommonFolder
            {
                DocumentId = int.Parse(Id),
                CommonFolderId = int.Parse(f.Key),
                CommonFolderName = f.Value
            })
            {
                if (cfSaved.Count > 0)
                {
                    var cf = cfSaved.FirstOrDefault(x => x.CommonFolderId == p.CommonFolderId);
                    if (cf != null)
                    {
                        continue;
                    }
                }

                p.Save(false);
                PositionCommonFolders.Add(p);
            }

            //удаляем те позиции, которых нет в PositionCommonFolders
            cfSaved.ForEach(delegate(PositionCommonFolder p)
            {
                var delP = PositionCommonFolders.FirstOrDefault(x => x.CommonFolderId == p.CommonFolderId);
                if (delP == null)
                {
                    p.Delete(false);
                }
            });

            if (reloadPostions)
            {
                LoadPositionCommonFolders();
            }
        }