private async Task PublishStudentEvents(List <StudentEvent> studentEvents, List <MessageType> messageTypes, int jobHistoryID) { foreach (var studentEvent in studentEvents) { var errorMessage = ""; var success = false; try { var eventName = messageTypes.FirstOrDefault(e => e.MessageTypeId == studentEvent.MessageTypeId)?.Name ?? string.Empty; _logger.LogInformation($"Publish {eventName} Event, UserId: {studentEvent.UserId}"); _integrationEventComponent.PublishStudentEvent(studentEvent, eventName); success = true; } catch (System.Exception ex) { _logger.LogError(ex, "PublishStudentEvent({studentEvent})", studentEvent.ToJsonString()); await _jobsRepository.AddJobRetryLog(jobHistoryID, studentEvent.ToJsonString()); errorMessage = ex.Message; } await _jobsRepository.AddJobLog(jobHistoryID, studentEvent.ToJsonString(), success, errorMessage); } }