Exemple #1
0
        public async Task <AttachFileToTaskResponse> Handle(AttachFileToTaskCommand request,
                                                            CancellationToken cancellationToken)
        {
            if (!request.FileId.HasValue && string.IsNullOrEmpty(request.FilePath))
            {
                throw new ArgumentException();
            }

            using (var connection = this._writeModelStore.OpenConnection())
            {
                Guid fileId;
                var  fileExistedBefore = false;
                if (!request.FileId.HasValue && !string.IsNullOrEmpty(request.FilePath))
                {
                    var fileCreateCommand = new StoreFileCommand(request.FilePath);
                    var fileInStore       = await FileCommandHandler.GetOrCreateFileAsync(fileCreateCommand,
                                                                                          this.AggregateRepository, connection, this.GuidGenerator);

                    fileId            = fileInStore.FileId;
                    fileExistedBefore = fileInStore.FileExistedBefore;
                }
                else
                {
                    Debug.Assert(request.FileId != null, "request.FileId != null");
                    fileId            = request.FileId.Value;
                    fileExistedBefore = true;
                }

                var task = this.AggregateRepository.GetById <TaskAggregateRoot>(request.TaskId);
                task.AttachFile(fileId);
                await this.AggregateRepository.SaveAsync(task);

                return(new AttachFileToTaskResponse(fileId, fileExistedBefore));
            }
        }
Exemple #2
0
        public async Task <CreatePercentageActivityResponse> Handle(CreatePercentageActivityCommand request,
                                                                    CancellationToken cancellationToken)
        {
            var activityId   = this.GuidGenerator.GenerateGuid();
            var activity     = ActivityAggregateRoot.Create(activityId, request.Name, ActivityType.Percentage);
            var activityList =
                this.AggregateRepository.GetById <ActivityListAggregateRoot>(ActivityListAggregateRoot.ActivityListId);

            activityList.AddActivity(activity.AggregateId, activity.Name);

            if (request.PreviewImageBytes != null)
            {
                using (var connection = this._writeModelStore.OpenConnection())
                {
                    var fileCreateCommand = new StoreFileCommand(request.PreviewImageBytes);
                    var response          = await FileCommandHandler.GetOrCreateFileAsync(fileCreateCommand,
                                                                                          this.AggregateRepository, connection,
                                                                                          this.GuidGenerator);

                    activity.AssignPreviewImage(response.FileId);
                }
            }

            await this.AggregateRepository.SaveAsync(activityList);

            await this.AggregateRepository.SaveAsync(activity);

            return(new CreatePercentageActivityResponse(activityId));
        }
Exemple #3
0
        public async Task <IHttpActionResult> UploadImage([FromUri] int bookId)
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            var provider = new MultipartMemoryStreamProvider();

            try
            {
                string fileName = String.Empty;
                await Request.Content.ReadAsMultipartAsync(provider);

                foreach (HttpContent content in provider.Contents)
                {
                    Stream filestream = null;

                    if (content.Headers.ContentDisposition.Name == "fileUpload")
                    {
                        filestream = content.ReadAsStreamAsync().Result;
                        fileName   = content.Headers.ContentDisposition.FileName;
                    }

                    var command = new StoreFileCommand(fileName, filestream, bookId);

                    if (!command.IsValidCommand())
                    {
                        return(BadRequest());
                    }

                    _storeFileUseCase.Handle(command);
                }

                return(Created("", fileName));
            }
            catch (Exception exception)
            {
                return(InternalServerError(exception));
            }
        }
        public async Task <AssignPreviewImageResponse> AttachPreviewImageToTaskAsync(Guid taskId, byte[] previewImage)
        {
            var fileCreateCommand = new StoreFileCommand(previewImage);

            return(await this.AttachPreviewImageToTaskAsync(taskId, fileCreateCommand));
        }
        private async Task <AssignPreviewImageResponse> AttachPreviewImageToTaskAsync(Guid taskId, StoreFileCommand fileCreateCommand)
        {
            var createdFile = await this._commandDispatcher.Send(fileCreateCommand);

            var attachedFile = await this.AttachFileToTaskAsync(taskId, createdFile.FileId);

            return(await this.AssignPreviewImageToTaskAsync(taskId, attachedFile.FileId));
        }