Example #1
0
        private ProjectionModels.Post MapEntitiesIntoProjection(EntityModels.Post post, EntityModels.Account account)
        {
            var projection = mapper.Map <ProjectionModels.Post>(post);

            projection.Creator = mapper.Map <ProjectionModels.Account>(account);
            return(projection);
        }
Example #2
0
        public async Task <Guid> CreateAsync(EntityModels.Post post)
        {
            if (post is null)
            {
                throw new ArgumentNullException(nameof(post));
            }

            post.Id        = Guid.NewGuid();
            post.CreatedAt = currentUtcDateProvider.UtcNow;

            using (var connection = OpenConnection())
            {
                await connection.InsertAsync(post);

                return(post.Id);
            }
        }
Example #3
0
        public async Task <ProjectionModels.Post> CreateAsync(EntityModels.Post post, ImageDescriptor postImage)
        {
            var jpegBytes = imageConverter.ConvertToFormat(postImage.Content, ImageFormat.Jpeg);

            post.ImageUrl = (await fileService.SaveFileAsync(GenerateRandomImageName(DesiredImageExtension), jpegBytes))
                            .ConvertToUrlPath();
            post.CreatedAt = currentUtcDateProvider.UtcNow;

            Guid createdId;

            try
            {
                createdId = await postRepository.CreateAsync(post);
            }
            catch (Exception e) // execute for any exception type
            {
                logger.LogError("Post was not saved. Details: {0}.", e.ToString());
                await fileService.DeleteFileAsync(post.ImageUrl);

                throw;
            }

            return(await postRepository.GetAsync(createdId));
        }