示例#1
0
        public async Task <IActionResult> Create(PostViewModel model) //создание поста
        {
            if (ModelState.IsValid)
            {
                Post post = new Post(); //создаём модель
                post.PostName   = model.Name;
                post.CategoryId = model.Cat;
                post.content    = model.Text;              //кладём данные из входной модели
                post.PostDescr  = TruncBody(post.content); //обрезаем текст лоя создания првеью

                ClaimsPrincipal currentUser   = this.User;
                var             currentUserID = currentUser.FindFirst(ClaimTypes.NameIdentifier).Value;
                post.UserId   = currentUserID;                            //автором ставим текущего пользователя
                post.PostDate = DateTime.Now;                             //дата тоже текущая
                string postslug = Slugifier.Transliterate(post.PostName); //создаётся slug-ссылка
                postslug      = Slugifier.Slugify(postslug);
                post.PostSlug = postslug;
                String[] rawtags = model.Tags.Split(','); //входная строка тегов разбивается запятыми на отдельные теги
                _context.Add(post);                       //пост добавлне, работаем с тегами
                await _context.SaveChangesAsync();

                var addedpost = await _context.Posts.SingleOrDefaultAsync(m => m.PostSlug == postslug); //находим id нового поста

                addedpost.PostSlug += "-" + addedpost.PostID.ToString();                                //уникальность слагов
                _context.Update(addedpost);
                int redir = addedpost.PostID;
                foreach (string separtag in rawtags) //добавление, если необходимо, тегов
                {
                    string tagname;
                    if (separtag.Substring(0, 1) == " ") //Обрезает первый пробел
                    {
                        tagname = separtag.Substring(1, separtag.Length - 1);
                    }
                    else
                    {
                        tagname = separtag;  //сохраняем имя тега
                    }
                    string tagtoadd = Slugifier.Transliterate(tagname);
                    tagtoadd = Slugifier.Slugify(tagtoadd); //подготовка слага
                    var tag = await _context.Tags.SingleOrDefaultAsync(m => m.TagSlug == tagtoadd);

                    int tagid;
                    if (tag == null) //добавление тега
                    {
                        Tag added = new Tag();
                        added.TagName = tagname;
                        added.TagSlug = tagtoadd;
                        _context.Tags.Add(added);
                        await _context.SaveChangesAsync();

                        var addedtag = await _context.Tags.SingleOrDefaultAsync(m => m.TagSlug == tagtoadd);

                        tagid = addedtag.TagId;
                    }
                    else
                    {
                        tagid = tag.TagId;
                    }
                    PostTag link = new PostTag(); //добавление связи "тег-пост"
                    link.PostId = addedpost.PostID;
                    link.TagId  = tagid;
                    _context.PostTags.Add(link);
                    await _context.SaveChangesAsync();

                    //addedpost.PostTags.Add(link);
                    //_context.Posts.Update(addedpost);
                    //await _context.SaveChangesAsync();
                }
                var Cat = _context.Categories.SingleOrDefault(p => p.CategoryId == model.Cat);
                Cat.postcount++; //увеличиваем количество постов в категории, к которой принадлежит данный пост
                _context.Update(Cat);
                await _context.SaveChangesAsync();

                return(Redirect("/Comments/viewpost/" + redir));
            }
            ViewData["CategoryId"] = new SelectList(_context.Categories, "CategoryId", "CatName", model.Cat);

            return(View(model));
        }
示例#2
0
        public void SlugifierTest7()
        {
            var slug = Slugifier.Slugify("base_user");

            Assert.AreEqual("base-user", slug);
        }
示例#3
0
        public void SlugifierTest8()
        {
            var slug = Slugifier.Slugify("base_user", Slugifier.Options.Ignore('_'));

            Assert.AreEqual("base_user", slug);
        }
示例#4
0
        public void SlugifierTest6()
        {
            var slug = Slugifier.Slugify("Haber Başlığı 1 (Update 1)");

            Assert.AreEqual("haber-basligi-1-update-1", slug);
        }
示例#5
0
        public void SlugifierTest4()
        {
            var slug = Slugifier.Slugify("Wikipedia");

            Assert.AreEqual("wikipedia", slug);
        }
示例#6
0
        public void SlugifierTest3()
        {
            var slug = Slugifier.Slugify("Αυτή είναι μια δοκιμή");

            Assert.AreEqual("ayti-einai-mia-dokimi", slug);
        }
示例#7
0
        public void SlugifierTest2()
        {
            var slug = Slugifier.Slugify("JúST å fëw wørds");

            Assert.AreEqual("just-a-few-words", slug);
        }
示例#8
0
        public void SlugifierTest1WithTrim()
        {
            var slug = Slugifier.Slugify("  Ahmet Ertuğrul Özcan   ");

            Assert.AreEqual("ahmet-ertugrul-ozcan", slug);
        }