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
{
/// Gets a list of files based on regex substitution.
///
/// 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
/// }
/// }
///
///
///
// POST api/BuildDynamicFileList
[HttpPost("BuildDynamicFileList")]
[ProducesResponseType(201)]
[ProducesResponseType(typeof(List), 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);
}
}
}
}