Пример #1
0
        public async Task <IActionResult> PostAsync([FromBody] TagArgs args)
        {
            ValidateTagArgs(args);

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

            if (!UserPermissions.IsAllowedToCreate(User.Identity, args.Status))
            {
                return(Forbid());
            }

            if (_tagIndex.IsTitleExist(args.Title))
            {
                return(StatusCode(409));
            }

            int id = _entityIndex.NextId(ResourceType.Tag);

            var ev = new TagCreated
            {
                Id         = id,
                UserId     = User.Identity.GetUserIdentity(),
                Properties = args,
                Timestamp  = DateTimeOffset.Now
            };

            await _eventStore.AppendEventAsync(ev);

            return(Created($"{Request.Scheme}://{Request.Host}/api/Tags/{id}", id));
        }
Пример #2
0
        public static (Tag, Event <TagCreated>) On(CreateTag request, Guid userId)
        {
            var tag = new Tag
            {
                Id            = Guid.NewGuid(),
                Key           = request.Key,
                Title         = request.Title,
                CorrelationId = request.CorrelationId,
                Created       = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
                Updated       = 0,
                Deleted       = 0
            };

            return(tag, new Event <TagCreated>
            {
                Type = "tag-created",
                Version = 1,
                CorrelationId = request.CorrelationId,
                UserId = userId,
                OccurredOn = tag.Created,
                Payload = new TagCreated
                {
                    TagId = tag.Id
                }
            });
Пример #3
0
        public void Given_three_tags_should_give_all()
        {
            var event1 = new TagCreated(Guid.NewGuid(), "Test1");
            var event2 = new TagCreated(Guid.NewGuid(), "Test2");
            var event3 = new TagCreated(Guid.NewGuid(), "Test3");

            Given($"{StreamPrefix.Question}", event1);
            Given($"{StreamPrefix.Question}", event2);
            Given($"{StreamPrefix.Question}", event3);

            Then(event1.QuestionId.ToString(), new TagNameState {
                Name = event1.TagName
            });
            Then(event2.QuestionId.ToString(), new TagNameState {
                Name = event2.TagName
            });
            Then(event3.QuestionId.ToString(), new TagNameState {
                Name = event3.TagName
            });
        }
Пример #4
0
 public void Apply(TagCreated questionCreated)
 {
     Name = questionCreated.TagName;
 }
 private Task Apply(Metadata metadata, TagCreated questionToTagAssosiated, QuestionsByTagState questionsByTagState)
 {
     questionsByTagState.Apply(questionToTagAssosiated);
     return(Task.CompletedTask);
 }
 public void When(TagCreated e)
 {
     _tags.Add(e.Tag, e.TagId);
 }
Пример #7
0
 private void InvokeTagCreated(RemoteRepositoryTag tag)
 => TagCreated?.Invoke(this, new RemoteReferenceEventArgs(tag));
Пример #8
0
 private Task Apply(Metadata metadata, TagCreated createdTag, TagNameState state)
 {
     state.Apply(createdTag);
     return(Task.CompletedTask);
 }
 private Task Apply(Metadata metadata, TagCreated tagCreated, QuestionWithAnswersState state)
 {
     state.Apply(tagCreated);
     return(Task.CompletedTask);
 }
Пример #10
0
 public void Apply(TagCreated tagCreated)
 {
     Tags.Add(tagCreated.TagName);
 }
Пример #11
0
 public void Apply(TagCreated tagCreated)
 {
     Questions.Add(tagCreated.QuestionId);
 }