예제 #1
0
        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);
            }
        }