Updating
This commit is contained in:
+60
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using LCU.Api.Internal.FileOperations.Extensions;
|
||||
using LCU.Api.Internal.FileOperations.Services.FileActionServices;
|
||||
using LCU.Library.Internal.ApiResponse.Models;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models.Requests;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Serilog;
|
||||
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class DirectFileInformationController : ControllerBase
|
||||
{
|
||||
private readonly IFileSizeService _fileSizeService;
|
||||
|
||||
public DirectFileInformationController(IFileSizeService fileSizeService)
|
||||
{
|
||||
_fileSizeService = fileSizeService;
|
||||
}
|
||||
|
||||
[HttpPost("GetFileSize")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult GetFileSize([FromBody] FileSizeRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState.GetErrorMessages());
|
||||
}
|
||||
|
||||
var validateResponse = _fileSizeService.PreQueueValidation(request);
|
||||
if (!validateResponse.IsSuccessful)
|
||||
{
|
||||
return BadRequest($"Request is invalid. Response: {string.Join("\n ", validateResponse.MessageStack.ToArray())}");
|
||||
}
|
||||
|
||||
var response = _fileSizeService.GetFileSize(request);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (ServiceException exception)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
+146
@@ -0,0 +1,146 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Serilog;
|
||||
using LCU.Api.Internal.FileOperations.Services;
|
||||
using LCU.Api.Internal.FileOperations.Services.FileActionServices;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Library.Internal.ApiResponse.Models;
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class DirectFileOperationsController : ControllerBase
|
||||
{
|
||||
private readonly IDirectFileOperationsService _directFileOperationsService;
|
||||
private readonly IActionService<MoveFileRequest> _moveFileService;
|
||||
private readonly IActionService<WriteFileRequest> _writeFileService;
|
||||
private readonly IActionService<CreateDirectoryRequest> _createDirectoryRequestService;
|
||||
private readonly IActionService<UnzipFileRequest> _unzipFileRequestService;
|
||||
private readonly IActionService<ZipDirectoryRequest> _zipDirectoryRequestService;
|
||||
private readonly IActionService<DeleteDirectoryRequest> _deleteDirectoryRequestService;
|
||||
private readonly IActionService<DeleteFileRequest> _deleteFileRequestService;
|
||||
private readonly IActionService<AppendFileRequest> _appendFileService;
|
||||
|
||||
public DirectFileOperationsController(IDirectFileOperationsService directFileOperationsService,
|
||||
IActionService<MoveFileRequest> moveFileService,
|
||||
IActionService<WriteFileRequest> writeFileRequest,
|
||||
IActionService<CreateDirectoryRequest> createDirectoryRequestService,
|
||||
IActionService<UnzipFileRequest> unzipFileRequestService,
|
||||
IActionService<ZipDirectoryRequest> zipDirectoryRequestService,
|
||||
IActionService<DeleteDirectoryRequest> deleteDirectoryRequestService,
|
||||
IActionService<DeleteFileRequest> deleteFileRequestService,
|
||||
IActionService<AppendFileRequest> appendFileService)
|
||||
{
|
||||
_directFileOperationsService = directFileOperationsService;
|
||||
_moveFileService = moveFileService;
|
||||
_writeFileService = writeFileRequest;
|
||||
_createDirectoryRequestService = createDirectoryRequestService;
|
||||
_unzipFileRequestService = unzipFileRequestService;
|
||||
_zipDirectoryRequestService = zipDirectoryRequestService;
|
||||
_deleteDirectoryRequestService = deleteDirectoryRequestService;
|
||||
_deleteFileRequestService = deleteFileRequestService;
|
||||
_appendFileService = appendFileService;
|
||||
}
|
||||
|
||||
[HttpPost("MoveFile")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ReturnResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> MoveFile([FromBody] MoveFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.Move, _moveFileService);
|
||||
}
|
||||
|
||||
[HttpPost("WriteFile")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ReturnResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> WriteFile([FromBody] WriteFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.WriteFile, _writeFileService);
|
||||
}
|
||||
|
||||
[HttpPost("CreateDirectory")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ReturnResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> CreateDirectory([FromBody] CreateDirectoryRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.CreateDirectory, _createDirectoryRequestService);
|
||||
}
|
||||
|
||||
[HttpPost("UnzipFile")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ReturnResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> UnzipFile([FromBody] UnzipFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.UnzipFile, _unzipFileRequestService);
|
||||
}
|
||||
|
||||
[HttpPost("ZipDirectory")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ReturnResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> ZipDirectory([FromBody] ZipDirectoryRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.ZipDirectory, _zipDirectoryRequestService);
|
||||
}
|
||||
|
||||
[HttpPost("DeleteDirectory")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ReturnResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> DeleteDirectory([FromBody] DeleteDirectoryRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.DeleteDirectory, _deleteDirectoryRequestService);
|
||||
}
|
||||
|
||||
|
||||
[HttpPost("DeleteFile")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ReturnResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> DeleteFile([FromBody] DeleteFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.Delete, _deleteFileRequestService);
|
||||
}
|
||||
|
||||
[HttpPost("AppendFile")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ReturnResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> AppendFile([FromBody] AppendFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.AppendFile, _appendFileService);
|
||||
}
|
||||
|
||||
public async Task<IActionResult> HandleRequestResponse<TRequest>(TRequest originalRequest,
|
||||
FileOperationType operationType,
|
||||
IActionService<TRequest> service) where TRequest : ReturnResponse
|
||||
{
|
||||
try
|
||||
{
|
||||
var validateResponse = service.PreQueueValidation(originalRequest);
|
||||
if (!validateResponse.IsSuccessful)
|
||||
{
|
||||
return BadRequest($"Request is invalid. Response: {String.Join("\n ", validateResponse.MessageStack.ToArray())}");
|
||||
}
|
||||
|
||||
var result = await _directFileOperationsService.HandleDirectFileOperationsRequest(originalRequest, operationType);
|
||||
return Ok(result);
|
||||
}
|
||||
catch (ServiceException serviceException)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, serviceException.Message);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Serilog;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using LCU.Api.Internal.FileOperations.Services;
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("[controller]")]
|
||||
public class DynamicDirectoryController : ControllerBase
|
||||
{
|
||||
private readonly IDynamicDirectoryService _dynamicDirectoryService;
|
||||
|
||||
public DynamicDirectoryController(IDynamicDirectoryService dynamicDirectoryService)
|
||||
{
|
||||
_dynamicDirectoryService = dynamicDirectoryService;
|
||||
}
|
||||
|
||||
[HttpPost("BuildDirectoryList")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(404)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult BuildDirectoryList([FromBody] DynamicDirectoryListRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = _dynamicDirectoryService.BuildDirectoryList(request);
|
||||
if (result == null || !result.Any())
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, "Failure Build Dynamic Directory List");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Serilog;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using LCU.Library.Internal.FileOperationsModels.Shared;
|
||||
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("[controller]")]
|
||||
public class DynamicFileController : ControllerBase
|
||||
{
|
||||
/// <summary>Gets a list of files based on regex substitution.</summary>
|
||||
/// <remarks>
|
||||
/// Example:
|
||||
/// POST /api/BuildDynamicFileList
|
||||
/// {
|
||||
/// "path": "\\\\172.16.13.17\\Reports\\",
|
||||
/// "filename": "Action_IndirectVehicleLoanSales_date_time.csv",
|
||||
/// "dynamicFileSettings": {
|
||||
/// "regexSettings": [
|
||||
/// {
|
||||
/// "tag": "date",
|
||||
/// "regex": "\\d+_\\d+_\\d+"
|
||||
/// },
|
||||
/// {
|
||||
/// "tag": "time",
|
||||
/// "regex": "\\d+"
|
||||
/// }],
|
||||
/// "daysFromToday": 0
|
||||
/// }
|
||||
/// }
|
||||
/// </remarks>
|
||||
/// <param name="dynamicFileListRequest"></param>
|
||||
/// <returns></returns>
|
||||
// POST api/BuildDynamicFileList
|
||||
[HttpPost("BuildDynamicFileList")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult BuildDynamicFileList([FromBody] DynamicFileListRequest dynamicFileListRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
var fileNames = RegexNameHandler.BuildFileList(dynamicFileListRequest.Path,
|
||||
dynamicFileListRequest.Filename,
|
||||
dynamicFileListRequest.DynamicFileSettings);
|
||||
return Ok(fileNames);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, "Failure Build Dynamic File List");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
using System;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Serilog;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Api.Internal.FileOperations.Services.ExcelServices;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models.ExcelModels.Requests;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models.ExcelModels.Responses;
|
||||
using LCU.Api.Internal.FileOperations.Extensions;
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class ExcelController : ControllerBase
|
||||
{
|
||||
private readonly IExcelService _excelService;
|
||||
|
||||
public ExcelController(IExcelService excelService)
|
||||
{
|
||||
_excelService = excelService;
|
||||
}
|
||||
|
||||
/// <remarks>
|
||||
/// This endpoint is a direct file operations call to extract excel workbook data. The ExcelDataRequest contains
|
||||
/// the file content in a base64 encoded string for an excel sheet and it will extract all data into a json object.
|
||||
/// The request also has optional SheetRequests in which a SheetName and specific Rows and Columns can be selected.
|
||||
///
|
||||
/// Notes:
|
||||
/// - FileContent is required.
|
||||
/// - SheetRequests are optional.
|
||||
/// - If SheetRequests are added the SheetName is required.
|
||||
/// - The SheetRequest's Rows and Columns are optional.
|
||||
/// </remarks>
|
||||
/// <param name="request"></param>
|
||||
/// <returns>ExcelDataResponse</returns>
|
||||
[HttpPost("ExtractExcelWorkBookData")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ExcelDataResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult ExtractExcelWorkBookData([FromBody] ExcelDataRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState.GetErrorMessages());
|
||||
}
|
||||
|
||||
var requestResponse = _excelService.ExtractExcelWorkBookData(request);
|
||||
return Ok(requestResponse);
|
||||
}
|
||||
catch (ServiceException exception)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
+292
@@ -0,0 +1,292 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Serilog;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Library.Internal.ApiResponse.Models;
|
||||
using LCU.Api.Internal.FileOperations.Services.QueueServices;
|
||||
using LCU.Api.Internal.FileOperations.Extensions;
|
||||
using LCU.Api.Internal.FileOperations.Services;
|
||||
using LCU.Api.Internal.FileOperations.Services.FileActionServices;
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers;
|
||||
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
public class FileOperationsController : ControllerBase
|
||||
{
|
||||
private readonly IQueueFileOperationsService _queueFileOperationsService;
|
||||
private readonly IActionService<MoveFileRequest> _moveFileService;
|
||||
private readonly IActionService<CopyFileRequest> _copyFileService;
|
||||
private readonly IActionService<DeleteFileRequest> _deleteFileService;
|
||||
private readonly IActionService<ModifyFileRequest> _modifyFileService;
|
||||
private readonly IActionService<RenameFileRequest> _renameFileService;
|
||||
private readonly IActionService<ZipDirectoryRequest> _zipDirectoryService;
|
||||
private readonly IActionService<UnzipFileRequest> _unzipFileService;
|
||||
private readonly IActionService<UnzipPasswordProtectedFileRequest> _unzipPasswordProtectedFileService;
|
||||
private readonly IActionService<CreateDirectoryRequest> _createDirectoryService;
|
||||
private readonly IActionService<RenameDirectoryRequest> _renameDirectoryService;
|
||||
private readonly IActionService<BulkOperationRequest<MoveFileRequest>> _bulkMoveFileService;
|
||||
private readonly IActionService<EncryptFileDataRequest> _encryptFileDataService;
|
||||
private readonly IActionService<DecryptFileDataRequest> _decryptFileDataService;
|
||||
private readonly IActionService<WriteFileRequest> _writeFileDataService;
|
||||
private readonly IActionService<DeleteDirectoryRequest> _deleteDirectoryService;
|
||||
private readonly IActionService<DeleteEmptyDirectoryRequest> _deleteEmptyDirectoryService;
|
||||
private readonly IDirectFileService _directFileService;
|
||||
|
||||
public FileOperationsController(IQueueFileOperationsService fileOperationsService,
|
||||
IActionService<MoveFileRequest> moveFileService,
|
||||
IActionService<CopyFileRequest> copyFileService,
|
||||
IActionService<ModifyFileRequest> modifyFileService,
|
||||
IActionService<DeleteFileRequest> deleteFileService,
|
||||
IActionService<RenameFileRequest> renameFileService,
|
||||
IActionService<ZipDirectoryRequest> zipDirectoryService,
|
||||
IActionService<UnzipFileRequest> unzipFileService,
|
||||
IActionService<UnzipPasswordProtectedFileRequest> unzipPasswordProtectedFileService,
|
||||
IActionService<CreateDirectoryRequest> createDirectoryService,
|
||||
IActionService<RenameDirectoryRequest> renameDirectoryService,
|
||||
IActionService<BulkOperationRequest<MoveFileRequest>> bulkMoveFileService,
|
||||
IActionService<EncryptFileDataRequest> encryptFileDataService,
|
||||
IActionService<DecryptFileDataRequest> decryptFileDataService,
|
||||
IActionService<WriteFileRequest> writeFileDataService,
|
||||
IActionService<DeleteDirectoryRequest> deleteDirectoryService,
|
||||
IActionService<DeleteEmptyDirectoryRequest> deleteEmptyDirectoryService,
|
||||
IDirectFileService directFileService)
|
||||
{
|
||||
_queueFileOperationsService = fileOperationsService;
|
||||
_moveFileService = moveFileService;
|
||||
_copyFileService = copyFileService;
|
||||
_modifyFileService = modifyFileService;
|
||||
_deleteFileService = deleteFileService;
|
||||
_renameFileService = renameFileService;
|
||||
_zipDirectoryService = zipDirectoryService;
|
||||
_unzipFileService = unzipFileService;
|
||||
_unzipPasswordProtectedFileService = unzipPasswordProtectedFileService;
|
||||
_createDirectoryService = createDirectoryService;
|
||||
_renameDirectoryService = renameDirectoryService;
|
||||
_bulkMoveFileService = bulkMoveFileService;
|
||||
_encryptFileDataService = encryptFileDataService;
|
||||
_decryptFileDataService = decryptFileDataService;
|
||||
_directFileService = directFileService;
|
||||
_writeFileDataService = writeFileDataService;
|
||||
_deleteDirectoryService = deleteDirectoryService;
|
||||
_deleteEmptyDirectoryService = deleteEmptyDirectoryService;
|
||||
}
|
||||
|
||||
// Get api/{file}
|
||||
[HttpGet("{filename}")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(400)]
|
||||
public IActionResult GetFile([FromRoute] string filename)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(filename))
|
||||
{
|
||||
return BadRequest("filename is required");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var result = _directFileService.GetFileBytes(filename);
|
||||
return new FileContentResult(result, "application/octet-stream");
|
||||
}
|
||||
catch (ArgumentException ae)
|
||||
{
|
||||
Log.Error(ae, $"Request for bad file path {filename}");
|
||||
return BadRequest("File path not found");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"Unexpected error retrieving file path {filename}");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
|
||||
// POST api/MoveFile
|
||||
[HttpPost("MoveFile")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> MoveFile([FromBody] MoveFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.Move, _moveFileService);
|
||||
}
|
||||
|
||||
// POST api/CopyFile
|
||||
[HttpPost("CopyFile")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> CopyFile([FromBody] CopyFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.Copy, _copyFileService);
|
||||
}
|
||||
|
||||
// POST api/ModifyFile
|
||||
[HttpPost("ModifyFile")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> ModifyFile([FromBody] ModifyFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.Modify, _modifyFileService);
|
||||
}
|
||||
|
||||
// POST api/DeleteFile
|
||||
[HttpPost("DeleteFile")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> DeleteFile([FromBody] DeleteFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.Delete, _deleteFileService);
|
||||
}
|
||||
|
||||
// POST api/RenameFile
|
||||
[HttpPost("RenameFile")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> RenameFile([FromBody] RenameFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.Rename, _renameFileService);
|
||||
}
|
||||
|
||||
// POST api/ZipDirectory
|
||||
[HttpPost("ZipDirectory")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> ZipDirectory([FromBody] ZipDirectoryRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.ZipDirectory, _zipDirectoryService);
|
||||
}
|
||||
|
||||
// POST api/UnzipFile
|
||||
[HttpPost("UnzipFile")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> UnzipFile([FromBody] UnzipFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.UnzipFile, _unzipFileService);
|
||||
}
|
||||
|
||||
// POST api/UnzipPasswordProtectedFile
|
||||
[HttpPost("UnzipPasswordProtectedFile")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> UnzipPasswordProtectedFile([FromBody] UnzipPasswordProtectedFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.UnzipPasswordProtectedFile, _unzipPasswordProtectedFileService);
|
||||
}
|
||||
|
||||
// POST api/CreateDirectory
|
||||
[HttpPost("CreateDirectory")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> CreateDirectory([FromBody] CreateDirectoryRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.CreateDirectory, _createDirectoryService);
|
||||
}
|
||||
|
||||
// POST api/RenameDirectory
|
||||
[HttpPost("RenameDirectory")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> RenameDirectory([FromBody] RenameDirectoryRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.RenameDirectory, _renameDirectoryService);
|
||||
}
|
||||
|
||||
// POST api/BulkMoveFile
|
||||
[HttpPost("BulkMoveFile")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> BulkMoveFile([FromBody] BulkOperationRequest<MoveFileRequest> request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.BulkMoveFile, _bulkMoveFileService);
|
||||
}
|
||||
|
||||
// POST api/EncryptFileData
|
||||
[HttpPost("EncryptFileData")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> EncryptFileData([FromBody] EncryptFileDataRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.EncryptFileData, _encryptFileDataService);
|
||||
}
|
||||
|
||||
// POST api/DecryptFileData
|
||||
[HttpPost("DecryptFileData")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> DecryptFileData([FromBody] DecryptFileDataRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.DecryptFileData, _decryptFileDataService);
|
||||
}
|
||||
|
||||
// POST api/WriteFileData
|
||||
[HttpPost("WriteFileData")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> WriteFileData([FromBody] WriteFileRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.WriteFile, _writeFileDataService);
|
||||
}
|
||||
|
||||
[HttpPost("DeleteDirectory")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> DeleteDirectory([FromBody] DeleteDirectoryRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.DeleteDirectory, _deleteDirectoryService);
|
||||
}
|
||||
|
||||
[HttpPost("DeleteEmptyDirectory")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> DeleteEmptyDirectory([FromBody] DeleteEmptyDirectoryRequest request)
|
||||
{
|
||||
return await HandleRequestResponse(request, FileOperationType.DeleteEmptyDirectory, _deleteEmptyDirectoryService);
|
||||
}
|
||||
|
||||
public async Task<IActionResult> HandleRequestResponse<TRequest>(TRequest originalRequest, FileOperationType operationType, IActionService<TRequest> service) where TRequest : ReturnResponse
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState.GetErrorMessages());
|
||||
}
|
||||
|
||||
var validateResponse = service.PreQueueValidation(originalRequest);
|
||||
if (!validateResponse.IsSuccessful)
|
||||
{
|
||||
return BadRequest($"Request is invalid. Response: {String.Join("\n ", validateResponse.MessageStack.ToArray())}");
|
||||
}
|
||||
|
||||
await _queueFileOperationsService.QueueFileOperations(originalRequest, operationType);
|
||||
return Ok();
|
||||
}
|
||||
catch (ServiceException)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
using System;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Serilog;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using LCU.Api.Internal.FileOperations.Validations;
|
||||
using LCU.Api.Internal.FileOperations.Services.FileActionServices;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using LCU.Api.Internal.FileOperations.Extensions;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Api.Internal.FileOperations.Services.QueueServices;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models.Requests;
|
||||
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("[controller]")]
|
||||
public class FileValidationController : ControllerBase
|
||||
{
|
||||
private readonly IQueueFileOperationsService _queueFileOperationsService;
|
||||
private readonly IActionService<ValidateFileRequest> _validateFileService;
|
||||
private readonly IActionService<ValidateFileSizeInRangeRequest> _validateFileSizeInRangeService;
|
||||
|
||||
public FileValidationController(IQueueFileOperationsService fileOperationsService,
|
||||
IActionService<ValidateFileRequest> validateFileService,
|
||||
IActionService<ValidateFileSizeInRangeRequest> validateFileSizeInRangeService
|
||||
)
|
||||
{
|
||||
_queueFileOperationsService = fileOperationsService;
|
||||
_validateFileService = validateFileService;
|
||||
_validateFileSizeInRangeService = validateFileSizeInRangeService;
|
||||
}
|
||||
// POST ValidateFileExists
|
||||
[HttpPost("ValidateFileExists")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(bool), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult ValidateFileExists([FromBody] string sourceFilePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
var requestResponse = new RequestResponse();
|
||||
requestResponse = FileValidation.ValidateFileExists(sourceFilePath, requestResponse);
|
||||
return Ok(requestResponse.IsSuccessful);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
|
||||
// POST api/QueueValidateFile
|
||||
[HttpPost("QueueValidateFile")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> ValidateFile([FromBody] ValidateFileRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState.GetErrorMessages());
|
||||
}
|
||||
|
||||
var validateResponse = _validateFileService.PreQueueValidation(request);
|
||||
if (!validateResponse.IsSuccessful)
|
||||
{
|
||||
return BadRequest($"Request is invalid. Response: {String.Join("\n ", validateResponse.MessageStack.ToArray())}");
|
||||
}
|
||||
|
||||
await _queueFileOperationsService.QueueFileOperations(request, FileOperationType.Validate);
|
||||
return Accepted();
|
||||
}
|
||||
catch (ServiceException)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
|
||||
[HttpPost("ValidatePdfPageExists/{path}/{pageNumber:int}")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(bool), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult ValidatePdfPageExists(string path, int pageNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
var requestResponse = new RequestResponse();
|
||||
requestResponse = PdfValidations.ValidatePdfPageExists(requestResponse, path, pageNumber);
|
||||
return Ok(requestResponse);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
|
||||
// POST api/QueueValidateFileSizeInRange
|
||||
[HttpPost("QueueValidateFileSizeInRange")]
|
||||
[ProducesResponseType(201)]
|
||||
[ProducesResponseType(typeof(List<string>), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> ValidateFileSizeInRange([FromBody] ValidateFileSizeInRangeRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState.GetErrorMessages());
|
||||
}
|
||||
|
||||
var validateResponse = _validateFileSizeInRangeService.PreQueueValidation(request);
|
||||
if (!validateResponse.IsSuccessful)
|
||||
{
|
||||
return BadRequest($"Request is invalid. Response: {string.Join("\n ", validateResponse.MessageStack.ToArray())}");
|
||||
}
|
||||
|
||||
await _queueFileOperationsService.QueueFileOperations(request, FileOperationType.ValidateFileSizeInRange);
|
||||
return Accepted();
|
||||
}
|
||||
catch (ServiceException)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using LCU.Api.Internal.FileOperations.Extensions;
|
||||
using LCU.Api.Internal.FileOperations.Services.QueueServices;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using LCU.Library.Internal.ApiResponse.Models;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Serilog;
|
||||
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class IndexFileController : ControllerBase
|
||||
{
|
||||
private readonly IQueueFileOperationsService _queueFileOperationsService;
|
||||
|
||||
public IndexFileController(IQueueFileOperationsService queueFileOperationsService)
|
||||
{
|
||||
_queueFileOperationsService = queueFileOperationsService;
|
||||
}
|
||||
|
||||
[HttpPost("QueueExtractIndexFileData")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ReturnResponse), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> QueueExtractIndexFileData([FromBody] ExtractIndexFileDataRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState.GetErrorMessages());
|
||||
}
|
||||
|
||||
await _queueFileOperationsService.QueueFileOperations(request, FileOperationType.ExtractIndexFileData);
|
||||
return Accepted();
|
||||
}
|
||||
catch (ServiceException exception)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
+185
@@ -0,0 +1,185 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Serilog;
|
||||
using LCU.Api.Internal.FileOperations.Services;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models.HtmlToPdfModels;
|
||||
using LCU.Api.Internal.FileOperations.Extensions;
|
||||
using LCU.Api.Internal.FileOperations.Services.QueueServices;
|
||||
using LCU.Api.Internal.FileOperations.Services.PdfServices;
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class PdfController : ControllerBase
|
||||
{
|
||||
private readonly IQueueFileOperationsService _queueFileOperationsService;
|
||||
private readonly IPdfParserService _pdfParserService;
|
||||
private readonly IBatchPdfParserService _batchPdfParserService;
|
||||
private readonly IDirectFileService _directFileService;
|
||||
private readonly IHtmlToPdfService _htmlToPdfService;
|
||||
|
||||
public PdfController(IQueueFileOperationsService queueFileOperationsService,
|
||||
IPdfParserService pdfParserService,
|
||||
IBatchPdfParserService batchPdfParserService,
|
||||
IDirectFileService directFileService,
|
||||
IHtmlToPdfService htmlToPdfService)
|
||||
{
|
||||
_queueFileOperationsService = queueFileOperationsService;
|
||||
_batchPdfParserService = batchPdfParserService;
|
||||
_pdfParserService = pdfParserService;
|
||||
_directFileService = directFileService;
|
||||
_htmlToPdfService = htmlToPdfService;
|
||||
}
|
||||
|
||||
[HttpPost("QueueBatchPdfParser")]
|
||||
[ProducesResponseType(202)]
|
||||
[ProducesResponseType(400)]
|
||||
[ProducesResponseType(500)]
|
||||
public async Task<IActionResult> QueueBatchPdfParser([FromBody] BatchParsePdfRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var requestResponse = _batchPdfParserService.IsRequestValid(request, new RequestResponse());
|
||||
if (!requestResponse.IsSuccessful)
|
||||
{
|
||||
return BadRequest($"Request is invalid. Response: {String.Join("\n ", requestResponse.MessageStack.ToArray())}");
|
||||
}
|
||||
|
||||
await _queueFileOperationsService.QueueFileOperations(request, FileOperationType.BatchPdfParser);
|
||||
return Accepted();
|
||||
}
|
||||
catch (ServiceException exception)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks>
|
||||
/// This will parse a PDF from a starting page to and a stopping page, save new pdf to RootPath,
|
||||
/// and returns the PDF name. The PDF name will be set to ParsedPdfname or the default "{pdfParserRequest.PdfName}.{pdfParserRequest.StartingPage}.pdf".
|
||||
///
|
||||
/// Notes:
|
||||
/// - Page numbers range from 1-x.
|
||||
/// - If PDF exists it will automatically overwrite.
|
||||
/// - Original PDF can be open at the time of parsing.
|
||||
/// </remarks>
|
||||
/// <param name="pdfParserRequest"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("ParsePdf")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(typeof(ParsePdfRequest), 400)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult ParsePdf([FromBody] ParsePdfRequest pdfParserRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState.GetErrorMessages());
|
||||
}
|
||||
|
||||
var result = _pdfParserService.ParsePdf(pdfParserRequest);
|
||||
return Ok(result);
|
||||
}
|
||||
catch (ServiceException exception)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet("GetPdfContent/{pdfPath}")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(400)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult GetPdfContent([FromRoute] string pdfPath)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(pdfPath))
|
||||
{
|
||||
return BadRequest("PDF Path is required");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var result = _directFileService.GetFileBytes(pdfPath);
|
||||
return new FileContentResult(result, "application/pdf");
|
||||
}
|
||||
catch (ArgumentException ae)
|
||||
{
|
||||
Log.Error(ae, $"Request for bad PDF path {pdfPath}");
|
||||
return BadRequest("PDF path not found");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"Unexpected error retrieving PDF path {pdfPath}");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks>
|
||||
/// ConvertHmtlToPdf will take the HtmlToPdfRequest and generate a HTML file filling in the tags with the supplied data.
|
||||
/// It will then utilize Chrome functionality to print a pdf and save it to a location. Finally converting to byte array and returning.
|
||||
///
|
||||
/// HtmlToPdfRequest:
|
||||
/// - HtmlTemplateFilePath: (REQUIRED) File Path of the main html template that the HTML file will start to build.
|
||||
/// - PdfName: (REQUIRED) What the PDF and HTML files will be called.
|
||||
/// - KeepHtmlFile: (Defaults = False) Mostly for testing purposes. If set to true it will keep the generated HTML file.
|
||||
/// - KeepPdfFile: (Defaults = False) Mostly for testing purposes. If set to true it will keep the generated PDF file
|
||||
/// - HtmlSaveFilePath: (REQUIRED) Location that the generated HTML file will be temporarily (KeepHtmlFile = false) stored.
|
||||
/// - PdfSaveFilePath: (REQUIRED) Location that the generated PDF file will be temporarily (KeepHtmlFile = false) stored.
|
||||
/// - BodyTagValues: Tags that will be filled in with supplied values.
|
||||
/// - TagValues:
|
||||
/// - Tag: (REQUIRED) Name of the tag in the HTML. In HTML should be surrounded by {}. This tag does not need {}.
|
||||
/// - Value: (REQUIRED) Value in which will replace the {TagName}.
|
||||
/// - BodyValueCollections: List of ValueCollections that give us the ability to replace a tag that is associated with a HTML Template. The ValucollectionItems is
|
||||
/// looped through to generate what will replace the tag. Common use case would be a list of items or a table of items.
|
||||
/// - CollectionTag: (REQUIRED) Name of the tag in the HTML. In HTML should be surrounded by {}. This tag does not need {}.
|
||||
/// - CollectionHtmlTemplateFilePath: (REQUIRED) File Path of the collections html template that the HTML file will start to build.
|
||||
/// - ValueCollectionItems: List of ValueCollectionItems that can be looped through to help build out what the CollectionTag will be replaced with.
|
||||
/// ValueCollection has a nested ValueCollectionItems, giving the ability to create infinite amount of nested collections within collections.
|
||||
/// - TagValues: List of TagValues
|
||||
/// - ValueCollections: List of ValueCollections
|
||||
///
|
||||
/// Notes:
|
||||
/// - In HTML templates tags should be surrounded by braces {TagName}. The request does not need the braces {}.
|
||||
/// - Any unused tags surrounded by braces will be removed at the end of the process.
|
||||
/// - Can use \\\\zeus\DataIntegrationsQA\\PDFCreation\\ folder to store templates, generated HTML files, and generated PDF
|
||||
/// - \\\\zeus\DataIntegrationsQA\\PDFCreation\\Html_Templates
|
||||
/// - \\\\zeus\DataIntegrationsQA\\PDFCreation\\Html_Drop
|
||||
/// - \\\\zeus\DataIntegrationsQA\\PDFCreation\\PDF_Drop
|
||||
/// </remarks>
|
||||
[HttpPost("ConvertHtmlToPdf")]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(400)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult ConvertHtmlToPdf([FromBody] HtmlToPdfRequest htmlToPdfRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = _htmlToPdfService.ConvertHtmlToPdf(htmlToPdfRequest);
|
||||
return new FileContentResult(result, "application/pdf");
|
||||
}
|
||||
catch (ServiceException exception)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Serilog;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Library.Internal.Status.Services;
|
||||
namespace LCU.Api.Internal.FileOperations.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class StatusController : ControllerBase
|
||||
{
|
||||
private readonly IApiHealthCheckService _apiHealthCheckService;
|
||||
|
||||
public StatusController(IApiHealthCheckService apiHealthCheckService)
|
||||
{
|
||||
_apiHealthCheckService = apiHealthCheckService;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[ProducesResponseType(200)]
|
||||
[ProducesResponseType(500)]
|
||||
public IActionResult Get()
|
||||
{
|
||||
try
|
||||
{
|
||||
return Ok(_apiHealthCheckService.CheckApiHealthAndBuildEnvironmentView());
|
||||
}
|
||||
catch (ServiceException exception)
|
||||
{
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, "Unexpected Exception");
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user