void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
        public async Task <IActionResult> Delete(int?id, string blogname)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var mpost = await postManager.Details(id);

            ViewPost post = new ViewPost();

            post.ImportFromModel(mpost);
            //MarkDownManager markDownManager = new MarkDownManager();
            //post.HTMLcontent = markDownManager.ConvertToHtml(mpost.content);
            //BBCodeManager bBCodeManager = new BBCodeManager();
            //post.HTMLcontent = bBCodeManager.ConvertToHtml(mpost.content);
            MarkUpManager markUpManager = new MarkUpManager();

            post.HTMLcontent = markUpManager.ConvertToHtml(mpost.content);
            if (post == null)
            {
                return(NotFound());
            }
            ViewBag.BlogName = blogname;
            return(View(post));
        }
        public async Task <IActionResult> Edit(int?id, string blogname)
        {
            //return View();

            ViewBag.CreateAction = 0;

            //string pathbase;
            string pathbase = AppSettingsManager.GetPathBase();

            if (CommonTools.isEmpty(pathbase) == false)
            {
                ViewBag.pathbase = pathbase;
            }

            if (id == null)
            {
                return(NotFound());
            }

            var post = await this.postManager.Details(id);

            if (post == null)
            {
                return(NotFound());
            }



            ViewBag.BlogId = post.BlogId;


            var vpost = new ViewPost();

            vpost.ImportFromModel(post);
            //MarkDownManager markDownManager = new MarkDownManager();
            //vpost.content = markDownManager.ConvertToHtml(post.content);
            //BBCodeManager bBCodeManager = new BBCodeManager();
            //vpost.HTMLcontent = bBCodeManager.ConvertToHtml(post.content);
            MarkUpManager markUpManager = new MarkUpManager();

            vpost.HTMLcontent = markUpManager.ConvertToHtml(post.content);
            var cmsengine = AppSettingsManager.GetAppWideCMSEngine();

            if (cmsengine == enumMarkupEngine.QUIL.ToString())
            {
                vpost.content = vpost.content.Replace("{\"ops\":", "");
                vpost.content = vpost.content.Remove(vpost.content.Length - 1, 1);
            }
            vpost.CategoriesToString = await CategoryManager.GetCategoryNamesToString(vpost.Blog.Name, (int)id);

            return(View(vpost));
        }
        public async Task <IActionResult> Create(string blogname, [Bind("Id,Title,Published,content,Author,RowVersion,BlogId,engine,CategoriesToString")] ViewPost post)
        {
            //if (ModelState.IsValid)
            {
                post.Author = await PostManager.db.Users.FirstAsync(x => x.UserName == User.Identity.Name);

                var           mpost           = post.ToModel(User.Identity.Name);
                MarkUpManager markDownManager = new MarkUpManager();
                mpost.content = markDownManager.ConvertFromHtmlToMarkUp(post.content);

                var blog = await blmngr.GetBlogByIdAsync(mpost.BlogId);


                await postManager.Create(mpost, this.User.Identity.Name);

                if (post.CategoriesToString != null)
                {
                    var catgories = post.CategoriesToString.Split(",").ToList();
                    if (catgories != null)
                    {
                        await CategoryManager.AttachCategoryRangetoPost(catgories, blog.Name, mpost.Id);
                    }
                }
                if (post.TagsToString != null)
                {
                    var tags = post.TagsToString.Split(",").ToList();
                    if (tags != null)
                    {
                        await TagManager.AttachTagRangetoPost(tags, blog.Name, mpost.Id);
                    }
                }
                //blmngr.GetBlogAsync()
                return(RedirectToAction(nameof(Index), "Posts", new { id = blog.Name }));
            }
            // return View(post);
        }
        // GET: Posts/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var mpost = await postManager.Details(id);

            ViewPost post = new ViewPost();

            post.ImportFromModel(mpost);
            //MarkDownManager markDownManager = new MarkDownManager();
            //post.HTMLcontent = markDownManager.ConvertToHtml(mpost.content);
            //BBCodeManager bBCodeManager = new BBCodeManager();
            //post.HTMLcontent = bBCodeManager.ConvertToHtml(mpost.content);
            MarkUpManager markUpManager = new MarkUpManager();

            post.HTMLcontent = markUpManager.ConvertToHtml(mpost.content);


            post.Categories = await CategoryManager.GetCategoryByPostId((int)id);

            post.CategoriesToString = await CategoryManager.GetCategoryNamesToString(post.Blog.Name, (int)id);



            //QuilDeltaManager quilDeltaManager = new QuilDeltaManager();
            //post.HTMLcontent = quilDeltaManager.ToHrml(mpost.content);
            if (post == null)
            {
                return(NotFound());
            }

            return(View(post));
        }
        public async Task <IActionResult> Edit(int id, [Bind("Id,Title,Published,content,Author,RowVersion,BlogId,engine")] ViewPost post, string blogname)
        {
            try
            {
                if (id != post.Id)
                {
                    return(NotFound());
                }

                // if (ModelState.IsValid)
                //  {

                //_context.Update(post);
                //await _context.SaveChangesAsync();
                var           mpost           = post.ToModel(User.Identity.Name);
                MarkUpManager markDownManager = new MarkUpManager();
                mpost.content = markDownManager.ConvertFromHtmlToMarkUp(post.content);

                mpost = await postManager.Edit(id, mpost);

                var blog = await blmngr.GetBlogByIdAsync(mpost.BlogId);

                if (mpost != null)
                {
                    post.ImportFromModel(mpost);
                }
                if (post.CategoriesToString != null)
                {
                    var catgories = post.CategoriesToString.Split(",").ToList();
                    if (catgories != null)
                    {
                        CategoryManager.DettachCategoryRangetoPost(catgories, blog.Name, mpost.Id);
                        CategoryManager.AttachCategoryRangetoPost(catgories, blog.Name, mpost.Id);
                    }
                }
                if (post.TagsToString != null)
                {
                    var tags = post.TagsToString.Split(",").ToList();
                    if (tags != null)
                    {
                        TagManager.DettachTagRangetoPost(tags, blog.Name, mpost.Id);
                        TagManager.AttachTagRangetoPost(tags, blog.Name, mpost.Id);
                    }
                }
                // }
            }

            catch (DbUpdateConcurrencyException)
            {
                if (this.postManager.Exists(post.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            return(RedirectToAction(nameof(Index), "Posts", new { id = post.Blog.Name }));

            //return View(post);
        }