예제 #1
0
        public async Task <PostDto> CreatePost(ThreadDto threadDto, PostCreationDto postDto)
        {
            throwHelper.ThrowIfNull(threadDto, nameof(threadDto));
            throwHelper.ThrowIfNull(postDto, nameof(postDto));

            var thread = mapper.Map <Thread>(threadDto);

            if (thread.Id != 0 || context.Threads.Local.Any(t => t.Id == thread.Id))
            {
                context.Attach(thread);
            }

            var post = new Post
            {
                CreationTime = DateTime.UtcNow,
                Message      = postDto.Message,
                Name         = postDto.AuthorName,
                Thread       = thread,
                UserId       = postDto.AuthorId
            };

            if (postDto.Attachment != null)
            {
                post.Image = await CreateImageAsync(postDto.Attachment);
            }

            context.Posts.Add(post);
            await context.SaveChangesAsync();

            return(mapper.Map <PostDto>(post));
        }
예제 #2
0
        public async Task <UserDto> CreateAnonymousAsync(string ip)
        {
            var anon = new Anonymous
            {
                Created = DateTime.UtcNow,
                Id      = Guid.NewGuid(),
                IP      = ip
            };

            context.Anonymous.Add(anon);
            await context.SaveChangesAsync();

            var user = mapper.Map <UserDto>(anon);

            return(user);
        }