using FabApprovalWorkerService.Models; using System.Text; namespace FabApprovalWorkerService.Services; public interface ITrainingService { Task> GetTrainingIdsForECN(int ecnNumber); Task DeleteTrainingAssignment(int trainingId); Task> GetTrainingAssignmentIdsForTraining(int trainingId); Task DeleteDocAssignment(int trainingAssignmentId); } public class TrainingService : ITrainingService { private ILogger _logger; private IDalService _dalService; public TrainingService(ILogger logger, IDalService dalService) { _logger = logger ?? throw new ArgumentNullException("ILogger not injected"); _dalService = dalService ?? throw new ArgumentNullException("IDalService not injected"); } public async Task DeleteDocAssignment(int trainingAssignmentId) { if (trainingAssignmentId <= 0) throw new ArgumentException($"Invalid training assignment id: {trainingAssignmentId}"); try { _logger.LogInformation($"Attempting to delete training doc assignments for training assignment {trainingAssignmentId}"); StringBuilder queryBuilder = new(); queryBuilder.Append($"update TrainingDocAcks set Deleted = 1, "); queryBuilder.Append($"DeletedDate = {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} "); queryBuilder.Append($"where TrainingAssignmentID = {trainingAssignmentId} and Reviewed = 0;"); await _dalService.ExecuteAsync(queryBuilder.ToString()); } catch (Exception ex) { StringBuilder errMsgBuilder = new(); errMsgBuilder.Append($"An exception occurred when attempting to delete training doc assignment "); errMsgBuilder.Append($"{trainingAssignmentId}. Exception: {ex.Message}"); _logger.LogError(errMsgBuilder.ToString()); throw; } } public async Task DeleteTrainingAssignment(int trainingId) { if (trainingId <= 0) throw new ArgumentException($"Invalid training id: {trainingId}"); try { _logger.LogInformation($"Attempting to delete training assignment {trainingId}"); StringBuilder queryBuilder = new(); queryBuilder.Append($"update TrainingAssignments set Deleted = 1, "); queryBuilder.Append($"DeletedDate = {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} "); queryBuilder.Append($"where TrainingID = {trainingId} and status = 0;"); await _dalService.ExecuteAsync(queryBuilder.ToString()); } catch (Exception ex) { StringBuilder errMsgBuilder = new(); errMsgBuilder.Append($"An exception occurred when attempting to delete training assignment "); errMsgBuilder.Append($"{trainingId}. Exception: {ex.Message}"); _logger.LogError(errMsgBuilder.ToString()); throw; } } public async Task> GetTrainingAssignmentIdsForTraining(int trainingId) { if (trainingId <= 0) throw new ArgumentException($"Invalid trainingID: {trainingId}"); try { _logger.LogInformation($"Attempting to get training assignment ids for training id {trainingId}"); string sql = $"select ID from TrainingAssignments where TrainingID = {trainingId};"; return await _dalService.QueryAsync(sql); } catch (Exception ex) { StringBuilder errMsgBuilder = new(); errMsgBuilder.Append($"An exception occurred when attempting to get training assignment ids "); errMsgBuilder.Append($"for training id {trainingId}. Exception: {ex.Message}"); _logger.LogError(errMsgBuilder.ToString()); throw; } } public async Task> GetTrainingIdsForECN(int ecnNumber) { if (ecnNumber <= 0) throw new ArgumentException($"Invalid ecnNumber: {ecnNumber}"); try { _logger.LogInformation($"Attempting to get training ids for ecn {ecnNumber}"); string sql = $"select TrainingID from Training where ECN = {ecnNumber};"; return await _dalService.QueryAsync(sql); } catch (Exception ex) { StringBuilder errMsgBuilder = new(); errMsgBuilder.Append($"An exception occurred when attempting to get training ids "); errMsgBuilder.Append($"for ECN {ecnNumber}. Exception: {ex.Message}"); _logger.LogError(errMsgBuilder.ToString()); throw; } } }