public IActionResult Update(int id, PageModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var page = _context.Pages.FirstOrDefault(i => i.Id == id) ?? throw new ArgumentOutOfRangeException(nameof(id), "Page does not exist.");

            page.Name      = model.Name;
            page.Path      = model.Path;
            page.SortOrder = model.SortOrder;
            page.Body      = model.Body;
            page.IsEnabled = model.IsEnabled;

            _context.Update(page);
            _context.SaveChanges();

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

            var user = _context.Users.FirstOrDefault(i => i.Id == id) ?? throw new ArgumentOutOfRangeException(nameof(id), "User does not exist.");

            user.Username    = model.Username;
            user.Email       = model.Email;
            user.Password    = _auth.HashPassword(model.Password);
            user.DisplayName = model.DisplayName;
            user.FirstName   = model.FirstName;
            user.LastName    = model.LastName;
            user.IsEnabled   = model.IsEnabled;

            _context.Update(user);
            _context.SaveChanges();

            return(new JsonResult(new UserModel(user)));
        }
        public IActionResult Update(int id, 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 = _context.Items.FirstOrDefault(i => i.Id == id) ?? throw new ArgumentOutOfRangeException(nameof(id), "Item does not exist.");

            item.Name        = model.Name;
            item.Description = model.Description;
            item.Path        = model.Path;
            item.Author      = model.Author;
            item.PublishedOn = model.PublishedOn?.ToUniversalTime();
            item.CreatedOn   = model.CreatedOn?.ToUniversalTime() ?? DateTime.UtcNow;
            item.UpdatedOn   = model.UpdatedOn?.ToUniversalTime() ?? DateTime.UtcNow;
            item.Parent      = parent;

            if (parent.Id == 0)
            {
                _context.Add(parent);
            }
            _context.Update(item);
            _context.SaveChanges();

            return(new JsonResult(new ItemModel(item)));
        }