public IActionResult Add(ItemModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            // Determine if the parent already exists.
            var path   = System.IO.Path.GetDirectoryName(model.Path).Replace("\\", "/");
            var parent = _context.Items.FirstOrDefault(i => i.Path == path) ?? new Item()
            {
                Name        = new System.IO.DirectoryInfo(path).Name,
                Path        = path,
                PublishedOn = model.PublishedOn?.ToUniversalTime(),
                CreatedOn   = model.CreatedOn?.ToUniversalTime() ?? DateTime.UtcNow,
                UpdatedOn   = model.UpdatedOn?.ToUniversalTime() ?? DateTime.UtcNow
            };

            var item = new Item()
            {
                Name        = model.Name,
                Path        = model.Path,
                Description = model.Description,
                Author      = model.Author,
                PublishedOn = model.PublishedOn?.ToUniversalTime(),
                CreatedOn   = model.CreatedOn?.ToUniversalTime() ?? DateTime.UtcNow,
                UpdatedOn   = model.UpdatedOn?.ToUniversalTime() ?? DateTime.UtcNow,
                Parent      = parent
            };

            _context.Items.Add(item);
            _context.SaveChanges();

            return(new JsonResult(new ItemModel(item)));
        }
        public IActionResult Add(PageModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var page = new Page()
            {
                Name      = model.Name,
                Path      = model.Path,
                SortOrder = model.SortOrder,
                Body      = model.Body,
                IsEnabled = model.IsEnabled
            };

            _context.Pages.Add(page);
            _context.SaveChanges();

            return(new JsonResult(new PageModel(page)));
        }
        public IActionResult Add(UserModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var user = new User()
            {
                Id          = Guid.NewGuid(),
                Username    = model.Username,
                Email       = model.Email,
                Password    = _auth.HashPassword(model.Password),
                DisplayName = model.DisplayName,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                IsEnabled   = model.IsEnabled
            };

            _context.Users.Add(user);
            _context.SaveChanges();

            return(new JsonResult(new UserModel(user)));
        }