예제 #1
0
        public HttpResponseMessage Post([FromBody] Blog blog)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    string errorMessages = string.Join("; ", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage));
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, errorMessages));
                }
                else
                {
                    blog.ViewCount = 0;

                    blog.UrlField = helper.GenerateSlug(blog.Title.ToString());
                    blogrepo.Insert(blog);


                    var resp = Request.CreateResponse(HttpStatusCode.Created);
                    resp.Headers.Location = new Uri(new Uri(Request.RequestUri, ".") + blog.BlogID.ToString());

                    return(resp);
                }
            }
            catch (Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Failed to create new blog." + e));
            }
        }
예제 #2
0
        public HttpResponseMessage Post([FromUri] int blog_id, [FromBody] Post post)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    string errorMessages = string.Join("; ", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage));
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, errorMessages));
                }
                else
                {
                    post.BlogID        = blog_id;
                    post.ModifiedDate  = DateTime.Now;
                    post.PublishedDate = DateTime.Now;
                    post.ViewCount     = 0;
                    post.UrlField      = helper.GenerateSlug(post.Title.ToString());
                    postrepo.Insert(post);


                    var resp = Request.CreateResponse(HttpStatusCode.Created);
                    resp.Headers.Location = new Uri(new Uri(Request.RequestUri, ".") + post.PostID.ToString());

                    return(resp);
                }
            }
            catch (Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Failed to create new post." + e));
            }
        }
예제 #3
0
        public async Task <IActionResult> Create([Bind("Title,Slug,Image,ImageContent,ImageFile,ImageContentFile,Description,ExpiredAt,FriendRewardType,FriendRewardAmount,FriendRewardIsPercent,FriendRewardExpiredAt,FanRewardType,FanRewardAmount,FanRewardLabel,FanRuleMinReferral,MerchantsId,OfferCategoriesId,Id,CreatedAt,UpdatedAt")] Offers offers)
        {
            if (ModelState.IsValid)
            {
                // Upload image to www/root
                if (offers.ImageFile != null)
                {
                    offers.Image = UploadImages(offers.ImageFile);
                }
                if (offers.ImageContentFile != null)
                {
                    offers.ImageContent = UploadImages(offers.ImageContentFile);
                }

                // Generate slug
                offers.Slug = _helper.GenerateSlug(offers.Title);

                // Insert data
                _context.Add(offers);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["MerchantsId"]       = new SelectList(_context.Merchants, "Id", "Id", offers.MerchantsId);
            ViewData["OfferCategoriesId"] = new SelectList(_context.OfferCategories, "Id", "Id", offers.OfferCategoriesId);
            return(View(offers));
        }
예제 #4
0
        public async Task <IActionResult> Create([Bind("Name,Slug,OfficialUrl,CheckoutType,Id,CreatedAt,UpdatedAt")] Merchants merchants)
        {
            if (ModelState.IsValid)
            {
                // Generate slug
                merchants.Slug = _helper.GenerateSlug(merchants.Name);

                // Insert data
                _context.Add(merchants);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(merchants));
        }
예제 #5
0
        public static Province Upsert(Province entity)
        {
            if (null == entity)
            {
                return(null);
            }
            else if (string.IsNullOrWhiteSpace(entity.Name))
            {
                return(null);
            }
            else if (string.IsNullOrWhiteSpace(entity.Slug))
            {
                SlugHelper slugger = new SlugHelper();
                entity.Slug = slugger.GenerateSlug(entity.Name);
            }

            Province province = Find(entity);

            if (null == province)
            {
                Insert(entity);
                return(entity);
            }
            else
            {
                Province.ShallowCopy(province, entity);
                Update(province);
            }

            return(province);
        }
예제 #6
0
        public ActionResult Create(Blog blog)
        {
            if (!AuthorizeUser())
            {
                return(RedirectToAction("Login", "Accounts"));
            }

            try
            {
                SlugHelper slugHelper = new SlugHelper();

                blog.UserID   = int.Parse(Session["user_id"].ToString());
                blog.UrlField = slugHelper.GenerateSlug(blog.Title);
                repo.Insert(blog);
                return(RedirectToAction("Index"));
            }
            catch
            {
                var topicSelectList = new SelectList(topicRepo.GetAll(), "BlogTopicID", "Name", "1");
                ViewBag.topicSelectList = topicSelectList;

                ViewBag.Message = "Failed to create a new blog.";
                return(View());
            }
        }
예제 #7
0
        public void ShouldProvideValidRepresentationOfTimeStampFromDate()
        {
            var targetDate = DateTime.UtcNow;
            var dateSlug   = SlugHelper.GenerateSlug(targetDate);

            Assert.IsNotNullOrEmpty(dateSlug);
        }
예제 #8
0
        //// Tag Cloud using sparc.tagcloud (lemmatisation)
        //private List<TagCloudTag> GenerateTagCloud()
        //{
        //    var analyzer = new TagCloudAnalyzer();

        //    var blogPostTags = _blogDbContext
        //                       .Tags
        //                       .Select(t => t.DisplayName)
        //                       .ToList();

        //    // blogPosts is an IEnumerable<String>, loaded from
        //    // the database.
        //    var tags = analyzer.ComputeTagCloud(blogPostTags);

        //    // Shuffle the tags, if you like for a random
        //    // display
        //    tags = tags.Shuffle();

        //    return tags.ToList();
        //}

        // Tag Cloud and tag information generated without sparc.tagcloud
        private List <TagInfo> GenerateTagInfo()
        {
            var blogPostTags = _blogDbContext
                               .Tags
                               .Select(t => t.DisplayName)
                               .ToList();

            var groupTags = blogPostTags.GroupBy(t => t)
                            .OrderBy(t => t.Count());

            var maxTagCount = groupTags.Last().Count();

            var randomGroup = groupTags.OrderBy(a => Guid.NewGuid());

            var tagInfoList = new List <TagInfo>();

            foreach (var tag in randomGroup)
            {
                var helper  = new SlugHelper();
                var tagInfo = new TagInfo()
                {
                    DisplayName = tag.Key,
                    TagCount    = tag.Count(),
                    Category    = GenerateCategory(tag.Count(), maxTagCount),
                    UrlSlug     = helper.GenerateSlug(tag.Key)
                };

                tagInfoList.Add(tagInfo);
            }

            return(tagInfoList);
        }
예제 #9
0
        public ActionResult Edit(int id, Blog blog)
        {
            if (!AuthorizeUser())
            {
                return(RedirectToAction("Login", "Accounts"));
            }

            try
            {
                SlugHelper slugHelper = new SlugHelper();

                Blog b = repo.Get(id);
                b.Title       = blog.Title;
                b.Description = blog.Description;
                b.UrlField    = slugHelper.GenerateSlug(blog.Title);
                b.TopicID     = blog.TopicID;
                b.Private     = blog.Private;

                repo.Update(b);
                return(RedirectToAction("Index"));
            }
            catch
            {
                var topicSelectList = new SelectList(topicRepo.GetAll(), "BlogTopicID", "Name", "1");
                ViewBag.topicSelectList = topicSelectList;

                return(View());
            }
        }
예제 #10
0
        public async Task <IActionResult> PutForum(int id, Forum forum)
        {
            if (id != forum.Id)
            {
                return(BadRequest());
            }

            var slugHelper = new SlugHelper();

            forum.Slug = slugHelper.GenerateSlug(forum.Title);

            _context.Entry(forum).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ForumExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #11
0
        public async Task <IActionResult> Create(Post post, int[] SelectedCategoryIds)
        {
            var rand = new Random();
            var slug = SlugHelper.GenerateSlug(post.Title);

            while (await context.Posts.AnyAsync(t => t.Slug == slug))
            {
                slug += rand.Next(1000, 9999);
            }
            post.Slug = slug;
            foreach (var selectedCatId in SelectedCategoryIds)
            {
                post.PostCategories.Add(new PostCategory {
                    CategoryId = selectedCatId
                });
            }
            if (!ModelState.IsValid)
            {
                return(View());
            }
            await context.AddAsync(post);

            await context.SaveChangesAsync();

            TempData["message.success"] = "Saved!";
            return(RedirectToAction(nameof(Index)));
        }
예제 #12
0
        public static Country Upsert(Country entity)
        {
            if (null == entity)
            {
                return(null);
            }
            else if (string.IsNullOrWhiteSpace(entity.Name))
            {
                return(null);
            }
            else if (string.IsNullOrWhiteSpace(entity.Slug))
            {
                SlugHelper slugger = new SlugHelper();
                entity.Slug = slugger.GenerateSlug(entity.Name);
            }

            Country country = Find(entity);

            if (null == country)
            {
                Insert(entity);
                return(entity);
            }
            else
            {
                Country.ShallowCopy(country, entity);
                Update(country);
            }

            return(country);
        }
예제 #13
0
        public void TestFullFunctionality()
        {
            SlugHelper helper = new SlugHelper();
            Dictionary <string, string> tests = new Dictionary <string, string>();

            tests.Add("E¢Ðƕtoy  mÚÄ´¨ss¨sïuy   !!!!!  Pingüiño",
                      "etoy-muasssiuy--pinguino");

            tests.Add("QWE dfrewf# $%&!! asd",
                      "qwe-dfrewf--asd");

            tests.Add("You can't have any pudding if you don't eat your meat!",
                      "you-cant-have-any-pudding-if-you-dont-eat-your-meat");

            tests.Add("El veloz murciélago hindú",
                      "el-veloz-murcielago-hindu");

            tests.Add("Médicos sin medicinas medican meditando",
                      "medicos-sin-medicinas-medican-meditando");

            foreach (KeyValuePair <string, string> test in tests)
            {
                Assert.AreEqual(test.Value, helper.GenerateSlug(test.Key));
            }
        }
예제 #14
0
        public static District Upsert(District entity)
        {
            if (null == entity)
            {
                return(null);
            }
            else if (string.IsNullOrWhiteSpace(entity.Name))
            {
                return(null);
            }
            else if (string.IsNullOrWhiteSpace(entity.Slug))
            {
                SlugHelper slugger = new SlugHelper();
                entity.Slug = slugger.GenerateSlug(entity.Name);
            }

            District district = Find(entity);

            if (null == district)
            {
                Insert(entity);
                return(entity);
            }
            else
            {
                District.ShallowCopy(district, entity);
                Update(district);
            }

            return(district);
        }
        public IActionResult Create(PostCreateViewModel newspost, int[] SelectedCategoryIds, int[] SelectedTagIds)
        {
            var rand = new Random();
            var slug = SlugHelper.GenerateSlug(newspost.Name);

            while (_context.Posts.Any(t => t.Slug == slug))
            {
                slug += rand.Next(1000, 9999);
            }
            newspost.Slug = slug;


            foreach (var selectedCatId in SelectedCategoryIds)
            {
                newspost.PostCategories.Add(new PostCategory {
                    CategoryId = selectedCatId
                });
            }

            foreach (var selectedTagId in SelectedTagIds)
            {
                newspost.PostTags.Add(new PostTag {
                    TagId = selectedTagId
                });
            }



            string unique = fileUpload(newspost.Picture);



            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            var user   = _context.Users.Single(u => u.Id == userId);

            if (!ModelState.IsValid)
            {
                return(View());
            }

            var postModel = new Post
            {
                Content        = newspost.Content,
                Name           = newspost.Name,
                Categories     = newspost.Categories,
                Tags           = newspost.Tags,
                PostCategories = newspost.PostCategories,
                PostStatus     = newspost.PostStatus,
                Picture        = unique,
                PostTags       = newspost.PostTags,
                Slug           = newspost.Slug,
                AppUser        = user
            };

            _context.Add(postModel);
            _context.SaveChanges();

            return(RedirectToAction(nameof(Index)));
        }
예제 #16
0
        public string SlugifyTheTitle(string title)
        {
            SlugHelper slugHelper = new SlugHelper();
            string     slugfyed   = slugHelper.GenerateSlug(title);

            //check unique return reccomend
            return(slugfyed);
        }
예제 #17
0
파일: Helper.cs 프로젝트: zhm99/blogexample
        public static string GenerateSlug(string text)
        {
            SlugHelper slugGenerator = new SlugHelper();

            var slug = slugGenerator.GenerateSlug(text);

            return(slug);
        }
예제 #18
0
        public void TestWhiteSpaceCollapsing()
        {
            const string original = "a  b    \n  c   \t    d";
            const string expected = "a-b-c-d";

            var helper = new SlugHelper();

            Assert.Equal(expected, helper.GenerateSlug(original));
        }
예제 #19
0
        private async Task <string> CreateSlug(string username)
        {
            string     slug;
            SlugHelper helper = new SlugHelper();

            slug = helper.GenerateSlug(username);

            return(await Task.FromResult(slug));
        }
예제 #20
0
        public static string Slugify(this string str)
        {
            if (str is null)
            {
                str = $"untitled-{Guid.NewGuid()}";
            }

            return(Slugifier.GenerateSlug(str));
        }
예제 #21
0
        public void TestConfigForCollapsingDashes()
        {
            const string original = "foo & bar";
            const string expected = "foo-bar";

            var helper = new SlugHelper();

            Assert.Equal(expected, helper.GenerateSlug(original));
        }
예제 #22
0
        /*
         * TODO: Javascript som anropar denna function som en GET när man skriver titel
         */
        private async Task <string> CreateSlug(string slug)
        {
            string s;
            int    i = 1;

            SlugHelper helper = new SlugHelper();

            s = helper.GenerateSlug(slug);

            // Generate slug and search for duplicates
            while ((await _db.Posts.CountAsync(p => p.Slug == s)) > 0)
            {
                s = helper.GenerateSlug(slug + "-" + i);
                i++;
            }

            return(s);
        }
예제 #23
0
        public void TestConfigForCollapsingDashesWithMoreThanTwoDashes()
        {
            const string original = "foo & bar & & & Jazz&&&&&&&&";
            const string expected = "foo-bar-jazz";

            var helper = new SlugHelper();

            Assert.Equal(expected, helper.GenerateSlug(original));
        }
예제 #24
0
        public void TestDeniedCharacterDeletion()
        {
            const string original = "!#$%&/()=";
            const string expected = "";

            var helper = new SlugHelper();

            Assert.Equal(expected, helper.GenerateSlug(original));
        }
예제 #25
0
        public void TestDiacriticRemoval()
        {
            const string withDiacritics    = "ñáîùëÓ";
            const string withoutDiacritics = "naiueo";

            var helper = new SlugHelper();

            Assert.Equal(withoutDiacritics, helper.GenerateSlug(withDiacritics));
        }
예제 #26
0
        public void TestLoweCaseEnforcement()
        {
            const string original = "AbCdE";
            const string expected = "abcde";

            var helper = new SlugHelper();

            Assert.Equal(expected, helper.GenerateSlug(original));
        }
예제 #27
0
        public async Task <RecipeDTO> AddAsync(RecipeDTO recipe)
        {
            //Validate recipe
            Validation(recipe);

            //Create recipe in DB
            var newRecipe = await dbAccess.Recipes.AddAsync(new Recipe()
            {
                Id          = 0,
                Title       = recipe.Title,
                Slug        = String.Format("{0}-{1}", recipe.User.Id, SlugHelper.GenerateSlug(recipe.Title)),
                Instruction = recipe.Instruction,
                UserId      = recipe.User.Id,
                CreatedAt   = DateTime.Now
            });

            //Create ingredientlines
            foreach (var ing in recipe.IngredientLines)
            {
                //Get or create the required ingredient
                Ingredient ingredient = (await dbAccess.Ingredients.FindByCondition(nameof(ing.Ingredient.Name), ing.Ingredient.Name)).FirstOrDefault();
                if (ingredient == null)
                {
                    var ingredientToBeCreated = new Ingredient();
                    ingredientToBeCreated.Id   = 0;
                    ingredientToBeCreated.Name = ing.Ingredient.Name;

                    ingredient = await dbAccess.Ingredients.AddAsync(ingredientToBeCreated);
                }
                //Create the ingredientline
                IngredientLine ingredientLine = new IngredientLine();
                ingredientLine.Id           = 0;
                ingredientLine.RecipeId     = newRecipe.Id;
                ingredientLine.IngredientId = ingredient.Id;
                ingredientLine.Amount       = ing.Amount;
                ingredientLine.MeasureUnit  = ConvertToEnum(ing.MeasureUnitText);

                var newIngredientLine = await dbAccess.IngredientLines.AddAsync(ingredientLine);
            }
            //Create images (if any)
            if (recipe.Images != null)
            {
                foreach (var image in recipe.Images)
                {
                    var imageToBeCreated = new Image();
                    imageToBeCreated.Id       = 0;
                    imageToBeCreated.RecipeId = newRecipe.Id;
                    imageToBeCreated.FileName = image.FileName;

                    var newImage = await dbAccess.Images.AddAsync(imageToBeCreated);
                }
            }

            return(await GetByIdAsync(newRecipe.Id));
        }
        public IActionResult CreateCategory([FromBody] Category category)
        {
            var lang          = Request.Headers["language"].ToString();
            var errorMessages = new List <string>();

            if (string.IsNullOrEmpty(category.Title_EN))
            {
                errorMessages.Add(_translator.GetTranslation("VALIDATION.CATEGORY_TITLE_REQUIRED", lang));
            }

            if (errorMessages.Count > 0)
            {
                return(BadRequest(new { errors = errorMessages }));
            }

            try
            {
                SlugHelper slugHelper  = new SlugHelper();
                var        newCategory = new Category()
                {
                    Title_EN  = category.Title_EN,
                    ImagePath = category.ImagePath,
                    CreatedAt = DateTime.Now,
                    CreatedBy = category.CreatedBy,
                    Slug      = slugHelper.GenerateSlug(category.Title_EN),
                    Title_FR  = category.Title_FR != null ? category.Title_FR : category.Title_EN,
                    Slug_FR   = category.Title_FR != null?slugHelper.GenerateSlug(category.Title_FR) : slugHelper.GenerateSlug(category.Title_EN),
                };

                newCategory.UpdatedAt = newCategory.CreatedAt;
                newCategory.UpdatedBy = newCategory.CreatedBy;

                var createdCategory = _categoryRepository.Create(newCategory);

                return(Ok(new { category = createdCategory }));
            }
            catch
            {
                errorMessages.Add(_translator.GetTranslation("ERROR", lang));
                return(BadRequest(new { errors = errorMessages }));
            }
        }
예제 #29
0
        public async Task <ActionResult <Forum> > PostForum(Forum forum)
        {
            var slugHelper = new SlugHelper();

            forum.Slug = slugHelper.GenerateSlug(forum.Title);

            _context.Forums.Add(forum);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetForum", new { id = forum.Id }, forum));
        }
        public async Task <BlogPostVM> Update(BlogPostUpdateVM request, string slug)
        {
            using var db = new SQLiteDBContext();

            var blogPost = await db.BlogPosts.Include(x => x.Tags).FirstOrDefaultAsync(bp => bp.Slug == slug) ?? throw new NotFoundException(slug);

            #region IfTitleHasChanged

            if (request.Title != blogPost.Title && !string.IsNullOrEmpty(request.Title))
            {
                var tags = new List <BlogPostTag>(blogPost.Tags);
                //Delete all referenced entities
                foreach (var item in blogPost.Tags)
                {
                    db.BlogPostTags.Remove(item);
                }
                await db.SaveChangesAsync();

                blogPost.Tags = null;
                db.BlogPosts.Remove(blogPost);
                await db.SaveChangesAsync();

                //Add the post again with all the tags
                SlugHelper helper = new SlugHelper();
                blogPost.Slug = helper.GenerateSlug(request.Title);

                await db.BlogPosts.AddAsync(blogPost);

                await db.SaveChangesAsync();

                foreach (var tag in tags)
                {
                    var postTag = new BlogPostTag()
                    {
                        TagId = tag.TagId, BlogPostId = blogPost.Slug
                    };
                    await db.BlogPostTags.AddAsync(postTag);
                }
                await db.SaveChangesAsync();

                blogPost.Tags = tags;
            }
            #endregion

            blogPost.UpdatedAt = DateTime.UtcNow;
            mapper.Map(request, blogPost);

            db.BlogPosts.Update(blogPost);
            await db.SaveChangesAsync();

            var response = mapper.Map <BlogPostVM>(blogPost);

            return(response);
        }
예제 #31
0
        public static string SlugFromTitle(string title)
        {
            var slugGenerator = new SlugHelper();

            return slugGenerator.GenerateSlug(title);
        }