Ejemplo n.º 1
0
        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}"));
        }
Ejemplo n.º 2
0
        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);
            }
        }