This commit is contained in:
Zeeshaun
2026-03-17 08:54:34 -05:00
parent 64856c640e
commit cdcba54aa4
330 changed files with 54110 additions and 0 deletions
@@ -0,0 +1,34 @@
using ReserveManagementSystemApi.Services;
using ReserveManagementSystemLib.Models;
namespace ReserveManagementSystemApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AuditHistoryController : ControllerBase
{
private readonly IAuditHistoryService _auditHistoryService;
public AuditHistoryController(IAuditHistoryService auditHistoryService)
{
_auditHistoryService = auditHistoryService;
}
[HttpGet(Name = "GetAllHistory")]
[ProducesResponseType(typeof(IEnumerable<AuditHistory>), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> Get()
{
try
{
var result = await _auditHistoryService.GetAllAsync();
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, "Failure returning Audit Histories");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
}
}
@@ -0,0 +1,51 @@
using ReserveManagementSystemApi.Services;
using ReserveManagementSystemLib.Models;
namespace ReserveManagementSystemApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class DealerController : ControllerBase
{
private readonly IDealerService _dealerService;
public DealerController(IDealerService dealerService)
{
_dealerService = dealerService;
}
[HttpGet("Search/{dealerSearchText}", Name = "Search")]
[ProducesResponseType(typeof(IEnumerable<Dealer>), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> Search(string dealerSearchText)
{
try
{
var result = await _dealerService.Search(dealerSearchText);
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, "Failure returning dealers");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpGet("GetByDealerCode/{dealerCode}", Name = "GetDealerByCode")]
[ProducesResponseType(typeof(Dealer), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> GetByDealerCode(string dealerCode)
{
try
{
var result = await _dealerService.GetDealerByCodeAsync(dealerCode);
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, "Failure returning dealer");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
}
}
@@ -0,0 +1,183 @@
using ReserveManagementSystemApi.Models;
using ReserveManagementSystemApi.Services;
using ReserveManagementSystemApi.Services.QueueServices;
using ReserveManagementSystemLib.Models;
namespace ReserveManagementSystemApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ImportController : ControllerBase
{
private readonly IImportReadService _importReadService;
private readonly IImportService _importService;
private readonly IQueueRmsActiveLoanService _queueRmsActiveLoanService;
public ImportController(IImportReadService importReadService, IImportService importService, IQueueRmsActiveLoanService queueRmsActiveLoanService)
{
_importReadService = importReadService;
_importService = importService;
_queueRmsActiveLoanService = queueRmsActiveLoanService;
}
[HttpGet(Name = "GetAllImports")]
[ProducesResponseType(typeof(IEnumerable<Import>), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> Get()
{
try
{
var result = await _importService.GetAllAsync();
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, "Failure returning Imports");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpGet("GetRecentImports/{numberOfImports}", Name = "GetRecentImports")]
[ProducesResponseType(typeof(IEnumerable<Import>), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> GetRecent(int numberOfImports)
{
try
{
var result = await _importService.GetRecentAsync(numberOfImports);
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, "Failure returning Imports");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpGet("GetById/{importId}", Name = "GetImportById")]
[ProducesResponseType(typeof(Loan), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> GetById(int importId)
{
try
{
var result = await _importService.GetByIdAsync(importId);
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, $"Failure returning loan with id {importId}");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPost("ImportNewLoanFile", Name ="ImportNewLoanFile")]
[ProducesResponseType(typeof(Import), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> ImportNewLoanFile(IFormFile file)
{
try
{
var stream = new StreamReader(file.OpenReadStream());
var import = await _importReadService.ReadNewLoanImportFile(stream, file.FileName, DateTime.Now);
return Ok(import);
}
catch (Exception e)
{
Log.Error("Failure to import new loan file, message: {0} {1}", e.Message, e.StackTrace);
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPost("ImportBoatLoanFile", Name = "ImportBoatLoanFile")]
[ProducesResponseType(typeof(List<ImportBoatLoan>), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> ImportBoatLoanFile(IFormFile file)
{
try
{
var stream = new StreamReader(file.OpenReadStream());
var import = await _importReadService.ReadBoatLoanImportFile(stream);
return Ok(import);
}
catch (Exception e)
{
Log.Error("Failure to import boat loan file, message: {0} {1}", e.Message, e.StackTrace);
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPost("ImportClosedLoanFile", Name = "ImportClosedLoanFile")]
[ProducesResponseType(typeof(Import), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> ImportClosedLoanFile(IFormFile file)
{
try
{
var stream = new StreamReader(file.OpenReadStream());
var import = await _importReadService.ReadClosedLoanImportFile(stream, file.FileName, DateTime.Now);
return Ok(import);
}
catch (Exception e)
{
Log.Error("Failure to import closed loan file, message: {0} {1}", e.Message, e.StackTrace);
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPut("ImportActiveLoans", Name = "ImportActiveLoans")]
[ProducesResponseType(typeof(Import), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> ImportActiveLoans(string? newerThanDateTime = "", bool skipExport = false)
{
try
{
var request = new RmsActiveImportRequest()
{
ImportDateTime = newerThanDateTime,
SkipExport = skipExport
};
await _queueRmsActiveLoanService.QueueRmsActiveLoanServiceRequest(request);
return Accepted();
}
catch (Exception ex)
{
Log.Error(ex, $"Failure importing Active Loans");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPut("ImportClosedLoans", Name = "ImportClosedLoans")]
[ProducesResponseType(typeof(Import), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> ImportClosedLoans(string? newerThanDateTime)
{
try
{
var import = await _importReadService.ImportClosedLoansFromDNA(newerThanDateTime);
return Ok(import);
}
catch (Exception ex)
{
Log.Error(ex, $"Failure importing Closed Loans");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPut("ImportClosedLoansWithUpdates", Name = "ImportClosedLoansWithUpdates")]
[ProducesResponseType(typeof(Import), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> ImportClosedLoansWithUpdates(string? newerThanDateTime, bool skipExport = false)
{
try
{
var import = await _importReadService.ImportClosedLoansWithUpdatesFromDNA(newerThanDateTime, skipExport);
return Ok(import);
}
catch (Exception ex)
{
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
}
}
@@ -0,0 +1,146 @@
using ReserveManagementSystemApi.Services;
using ReserveManagementSystemLib.Models;
namespace ReserveManagementSystemApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class LoanController : ControllerBase
{
private readonly ILoanService _loanService;
public LoanController(ILoanService loanService)
{
_loanService = loanService;
}
[HttpGet(Name = "GetAllLoans")]
[ProducesResponseType(typeof(IEnumerable<Loan>), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> Get()
{
try
{
var result = await _loanService.GetAllAsync();
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, "Failure returning Loans");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPost("SearchLoans", Name = "SearchLoans")]
[ProducesResponseType(typeof(PaginatedListResponse), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> Post([FromBody]LoanFilter filter)
{
try
{
var result = await _loanService.GetFilteredAsync(filter);
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, "Failure returning Filtered Loans");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpGet("SearchMembers/{searchText}", Name = "SearchMembers")]
[ProducesResponseType(typeof(string), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> SearchMembers(string searchText)
{
try
{
var result = await _loanService.SearchMembers(searchText);
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, $"Failure returning members");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpGet("SearchLoanNumbers/{searchText}", Name = "SearchLoanNumbers")]
[ProducesResponseType(typeof(string), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> SearchLoanNumbers(string searchText)
{
try
{
var result = await _loanService.SearchLoanNumbers(searchText);
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, $"Failure returning loan numbers");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpGet("SearchApplicationIds/{searchText}", Name = "SearchApplicationIds")]
[ProducesResponseType(typeof(string), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> SearchApplicationIds(string searchText)
{
try
{
var result = await _loanService.SearchApplicationIds(searchText);
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, $"Failure returning application ids");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpGet("GetById/{loanId}", Name = "GetLoanById")]
[ProducesResponseType(typeof(Loan), 200)]
[ProducesResponseType(500)]
public async Task<IActionResult> GetById(int loanId)
{
try
{
var result = await _loanService.GetByIdAsync(loanId);
return Ok(result);
}
catch (Exception e)
{
Log.Error(e, $"Failure returning loan with id {loanId}");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPost("CalculateReserve", Name = "CalculateReserve")]
public async Task<LoanReserve> Post([FromBody] LoanReserveInput input)
{
try
{
return await _loanService.GetLoanReserveAsync(input);
}
catch (Exception e)
{
Log.Error("Failure to Calculate Loan Reserve: {0} {1}", e.Message, e.StackTrace);
return null;
}
}
[HttpPost("CalculateChargeback", Name = "CalculateChargeback")]
public async Task<LoanChargeback> Post([FromBody] LoanChargebackInput input)
{
try
{
return await _loanService.GetLoanChargebackAsync(input);
}
catch (Exception e)
{
Log.Error("Failure to Calculate Loan Chargeback: {0} {1}", e.Message, e.StackTrace);
return null;
}
}
}
}
@@ -0,0 +1,33 @@
using ReserveManagementSystemApi.Services;
namespace ReserveManagementSystemApi.Controllers;
[ApiController]
[Route("api/[controller]")]
public class StatusController : ControllerBase
{
private readonly IStatusService _statusService;
public StatusController(IStatusService statusService)
{
_statusService = statusService;
}
[HttpGet]
[ProducesResponseType(200)]
[ProducesResponseType(500)]
public IActionResult Get()
{
try
{
return Ok(_statusService.GetEnviromentView());
}
catch (ServiceException exception)
{
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
}
catch (Exception exception)
{
Log.Error(exception, "Unexpected Exception");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
}