public async Task <ActionResult> CreatePage()
        {
            string pageName = "New Page";


            // Create the new page
            DataAccess.Models.Page page = new DataAccess.Models.Page
            {
                Name    = pageName,
                UrlId   = Guid.NewGuid().ToString("N").Substring(0, 10).ToUpper(),
                UrlName = GetUrlName(pageName),
                Content = ""
            };

            // Add and save
            unitOfWork.Pages.Add(page);
            await unitOfWork.Save();

            // Update the content with the new Id and update
            page.Content = "{\"id\":" + page.Id + ",\"name\":\"" + pageName + "\",\"background\":{\"color\":\"#00000000\"}}";
            unitOfWork.Pages.Update(page);


            await unitOfWork.Save();


            // Return the new page content
            return(Ok(page.Content));
        }
        public async Task <ActionResult> DuplicatePage(int pageId)
        {
            // Get the page
            DataAccess.Models.Page page = await unitOfWork.Pages.Get(pageId);

            page.Id   = 0;
            page.Name = "New Page";

            var pageContent = await pageService.GePage(page.Content, new QueryParams());

            // Add the duplicated page and save
            unitOfWork.Pages.Add(page);
            await unitOfWork.Save();


            // Update the content
            page.Content               = Regex.Replace(page.Content, "^{\"id\":" + pageId, "{\"id\":" + page.Id);
            page.Content               = Regex.Replace(page.Content, "\"referenceItems\":\\[[\\w\\d\\s\\W\\D\\S]*\\](?=,\"background\")", "\"referenceItems\": null");
            page.Content               = Regex.Replace(page.Content, "\"name\":\"" + pageContent.Name + "\"", "\"name\":\"" + page.Name + "\"");
            pageContent.Name           = page.Name;
            pageContent.ReferenceItems = null;
            pageContent.Id             = page.Id;

            unitOfWork.Pages.Update(page);
            await unitOfWork.Save();


            // Return the page content
            return(Ok(pageContent));
        }
        public async Task <ActionResult> DeletePage(int pageId)
        {
            DataAccess.Models.Page page = await unitOfWork.Pages.Get(pageId);

            unitOfWork.Pages.Remove(page);
            await unitOfWork.Save();

            return(Ok());
        }
        public async Task <ActionResult> UpdatePage(UpdatedPage updatedPage)
        {
            DataAccess.Models.Page page = await unitOfWork.Pages.Get(updatedPage.PageId);

            page.Name        = updatedPage.Name;
            page.UrlName     = GetUrlName(updatedPage.Name);
            page.DisplayType = (int)updatedPage.DisplayType;
            page.Content     = updatedPage.Content;

            // Update and save
            unitOfWork.Pages.Update(page);
            await unitOfWork.Save();


            return(Ok());
        }