MRB webassembly
This commit is contained in:
46
MesaFabApproval.API/Services/CAService.cs
Normal file
46
MesaFabApproval.API/Services/CAService.cs
Normal file
@ -0,0 +1,46 @@
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
|
||||
namespace MesaFabApproval.API.Services;
|
||||
|
||||
public interface ICAService {
|
||||
Task<bool> IsValidCANumber(int number);
|
||||
}
|
||||
|
||||
public class CAService : ICAService {
|
||||
private readonly ILogger<CAService> _logger;
|
||||
private readonly IMemoryCache _cache;
|
||||
private readonly IDalService _dalService;
|
||||
|
||||
public CAService(ILogger<CAService> logger, IMemoryCache cache, IDalService dalService) {
|
||||
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
||||
_cache = cache ?? throw new ArgumentNullException("IMemoryCache not injected");
|
||||
_dalService = dalService ?? throw new ArgumentNullException("IDalService not injected");
|
||||
}
|
||||
|
||||
public async Task<bool> IsValidCANumber(int number) {
|
||||
try {
|
||||
_logger.LogInformation($"Attempting to determine if {number} is a valid CA#");
|
||||
|
||||
if (number <= 0) return false;
|
||||
|
||||
IEnumerable<int> caNumbers = _cache.Get<IEnumerable<int>>("caNumbers") ?? new HashSet<int>();
|
||||
|
||||
if (caNumbers.Contains(number)) return true;
|
||||
|
||||
string sql = $"select count(CANo) as count from _8DCorrectiveAction where CANo={number}";
|
||||
|
||||
int rowsReturned = (await _dalService.QueryAsync<int>(sql)).FirstOrDefault();
|
||||
|
||||
if (rowsReturned > 0) {
|
||||
caNumbers.Append(number);
|
||||
_cache.Set("caNumbers", caNumbers);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
} catch (Exception ex) {
|
||||
_logger.LogError($"Unable to determine if {number} is a valid CA#, because {ex.Message}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user