private void DeleteChildren(DataModel context, Node parent) { var children = context.Nodes.Where(x => x.Parent.Id == parent.Id); foreach (var child in children) { DeleteChildren(context, child); } context.Nodes.Remove(parent); }
public int Save(SaveNodeViewModel viewModel) { using (var context = new DataModel()) { var node = !viewModel.Id.HasValue ? AddNode(context, viewModel) : SaveNode(context, viewModel); context.SaveChanges(); return node.Id; } }
public IndexViewModel GetIndex() { using (var context = new DataModel()) { var nodes = Mapper.Map<List<Node>, List<IndexNodeViewModel>>(context.Nodes.Where(x => x.Parent == null).ToList()); return new IndexViewModel { Nodes = nodes }; } }
public IndexViewModel GetIndex() { using (var context = new DataModel()) { var projects = context.Projects.OrderByDescending(x => x.DateModified).Take(5).ToList(); return new IndexViewModel { Projects = Mapper.Map<List<Project>, List<IndexProjectViewModel>>(projects) }; } }
private Node AddNode(DataModel context, SaveNodeViewModel viewModel) { var node = Mapper.Map<SaveNodeViewModel, Node>(viewModel); if (viewModel.ParentId.HasValue) { var parent = context.Nodes.FirstOrDefault(x => x.Id == viewModel.ParentId); if (parent == null) throw new ArgumentException("Parent node was not found"); node.Parent = parent; } context.Nodes.Add(node); return node; }
public void Delete(int id) { using (var context = new DataModel()) { var node = context.Nodes.FirstOrDefault(x => x.Id == id); if (node == null) throw new ArgumentException("Id was not found"); DeleteChildren(context, node); context.Nodes.Remove(node); context.SaveChanges(); } }
private Node SaveNode(DataModel context, SaveNodeViewModel viewModel) { var node = context.Nodes.FirstOrDefault(x => x.Id == viewModel.Id); if (node == null) throw new ArgumentException("Node was not found"); Mapper.Map(viewModel, node); if (viewModel.ParentId.HasValue && (node.Parent == null || viewModel.ParentId.GetValueOrDefault(-1) != node.Parent.Id)) { var parent = context.Nodes.FirstOrDefault(x => x.Id == viewModel.ParentId); if (parent == null) throw new ArgumentException("Parent node was not found"); node.Parent = parent; } else if (!viewModel.ParentId.HasValue && node.Parent != null) node.Parent = null; return node; }