public async Task <AddEncompassEventResponse> AddEventToDbAsync(AddEncompassEventRequest request) { var response = ValidateDbConfigurationForEvent(request); if (!response.EncompassEventResponse.IsSuccessBit) { return(response.EncompassEventResponse); } var enqueueingEvent = new EnqueueEncompassEventEntity(); var currentOffsetDateTime = DateTimeOffset.Now; enqueueingEvent.WebhookEvent.SourceTypeId = response.EncompassSource.Id; enqueueingEvent.WebhookEvent.EventDtTm = currentOffsetDateTime; enqueueingEvent.EventDetail.EventId = request.EncompassEvent.EventId; enqueueingEvent.EventDetail.EventTypeId = response.EventType.Id; enqueueingEvent.EventDetail.EventUtcDtTm = request.EncompassEvent.EventDtTmUtc.ToUniversalTime(); enqueueingEvent.EventDetail.InstanceId = request.EncompassEvent.Meta.InstanceId; enqueueingEvent.EventDetail.MsgTxt = JsonConvert.SerializeObject(request.EncompassEvent); enqueueingEvent.EventDetail.ResourceId = request.EncompassEvent.Meta.ResourceId; enqueueingEvent.EventDetail.ResourceTypeId = response.ResourceType.Id; enqueueingEvent.EventDetail.UserId = request.EncompassEvent.Meta.UserId; enqueueingEvent.EventQueue.CorrelationId = Guid.NewGuid(); enqueueingEvent.EventQueue.EnqueueDtTm = currentOffsetDateTime; enqueueingEvent.EventQueue.PickupDtTm = null; enqueueingEvent.EventQueue.ErrorMsgTxt = string.Empty; enqueueingEvent.EventQueue.ThrottleId = null; if (request.EncompassEvent.Meta.ResourceType.Equals(EncompassResourceTypeEnum.Loan.ToString(), StringComparison.InvariantCultureIgnoreCase)) { enqueueingEvent.EventQueue.StatusId = response.EventStatusNotStart.Id; enqueueingEvent.EventQueue.FinishDtTm = null; } else { enqueueingEvent.EventQueue.StatusId = response.EventStatusNotSupport.Id; enqueueingEvent.EventQueue.FinishDtTm = currentOffsetDateTime; } var workerId = await GetWorkerIdForEvent(request.EncompassEvent.Meta.ResourceId); enqueueingEvent.EventQueue.WorkerId = workerId; response.EncompassEventResponse.EventId = await _eventRepository.AddEventAsync(enqueueingEvent).ConfigureAwait(false); return(response.EncompassEventResponse); }
private EncompassEventDbConfigValidationResult ValidateDbConfigurationForEvent(AddEncompassEventRequest request) { var response = new EncompassEventDbConfigValidationResult(); var eventSources = request.EventSource; var eventStatuses = request.EventStatus; var eventTypes = request.EventType; var resourceTypes = request.EventResourceType; response.EncompassSource = WebhookDictionaryDataHelper.Get(eventSources, EventSourceEnum.Encompass.ToString()); if (!response.EncompassSource.IsValidKeyBit) { response.EncompassEventResponse.ErrorMsg += string.Format(ConstantString.EnumValueNotFound, nameof(request.EventSource), EventSourceEnum.Encompass.ToString()); } response.EventStatusNotStart = WebhookDictionaryDataHelper.Get(eventStatuses, EventStatusEnum.InQueue.ToString()); if (!response.EventStatusNotStart.IsValidKeyBit) { response.EncompassEventResponse.ErrorMsg += string.Format(ConstantString.EnumValueNotFound, nameof(request.EventStatus), EventStatusEnum.InQueue.ToString()); } response.EventStatusNotSupport = WebhookDictionaryDataHelper.Get(eventStatuses, EventStatusEnum.NotSupported.ToString()); if (!response.EventStatusNotSupport.IsValidKeyBit) { response.EncompassEventResponse.ErrorMsg += string.Format(ConstantString.EnumValueNotFound, nameof(request.EventStatus), EventStatusEnum.NotSupported.ToString()); } response.EventType = WebhookDictionaryDataHelper.Get(eventTypes, request.EncompassEvent.EventType); if (!response.EventType.IsValidKeyBit) { response.EncompassEventResponse.ErrorMsg += string.Format(ConstantString.EnumValueNotFound, nameof(request.EventType), request.EncompassEvent.EventType); } response.ResourceType = WebhookDictionaryDataHelper.Get(resourceTypes, request.EncompassEvent.Meta.ResourceType); if (!response.ResourceType.IsValidKeyBit) { response.EncompassEventResponse.ErrorMsg += string.Format(ConstantString.EnumValueNotFound, nameof(request.EventResourceType), request.EncompassEvent.Meta.ResourceType); } if (!string.IsNullOrEmpty(response.EncompassEventResponse.ErrorMsg)) { response.EncompassEventResponse.IsSuccessBit = false; } return(response); }