Mike Phares 7be540964a Pull Request 33523 suggestions
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
2024-12-03 10:48:07 -07:00

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;
}
}
}