/// <summary> /// Log /// </summary> /// <param name="apiLogItem"></param> /// <returns></returns> public async Task Log(ApiLogItem apiLogItem) { try { _logger.LogInformation(apiLogItem.RequestBody); await _db.ApiLogItems.AddAsync(apiLogItem); await _db.SaveChangesAsync(); } catch (Exception ex) { _logger.LogError(ex.Message + " : " + ex.StackTrace); } }
/// <summary> /// Post Data /// </summary> /// <param name="postDataContent"></param> /// <returns></returns> public async Task <string> PostData(Models.PostDataContent postDataContent) { try { int TimeOutInMsSecs = _config.GetValue <int>("DefaultTimeOutInMiliSeconds"); int JobDelay = _config.GetValue <int>("HangFireConfig:JobDelay"); var idData = Guid.NewGuid().ToString(); _context.DataToPosts.Add(new Models.DB.DataToPost() { ID = idData, Content = postDataContent.PostData, RequestDate = DateTime.Now }); await _context.SaveChangesAsync(); List <string> listJobIds = new List <string>(); var eventClient = _context.ClientEvents .Include(x => x.ClientEventWebhooks) .Include(x => x.Event) .FirstOrDefault(x => x.Event.Code == postDataContent.EventCode && x.Client.Code == postDataContent.ClientCode && x.Enable); if (eventClient != null) { //Get IDS var ID = ""; var IDExtra = ""; if (!string.IsNullOrEmpty(eventClient.Event.RegexID)) { ID = SearchContentUtil.SearchContent(postDataContent.PostData, eventClient.Event.RegexID); } if (!string.IsNullOrEmpty(eventClient.Event.RegexIDExtra)) { IDExtra = SearchContentUtil.SearchContent(postDataContent.PostData, eventClient.Event.RegexIDExtra); } try { if (eventClient.ClientEventWebhooks != null && eventClient.ClientEventWebhooks.Any()) { foreach (var item in eventClient.ClientEventWebhooks) { if (postDataContent.DelayMode == Models.DelayMode.Instant) { listJobIds.Add(EnqueueRequest(postDataContent.ClientCode, postDataContent.EventCode, item.PostUrl, postDataContent.PostData, postDataContent.ContentType, TimeOutInMsSecs, ID, IDExtra, item.HeaderAuthorizationValue, item.ExpectedContentResult, JobDelay, postDataContent.ParentJobID)); } else { var jobId = new BackgroundJobClient().Schedule <NotificationService>(x => x.EnqueueRequest(postDataContent.ClientCode, postDataContent.EventCode, item.PostUrl, postDataContent.PostData, postDataContent.ContentType, TimeOutInMsSecs, ID, IDExtra, item.HeaderAuthorizationValue, item.ExpectedContentResult, JobDelay, postDataContent.ParentJobID), TimeSpan.FromSeconds(postDataContent.DelayValue.Value)); listJobIds.Add(jobId); } _logger.LogInformation(postDataContent.ToString()); } if (listJobIds.Count() > 0 && !string.IsNullOrEmpty(postDataContent.CustomJobID)) { await _context.CustomJobIDs.AddAsync(new Models.DB.CustomJobID { ExternalJobID = postDataContent.CustomJobID, InternalJobID = listJobIds.FirstOrDefault() }); await _context.SaveChangesAsync(); } return(eventClient.ContentReponseOk); } else { _logger.LogInformation("Not Webhooks Configured"); return(eventClient.ContentReponseError); } } catch (Exception exevent) { _logger.LogError(exevent.Message); throw new Exception(eventClient.ContentReponseError); } } else { _logger.LogError("Not Webhooks Configured"); return("[error][configuration not found]"); } } catch (Exception ex) { _logger.LogError(ex.Message + " : " + ex.StackTrace); return("[error][" + ex.Message + " : " + ex.StackTrace + "]"); } }