public async Task <IActionResult> ExportFile([FromBody] ExportFileRequest request) { if (request is null) { return(BadRequest()); } Guid exportToBlobId = Guid.NewGuid(); //var propertyNames = IEnumerable <string> propertyNames = request.Properties.Select(p => p.Name); Log.Information($"Exporting file from blob {request.BlobId} into bucket {UserId} with id {exportToBlobId}, format = {request.Format}, properties = [{string.Join(",", propertyNames)}]"); await _bus.Publish <ExportFile>(new { Bucket = UserId.ToString(), Id = exportToBlobId, BlobId = request.BlobId, Format = request.Format, Properties = propertyNames, Map = request.Properties.Where(p => !string.IsNullOrEmpty(p.ExportName)).ToDictionary(p => p.Name, p => p.ExportName), UserId }); var httpRequest = _httpContextAccessor.HttpContext.Request; return(Accepted($"{httpRequest.Scheme}://{httpRequest.Host}/blob/v1/api/blobs/{UserId}/{exportToBlobId}")); }
public ExportFileResponse ExportFile(ExportFileRequest request) { string methodName = $"{nameof(DoNotCallBatchProcess)}.{nameof(ExportFile)}"; var response = new ExportFileResponse(); DateTime startTime = DateTime.Now; response.StartTime = startTime; try { if (request == null || request.Header == null) { throw new NullReferenceException($"{methodName}: Request/Header is null!"); } var requestHeader = request.Header; response.Header = GetResponseHeader(requestHeader, methodName); // Set batch process status if (AppLog.BatchProcessStart(Constants.BatchProcessCode.ExportDoNotCallUpdateFile, startTime) == false) { return(SetUnprocessResponse(response, methodName)); } // Authenticate user if (!ValidateServiceRequest(request.Header)) { return(SetInvalidLoginResponse(response)); } _logger.DebugFormat("-- XMLRequest --\n{0}", request.SerializeObject()); // Export ExportUpdateData(response); return(SetSuccessResponse(response)); } catch (Exception ex) { DateTime errorTime = DateTime.Now; response = SetErrorResponse(response, ex); _mailSender = CSMMailSender.GetCSMMailSender(); _mailSender.NotifyFailExportDoNotCall(response.StartTime, errorTime, response.ElapsedTime, response.Error, response.ExportDataCount); return(response); } finally { UpdateBatchProcessStatus(response); //Insert Audit Log bool success = response.ResultStatus == Constants.StatusResponse.Success; string detail = !string.IsNullOrWhiteSpace(response.Error) ? response.Error : response.Description; InsertAuditLog(methodName, success, detail ?? response.ResultStatus); } }