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); }
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); } }
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)); }