Pull Request 33520 suggestions Injected AppSettings instead of using GetEnvironmentVariable at Services level When debugging only app.Services.GetRequiredService<IPCRBService>(); Get ready to use VSCode IDE Align .editorconfig files
60 lines
2.2 KiB
C#
60 lines
2.2 KiB
C#
using System.Text;
|
|
|
|
using FabApprovalWorkerService.Models;
|
|
using FabApprovalWorkerService.Utilities;
|
|
|
|
namespace FabApprovalWorkerService.Services;
|
|
|
|
public interface IPCRBService {
|
|
Task<bool> PCRBNumberIsActive(int number);
|
|
public Task<PCRB> GetPCRBByPlanNumber(int planNumber);
|
|
}
|
|
|
|
public class PCRBService : IPCRBService {
|
|
private readonly ILogger<PCRBService> _logger;
|
|
private readonly IDalService _dalService;
|
|
|
|
public PCRBService(ILogger<PCRBService> logger, IDalService dalService) {
|
|
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
|
_dalService = dalService ?? throw new ArgumentNullException("IDalService not injected");
|
|
}
|
|
|
|
public async Task<bool> PCRBNumberIsActive(int number) {
|
|
try {
|
|
_logger.LogInformation($"Attempting to determine if {number} is an active PCRB#");
|
|
|
|
if (number <= 0) return false;
|
|
|
|
StringBuilder queryBuilder = new();
|
|
queryBuilder.Append("select count(PlanNumber) as count from CCChangeControl ");
|
|
queryBuilder.Append($"where PlanNumber={number} and ");
|
|
queryBuilder.Append($"(ClosedDate is null or ClosedDate >= '{DateTimeUtilities.MAX_DT.ToString("yyyy-MM-dd HH:mm")}')");
|
|
|
|
int rowsReturned = (await _dalService.QueryAsync<int>(queryBuilder.ToString())).FirstOrDefault();
|
|
|
|
return rowsReturned > 0;
|
|
} catch (Exception ex) {
|
|
_logger.LogError($"Unable to determine if {number} is an active PCRB#, because {ex.Message}");
|
|
throw;
|
|
}
|
|
}
|
|
|
|
public async Task<PCRB> GetPCRBByPlanNumber(int planNumber) {
|
|
try {
|
|
_logger.LogInformation("Attempting to get a PCRB by plan#");
|
|
|
|
if (planNumber <= 0) throw new ArgumentException($"{planNumber} is not a valid PCRB#");
|
|
|
|
string sql = $"select * from CCChangeControl where PlanNumber={planNumber}";
|
|
|
|
PCRB? pcrb = (await _dalService.QueryAsync<PCRB>(sql)).FirstOrDefault();
|
|
|
|
if (pcrb is null) throw new Exception($"unable to find PCRB {planNumber}");
|
|
|
|
return pcrb;
|
|
} catch (Exception ex) {
|
|
_logger.LogError($"Unable to get PCRB# {planNumber}, because {ex.Message}");
|
|
throw;
|
|
}
|
|
}
|
|
} |