public async Task Handle(AttachedFileToTaskEvent notification, CancellationToken cancellationToken) { using (var connection = this._dbConnectionFactory.OpenConnection()) { var fileRepository = new FileRepository(); var file = await fileRepository.GetByIdAsync(connection, notification.FileId); var taskId = notification.AggregateId; if (file.IsImage) { var imageRepository = new ImageRepository(); var taskImagesRepository = new TaskImageRepository(); await imageRepository.StoreImagesAsync(connection, file); await taskImagesRepository.CreateTaskImageLinks(connection, taskId, file.FileId); } else { var taskFileRepository = new TaskFileRepository(); await taskFileRepository.InsertAsync(connection, new TaskFileEntity { TaskFileId = this._dbConnectionFactory.GuidGenerator.GenerateGuid(), TaskId = taskId, FileId = notification.FileId }); } } }
internal void AttachFile(Guid fileId) { if (this.Files.Contains(fileId)) { throw new DuplicateAttachedFileException(fileId); } var fileAttachedEvent = new AttachedFileToTaskEvent(this.AggregateId, fileId); this.RaiseEvent(fileAttachedEvent); }
private void Apply(AttachedFileToTaskEvent obj) { this.Files.Add(obj.FileId); }