Exemple #1
0
        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);
 }