private FileUploadResponse Upload(FileUploadRequest request, FileUploadSessionModel session) { if (request.Bytes.IsEmptyOrNull()) { return(new FileUploadResponse(request, FileStatusCode.Invalid, null, "Invalid upload request")); } if (!IsSupportedExtension(request.Extension)) { return(new FileUploadResponse(request, FileStatusCode.Unsupported, null, "Extension not supportted")); } var fileStatusCode = _fileUploadValidationFactory.Validate(request.Extension, request.Bytes); if (fileStatusCode != FileStatusCode.Valid) { return(new FileUploadResponse(request, fileStatusCode, null, "failed to validate")); } _logger.Information("Start uploading file to server. File name {0}".AsFormat(request.FileName)); var fur = new FileUploadRecordModel { FileName = request.FileName, Bytes = request.Bytes, UploadId = Guid.NewGuid(), UploadSession = session, UploadSessionId = session.Id }; _fileUploadRecordRepository.Create(fur); if (fur.Id == default(long)) { _logger.Information( "Failed to upload file to server. File name {0}, RecordId: {1}, UploadSession: {2}".AsFormat(request.FileName, fur, session)); return(new FileUploadResponse(request, FileStatusCode.FailedToUpload, fur, "File failed to upload")); } _logger.Information( "Finish uploading file to server. File name {0}, RecordId: {1}, UploadSession: {2}".AsFormat(request.FileName, fur, session)); _eventPublisher.PublishToAllDomainModelCreatedEvent(fur); return(new FileUploadResponse(request, FileStatusCode.Uploaded, fur, "File uploaded successfully")); }
public async Task <IEnumerable <FileUploadResponse> > UploadAsync(IEnumerable <FileUploadRequest> requests) { Guard.NotNull(requests); var fileUploadResponses = new List <FileUploadResponse>(); if (requests.IsEmptyOrNull()) { return(fileUploadResponses); } var us = new FileUploadSessionModel { SessionId = Guid.NewGuid() }; await Task.Run(() => { _auditHelper.PrepareForCreateAudity(us); _fileUploadSessionRepository.Create(us); requests.ForEachItem(req => fileUploadResponses.Add(Upload(req, us))); }); return(fileUploadResponses); }