public async Task <IOutputPort> Handle(CreateDraftApplicationInput input, CancellationToken cancellationToken) { try { await this._validator.ValidateAndThrowAsync(input, cancellationToken); var draftApplication = this._draftApplicationFactory.Create(input); if (this.IfAddedAttachmentsExists(input)) { var files = await this.UploadFilesToStorage(input); this.AddUploadedFilesAsAttachments(draftApplication, files); } await this._draftApplicationRepository.Create(draftApplication, cancellationToken); this.BuildOutput(draftApplication); } catch (BusinessRuleValidationException ex) { this._outputPort.WriteBusinessRuleError(ex.ToString()); } catch (ValidationException ex) { this._outputPort.WriteInvalidInput(ex.MapToInvaliInputErrors()); } return(this._outputPort); }
public DraftApplication Create(CreateDraftApplicationInput request) { return(DraftApplication.Create( new Title(request.Title), new Content(request.Content), new IncidentType(request.IncidentType), new EmployeeId(this._applicantContext.UserId), new List <EmployeeId>( request.SuspiciousEmployees.Select(x => new EmployeeId(x))) )); }
private Task <List <UploadedFile> > UploadFilesToStorage(CreateDraftApplicationInput request) { return(this._fileStorageService.UploadFiles(request.Attachments)); }
private bool IfAddedAttachmentsExists(CreateDraftApplicationInput request) { return(request.Attachments != null && request.Attachments.Any()); }