Esempio n. 1
0
        private static void UseSqlServerSlugStore()
        {
            Console.Clear();


            SetupLocalDbIfRequired();

            var slugGenerator = new SlugGenerator(
                new SlugGeneratorOptions {
                IterationSeedValue = 1000
            },
                new SqlServerSlugStore("DefaultConnection"));

            var stopwatch = Stopwatch.StartNew();

            for (var i = 0; i < 10000; i++)
            {
                var slug = slugGenerator.GenerateSlug("Some text that needs slugging " + i);
            }

            stopwatch.Stop();

            Console.WriteLine("Took " + stopwatch.ElapsedMilliseconds + "ms");
            Console.WriteLine("");
            Console.WriteLine("Press enter to return to main menu");
            Console.ReadLine();

            ShowMainMenu();
        }
Esempio n. 2
0
        public void ApplyChanges(FieldGroup fg, IBusinessLogicFacade bl)
        {
            var target = fg;
            var source = this;


            if (target.Name == null)
            {
                target.Slug = SlugGenerator.GenerateSlug(bl, source.Name, "fieldGroup");
            }
            if (target.Name != null && !target.Name.Equals(source.Name))
            {
                target.Slug = SlugGenerator.GenerateSlug(bl, source.Name, "fieldGroup");
            }
            target.Name = source.Name;

            target.Fields = new List <Field>();
            source.Fields.ForEach(i =>
            {
                var f = bl.CreateField();
                i.ApplyChanges(f, bl);
                target.Fields.Add(f);
            });
            target.IsCountable = source.IsCountable;
            target.IsActive    = source.IsActive;
        }
Esempio n. 3
0
        public IActionResult Edit(ItemDto dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var item = _unitOfWork.Items.GetItem(dto.Id);

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

            if (item.CreatedById != User.GetUserId())
            {
                return(Forbid());
            }

            item.Title = dto.Title;
            item.Slug  = SlugGenerator.GenerateSlug(dto.Title);

            _unitOfWork.Items.Save(item);
            _unitOfWork.Complete();

            return(Ok());
        }
Esempio n. 4
0
        public IActionResult Edit(ShelfDto dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var userId = User.GetUserId();

            var shelf = _context.Shelves
                        .FirstOrDefault(s => s.Id == dto.Id &&
                                        s.CreatedById == userId);

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

            shelf.Title = dto.Title;
            shelf.Slug  = SlugGenerator.GenerateSlug(dto.Title);

            _context.SaveChanges();

            return(Ok());
        }
        public void GenerateSlug_Appends_number_to_text_if_original_text_slugged_exists_Starting_at_supplied_seed_value()
        {
            //Arrange
            var slugGenerator = new SlugGenerator(new SlugGeneratorOptions {
                IterationSeedValue = 3
            }, _fakeSlugStore, _fakeSlugAlgorithm);                                                                                        //start at 3

            A.CallTo(() => _fakeSlugAlgorithm.Slug("Some text"))
            .Returns("some-text");

            A.CallTo(() => _fakeSlugStore.Exists("some-text"))
            .Returns(true);

            A.CallTo(() => _fakeSlugAlgorithm.Slug("Some text 3"))
            .Returns("some-text-3");

            //Act
            var result = slugGenerator.GenerateSlug("Some text");

            //Assert
            Assert.That(result, Is.EqualTo("some-text-3"));

            A.CallTo(() => _fakeSlugAlgorithm.Slug("Some text 1"))
            .MustNotHaveHappened();

            A.CallTo(() => _fakeSlugAlgorithm.Slug("Some text 2"))
            .MustNotHaveHappened();
        }
Esempio n. 6
0
        public async Task <IActionResult> Create(CreatePostVM salePostModel)
        {
            if (this.HasAlert)
            {
                this.SetAlertModel();
            }

            if (!this.ModelState.IsValid)
            {
                this.AddAlert(false, "An error has occured!");

                //this.LoadListSneakersDropdowns();
                return(this.View(salePostModel));
            }

            var post = _mapper.Map <SalePost>(salePostModel);

            post.UserId = this.userManager.GetUserId(this.User);

            post.Sneaker.Slug            = SlugGenerator.GenerateSlug(post.Sneaker.Name);
            post.Sneaker.PosterImageLink = await FileManager.SaveFile(this.hostingEnvironment, salePostModel.Sneaker.PosterImage);

            var rating = _mapper.Map <Rating>(salePostModel.Sneaker.Rating);

            rating.RatedById = this.userManager.GetUserId(this.User);
            rating.RatedOn   = DateTime.Now;

            post.Sneaker.SneakerRatings.Add(new SneakerRating {
                Rating = rating
            });

            foreach (var keyword in salePostModel.Sneaker.KeywordsString.Trim().Split(","))
            {
                post.Sneaker.Keywords.Add(new Keyword {
                    Name = keyword.Trim()
                });
            }

            try
            {
                await this.salePostService.Create(post);
            }
            catch (DbUpdateException e)
                when(e.InnerException is SqlException sqlEx &&
                     (sqlEx.Number == 2601 || sqlEx.Number == 2627))
                {
                    this.AddAlert(false, "Cannot insert duplicate sneaker!");

                    //TODO =>
                    //this.LoadListSneakersDropdowns();
                    return(this.View(salePostModel));
                }

            this.AddAlert(true, "Successfully added post!");

            return(this.RedirectToAction("Index", new PaginationVM {
                Page = 1, PageSize = 20
            }));
        }
Esempio n. 7
0
        public void ApplyChanges(Field fg, IBusinessLogicFacade bl)
        {
            var target = fg;
            var source = this;

            target.Name = source.Name;
            target.Slug = SlugGenerator.GenerateSlug(bl, source.Name, "field");
        }
Esempio n. 8
0
        public void GenerateSlug_Slugs_given_text_initially()
        {
            var result = _slugGenerator.GenerateSlug("Some text");

            A.CallTo(() => _fakeSlugAlgorithm.Slug("Some text"))
            .MustHaveHappened();
        }
        public void GenerateSlugShouldTrimResult()
        {
            var input =
                "Входът може да бъде много много много много много много много много много много много много много много много много много дълъг тест ";
            var slugGenerator = new SlugGenerator();
            var result        = slugGenerator.GenerateSlug(input);

            Assert.True(result.Length <= 100);
        }
        public void GenerateSlugShouldWorkCorrectly()
        {
            var input         = "МВР: Свада в училище в ж.к.-„Западен парк“.";
            var expected      = "mvr-svada-v-uchilishte-v-jk-zapaden-park";
            var slugGenerator = new SlugGenerator();
            var result        = slugGenerator.GenerateSlug(input);

            Assert.Equal(expected, result);
        }
Esempio n. 11
0
File: Shelf.cs Progetto: olcay/om
        public Shelf(string createdById, string title)
        {
            CreatedById = createdById ?? throw new ArgumentNullException(nameof(createdById));
            Title       = title ?? throw new ArgumentNullException(nameof(title));

            Slug         = SlugGenerator.GenerateSlug(title);
            CreationDate = DateTime.UtcNow;
            UpdateDate   = DateTime.UtcNow;
        }
Esempio n. 12
0
        public void ApplyChanges(Accessory obj, IBusinessLogicFacade bl)
        {
            var target = obj;
            var source = this;

            if (target.Slug == null)
            {
                target.Slug = SlugGenerator.GenerateSlug(bl, source.Name, "accessory");
            }
            target.Name = source.Name;
        }
Esempio n. 13
0
        public void ApplyChanges(DamageStatus obj, IBusinessLogicFacade bl)
        {
            var target = obj;
            var source = this;

            target.Name = source.Name;

            if (target.Slug == null)
            {
                target.Slug = SlugGenerator.GenerateSlug(bl, source.Name, "DamageStatus");
            }
        }
Esempio n. 14
0
        public void ApplyChanges(DeviceType obj, IBusinessLogicFacade bl)
        {
            var target = obj;
            var source = this;

            target.Name = source.Name;
            target.Slug = SlugGenerator.GenerateSlug(bl, source.Name, "deviceType");
            target.DeviceTypesFieldGroups = new List <DeviceTypeFieldGroup>();


            if (source.FieldGroups != null)
            {
                var fgs = source.FieldGroups.Select(i => bl.GetFieldGroup(i.Slug)).ToList();
                fgs.RemoveAll(i => i == null);
                foreach (var fieldGroup in fgs)
                {
                    var dtfg = new DeviceTypeFieldGroup()
                    {
                        DeviceType   = obj,
                        DeviceTypeId = obj.TypeId,
                        FieldGroup   = fieldGroup,
                        FieldGroupId = fieldGroup.GroupId
                    };
                    target.DeviceTypesFieldGroups.Add(dtfg);
                    target.FieldGroups.Add(fieldGroup);
                }
                var afg = bl.GetFieldGroup("zubehor");
                if (afg != null)
                {
                    var adtfg = new DeviceTypeFieldGroup
                    {
                        DeviceType   = obj,
                        DeviceTypeId = obj.TypeId,
                        FieldGroup   = afg,
                        FieldGroupId = afg.GroupId
                    };
                    target.FieldGroups.Add(afg);
                    target.DeviceTypesFieldGroups.Add(adtfg);
                }
            }
            target.IsActive = source.IsActive;
        }
Esempio n. 15
0
        public static FieldGroupViewModel GetvalidFieldGroupViewModel()
        {
            var fvmdl = new FieldViewModel
            {
                Name = "TestField",
                Slug = SlugGenerator.GenerateSlug(_bl, "TestField", "field")
            };

            var vmdl = new FieldGroupViewModel
            {
                Name   = "Test",
                Slug   = SlugGenerator.GenerateSlug(_bl, "Test", "fieldGroup"),
                Fields = new List <FieldViewModel>
                {
                    fvmdl
                },
            };

            return(vmdl);
        }
Esempio n. 16
0
        private static void UseInMemoryStorage()
        {
            Console.Clear();

            var slugGenerator = new SlugGenerator();

            var stopwatch = Stopwatch.StartNew();

            for (var i = 0; i < 10000; i++)
            {
                var slug = slugGenerator.GenerateSlug("Some text that needs slugging " + i);
            }

            stopwatch.Stop();

            Console.WriteLine("Took " + stopwatch.ElapsedMilliseconds + "ms");
            Console.WriteLine("");
            Console.WriteLine("Press enter to return to main menu");
            Console.ReadLine();

            ShowMainMenu();
        }
Esempio n. 17
0
        public void AddAsk(AskModel model, string userId)
        {
            var user = new User()
            {
                Id = userId
            };

            _userSet.Attach(user);

            var ask = new Ask()
            {
                Title  = model.Title,
                Slug   = SlugGenerator.GenerateSlug(model.Title),
                Body   = model.Body,
                Date   = DateTime.UtcNow,
                Author = user
            };

            _askSet.Add(ask);
            _context.SaveChanges();

            model.Id = ask.Id;
        }
Esempio n. 18
0
        public async Task <IActionResult> CreateArticle([FromBody] ArticleCreateViewModel article)
        {
            if (ModelState.IsValid)
            {
                if (article == null)
                {
                    return(BadRequest($"{nameof(article)} cannot be null"));
                }


                var appArticle = Mapper.Map <Article>(article);

                var appCategory = await _unitOfWork.Categories.GetCategory(Guid.Parse(article.CategoryId));

                if (appCategory == null)
                {
                    return(NotFound("Category not found"));
                }

                appArticle.Category = appCategory;
                appArticle.Slug     = await GenarateUniqueSlug(SlugGenerator.GenerateSlug(article.Title));

                appArticle.Image = "/images/featured/not-found.jpg";

                ICollection <Tag> appTags = new List <Tag>();
                foreach (var tagId in article.TagIds)
                {
                    if (IsValidGuid(tagId))
                    {
                        var appTag = await _unitOfWork.Tags.GetTag(Guid.Parse(tagId));

                        if (appTag == null)
                        {
                            AddError("TagIds", $"TagId: {tagId} not found!");
                        }

                        if (!appTags.Contains(appTag))
                        {
                            appTags.Add(appTag);
                        }
                    }
                    else
                    {
                        AddError("TagIds", $"TagId: {tagId} is not a valid guid");
                    }
                }

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

                var result = await _unitOfWork.Articles.CreateArticle(appArticle, appTags);

                if (result.Item1)
                {
                    var articleVm = await GetArticleViewModelHelper(appArticle.Id);

                    return(CreatedAtAction(GetArticleActionName, new { id = articleVm.Id }, articleVm));
                }

                AddError("error", result.Item2);
            }

            return(BadRequest(ModelState));
        }
Esempio n. 19
0
        public async Task <IActionResult> UpdateArticle([FromRoute] string id, [FromBody] ArticleEditViewModel article)
        {
            if (!IsValidGuid(id))
            {
                return(BadRequest("Id in the route is not a valid guid!"));
            }

            if (ModelState.IsValid)
            {
                var articleId = Guid.Parse(id);

                var appArticle = await _unitOfWork.Articles.GetArticle(articleId);

                if (appArticle == null)
                {
                    return(NotFound(articleId));
                }

                var currentUser = await _accountManager.GetCurrentUserAsync();

                if (!(await _authorizationService.AuthorizeAsync(User, currentUser.Id, Policies.ManageAllArticlesPolicy)
                      ).Succeeded)
                {
                    if (currentUser.Id != appArticle.CreatedBy.Id)
                    {
                        return(StatusCode(403, "Permission to edit this article denied!"));
                    }
                }

                if (article == null)
                {
                    return(BadRequest($"{nameof(article)} cannot be null"));
                }

                if (articleId != Guid.Parse(article.Id))
                {
                    return(BadRequest("Conflicting article id in parameter and model data"));
                }

                var appCategory = await _unitOfWork.Categories.GetCategory(Guid.Parse(article.CategoryId));

                if (appCategory == null)
                {
                    return(NotFound("Category not found"));
                }

                appArticle.Slug = await GenarateUniqueSlug(SlugGenerator.GenerateSlug(article.Title));

                appArticle.Category = appCategory;

                var artTags = _unitOfWork.ArticleTags.GetArticleTags(articleId);
                if (artTags != null)
                {
                    await _unitOfWork.ArticleTags.DeleteArticleTags(artTags);
                }

                ICollection <Tag> appTags = new List <Tag>();
                foreach (var tagId in article.TagIds)
                {
                    if (IsValidGuid(tagId))
                    {
                        var appTag = await _unitOfWork.Tags.GetTag(Guid.Parse(tagId));

                        if (appTag == null)
                        {
                            AddError("TagIds", $"TagId: {tagId} not found!");
                        }

                        if (!appTags.Contains(appTag))
                        {
                            appTags.Add(appTag);
                        }
                    }
                    else
                    {
                        AddError("TagIds", $"TagId: {tagId} is not a valid guid");
                    }
                }

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

                Mapper.Map(article, appArticle);

                var result = await _unitOfWork.Articles.UpdateArticle(appArticle, appTags);

                if (result.Item1)
                {
                    return(NoContent());
                }

                AddError("error", result.Item2);
            }

            return(BadRequest(ModelState));
        }