Example #1
0
 private ProfileNodeVM CreateNodeVM(ProfileNodeDO profileNode)
 {
     return new ProfileNodeVM
     {
         Id = profileNode.Id,
         Label = profileNode.Name,
         Items = profileNode.ProfileItems.Select(pi => new ProfileNodeItemVM
         {
             Id = pi.Id,
             ItemName = pi.Key,
             ItemValue = pi.Value
         }).ToList(),
         Children = profileNode.ChildNodes.Select(CreateNodeVM).ToList()
     };
 }
Example #2
0
        private void CreateNewNodes(IUnitOfWork uow, int profileID, ProfileNodeDO parentProfileNodeDO, IEnumerable<ProfileVM.ProfileNodeVM> nodes)
        {
            foreach (var node in nodes)
            {
                ProfileNodeDO nodeDO;
                if (node.Id == 0)
                {
                    nodeDO = new ProfileNodeDO();
                    uow.ProfileNodeRepository.Add(nodeDO);
                }
                else
                {
                    nodeDO = uow.ProfileNodeRepository.GetByKey(node.Id);
                }
                nodeDO.ProfileID = profileID;
                nodeDO.Name = node.Label;

                //Add profile items..
                if (node.Items != null)
                {
                    HashSet<int> currentItems = new HashSet<int>();
                    foreach (var item in node.Items)
                    {
                        ProfileItemDO profileItemDO;
                        if (item.Id == 0)
                        {
                            profileItemDO = new ProfileItemDO();
                            uow.ProfileItemRepository.Add(profileItemDO);
                        }
                        else
                        {
                            profileItemDO = uow.ProfileItemRepository.GetByKey(item.Id);
                        }
                        profileItemDO.ProfileNode = nodeDO;
                        profileItemDO.Key = item.ItemName;
                        profileItemDO.Value = item.ItemValue;
                        currentItems.Add(item.Id);
                    }
                    var rowsToDelete = uow.ProfileItemRepository.GetQuery().Where(pi => !currentItems.Where(a => a != 0).Contains(pi.Id)).ToList();
                    foreach(var rowToDelete in rowsToDelete)
                        uow.ProfileItemRepository.Remove(rowToDelete);
                }
                else {
                    var rowsToDelete = uow.ProfileItemRepository.GetQuery().Where(pi => pi.ProfileNodeID == nodeDO.Id).ToList();
                    foreach (var rowToDelete in rowsToDelete)
                        uow.ProfileItemRepository.Remove(rowToDelete);
                }

                nodeDO.ParentNode = parentProfileNodeDO;

                if (node.Children != null)
                {
                    CreateNewNodes(uow, profileID, nodeDO, node.Children);
                }
            }
        }