Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }