Created approval reminder worker
This commit is contained in:
60
FabApprovalWorkerService/Services/PCRBService.cs
Normal file
60
FabApprovalWorkerService/Services/PCRBService.cs
Normal file
@ -0,0 +1,60 @@
|
||||
using FabApprovalWorkerService.Models;
|
||||
using FabApprovalWorkerService.Utilities;
|
||||
|
||||
using System.Text;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user