public async Task <VMGetNodes> CreateAsync(VMAddNodes node) { if (!_validator.Validate(node.Name)) { throw new ArgumentException("Data not valid. Name must has maximum 30 chars."); } var level = _context.Nodes.Where(x => x.IdNode == node.ParentId).Select(x => x.Level).FirstOrDefault(); var newNode = new DbNode { Level = level + 1, Name = node.Name, ParentId = node.ParentId }; var result = await _context.Nodes.AddAsync(newNode); _context.SaveChanges(); var dbNode = result.Entity; var viewModel = new VMGetNodes(); viewModel.IdNode = dbNode.IdNode; viewModel.Level = dbNode.Level; viewModel.Name = dbNode.Name; viewModel.ParentId = dbNode.ParentId; return(viewModel); }
public async Task <VMGetNodes> UpdateAsync(VMEditNode node, Guid id) { if (!_validator.Validate(node.Name)) { throw new ArgumentException("Data not valid. Name must start with character and has maximum 30 chars."); } var nodeToEdit = _context.Nodes.Where(x => x.IdNode == id).FirstOrDefault(); if (nodeToEdit == null) { return(null); } nodeToEdit.Name = node.Name; var result = _context.Nodes.Update(nodeToEdit); await _context.SaveChangesAsync(); var editedNode = result.Entity; var viewModel = new VMGetNodes(); viewModel.IdNode = editedNode.IdNode; viewModel.Level = editedNode.Level; viewModel.Name = editedNode.Name; viewModel.ParentId = editedNode.ParentId; return(viewModel); }
public async Task <List <VMGetNodes> > GetNodesAsync() { var dbNodes = await _context.Nodes.Where(x => x.IdNode != Guid.Empty).ToListAsync(); List <VMGetNodes> nodesList = new List <VMGetNodes>(); foreach (var node in dbNodes) { var newNode = new VMGetNodes() { IdNode = node.IdNode, Level = node.Level, Name = node.Name, ParentId = node.ParentId }; nodesList.Add(newNode); } return(nodesList); }