PCRB follow up endpoints
This commit is contained in:
@ -37,6 +37,10 @@ public interface IPCRBService {
|
||||
Task NotifyApprovers(PCRBNotification notification);
|
||||
Task NotifyOriginator(PCRBNotification notification);
|
||||
Task NotifyResponsiblePerson(PCRBActionItemNotification notification);
|
||||
Task CreateFollowUp(PCRBFollowUp followUp);
|
||||
Task<IEnumerable<PCRBFollowUp>> GetFollowUpsByPlanNumber(int planNumber, bool bypassCache);
|
||||
Task UpdateFollowUp(PCRBFollowUp followUp);
|
||||
Task DeleteFollowUp(int id);
|
||||
}
|
||||
|
||||
public class PCRBService : IPCRBService {
|
||||
@ -755,6 +759,90 @@ public class PCRBService : IPCRBService {
|
||||
}
|
||||
}
|
||||
|
||||
public async Task CreateFollowUp(PCRBFollowUp followUp) {
|
||||
try {
|
||||
_logger.LogInformation("Attempting to create PCRB follow up");
|
||||
|
||||
if (followUp is null) throw new ArgumentNullException("follow up cannot be null");
|
||||
|
||||
StringBuilder queryBuilder = new();
|
||||
queryBuilder.Append("insert into CCPCRBFollowUp (PlanNumber, Step, FollowUpDate, CompletedDate) ");
|
||||
queryBuilder.Append("values (@PlanNumber, @Step, @FollowUpDate, @CompletedDate)");
|
||||
|
||||
int rowsReturned = await _dalService.ExecuteAsync<PCRBFollowUp>(queryBuilder.ToString(), followUp);
|
||||
|
||||
if (rowsReturned <= 0) throw new Exception("unable to insert new follow up in the database");
|
||||
} catch (Exception ex) {
|
||||
_logger.LogError($"Unable to create new follow up, because {ex.Message}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<PCRBFollowUp>> GetFollowUpsByPlanNumber(int planNumber, bool bypassCache) {
|
||||
try {
|
||||
_logger.LogInformation($"Attempting to fetch follow ups for PCRB {planNumber}");
|
||||
|
||||
if (planNumber <= 0) throw new ArgumentException($"{planNumber} is not a valid PCRB Plan#");
|
||||
|
||||
IEnumerable<PCRBFollowUp>? followUps = new List<PCRBFollowUp>();
|
||||
|
||||
if (!bypassCache)
|
||||
followUps = _cache.Get<IEnumerable<PCRBFollowUp>>($"pcrbFollowUps{planNumber}");
|
||||
|
||||
if (followUps is null || followUps.Count() == 0) {
|
||||
string sql = "select * from CCPCRBFollowUp where PlanNumber=@PlanNumber";
|
||||
|
||||
followUps = await _dalService.QueryAsync<PCRBFollowUp>(sql, new { PlanNumber = planNumber });
|
||||
|
||||
if (followUps is not null)
|
||||
_cache.Set($"pcrbFollowUps{planNumber}", followUps, DateTimeOffset.Now.AddMinutes(15));
|
||||
}
|
||||
|
||||
return followUps ?? new List<PCRBFollowUp>();
|
||||
} catch (Exception ex) {
|
||||
_logger.LogError($"Unable to fetch follow ups for PCRB {planNumber}, because {ex.Message}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task UpdateFollowUp(PCRBFollowUp followUp) {
|
||||
try {
|
||||
_logger.LogInformation("Attempting to update a follow up");
|
||||
|
||||
if (followUp is null)
|
||||
throw new ArgumentNullException("follow up cannot be null");
|
||||
|
||||
StringBuilder queryBuilder = new();
|
||||
queryBuilder.Append("update CCPCRBFollowUp set Step=@Step, FollowUpDate=@FollowUpDate, IsComplete=@IsComplete, ");
|
||||
queryBuilder.Append("IsDeleted=@IsDeleted, CompletedDate=@CompletedDate, Comments=@Comments ");
|
||||
queryBuilder.Append("where ID=@ID");
|
||||
|
||||
int rowsAffected = await _dalService.ExecuteAsync<PCRBFollowUp>(queryBuilder.ToString(), followUp);
|
||||
|
||||
if (rowsAffected <= 0) throw new Exception("update failed in database");
|
||||
} catch (Exception ex) {
|
||||
_logger.LogError($"Unable to update follow up, because {ex.Message}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task DeleteFollowUp(int id) {
|
||||
try {
|
||||
_logger.LogInformation($"Attempting to delete follow up {id}");
|
||||
|
||||
if (id <= 0) throw new ArgumentException($"{id} is not a valid follow up ID");
|
||||
|
||||
string sql = "delete from CCPCRBFollowUp where ID=@ID";
|
||||
|
||||
int rowsAffected = await _dalService.ExecuteAsync(sql, new { ID = id });
|
||||
|
||||
if (rowsAffected <= 0) throw new Exception("delete operation failed in database");
|
||||
} catch (Exception ex) {
|
||||
_logger.LogError($"Unable to delete follow up {id}, because {ex.Message}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SaveAttachmentInDb(IFormFile file, PCRBAttachment attachment) {
|
||||
try {
|
||||
_logger.LogInformation($"Attempting to save attachment to database");
|
||||
|
Reference in New Issue
Block a user