private IEnumerable <IntegrationLog> CreateIntegrationLog(KeyEventWrapper originalKeyEvents, KeyEventResponse response) { try { IList <IntegrationLog> logs = new List <IntegrationLog>(); foreach (var item in originalKeyEvents.KeyEvents) { try { IntegrationLog _log = new IntegrationLog(); _log.DateTimeSent = response.RequestSentDateTime; _log.IsSuccessFlg = response.IsSuccessful; _log.KeyEventId = item.KeyEventId; _log.RequestJsonDatainString = response.RequestJsonString; _log.ResponseDescription = response.ResponseMessage; _log.ResponseReceivedinSecs = response.ResponseTimeinSecs; logs.Add(_log); } catch (Exception ex) { LogWrapper.Log($"Error in generating Integration log for KeyeventId {item.KeyEventId}. Error is {ex.Message}. Skipping to next one", $"Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Error); } } return(logs as IEnumerable <IntegrationLog>); } catch (Exception ex) { LogWrapper.Log($"Error in generating Integration log. Error is {ex.Message}", $"Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Error); return(null); } }
private KeyEventWrapper GetRequestObject() { KeyEventWrapper kw = new KeyEventWrapper(); KeyEvent key1 = new KeyEvent(); key1.KeyEventId = "9e9ba8e3-7628-4b9e-8eab-33556b5a9b4f"; key1.MachineId = "Showroom"; key1.StockNumber = "39742A"; key1.EmployeeId = "342"; key1.EventType = "out"; key1.TimeStamp = DateTime.UtcNow; kw.KeyEvents.Add(key1); KeyEvent key2 = new KeyEvent(); key2.KeyEventId = "17feb98c-6ba8-415a-b9ae-f00b4066040d"; key2.MachineId = "Showroom"; key2.StockNumber = "56275"; key2.EmployeeId = "342"; key2.EventType = "in"; key2.TimeStamp = DateTime.UtcNow; kw.KeyEvents.Add(key2); kw.DealerId = "ACC01"; kw.Token = "Fe86g3jk2"; return(kw); }
private KeyEventWrapper MapDataSetToKeyEventWrapper(DataSet recordsDbSet) { try { KeyEventWrapper wrapperObj = null; for (int i = 0; i < recordsDbSet?.Tables?[0]?.Rows?.Count; i++) { try { KeyEvent key = new KeyEvent(); key.KeyEventId = recordsDbSet?.Tables[0]?.Rows?[i].ItemArray[0].ToString(); key.MachineId = recordsDbSet?.Tables[0]?.Rows?[i].ItemArray[1].ToString(); key.StockNumber = recordsDbSet?.Tables[0]?.Rows?[i].ItemArray[2].ToString(); key.EmployeeId = recordsDbSet?.Tables[0]?.Rows?[i].ItemArray[3].ToString(); key.EventType = recordsDbSet?.Tables[0]?.Rows?[i].ItemArray[4].ToString(); key.TimeStamp = Convert.ToDateTime(recordsDbSet?.Tables[0]?.Rows?[i].ItemArray[5].ToString()); if (wrapperObj == null) { wrapperObj = new KeyEventWrapper(); } if (wrapperObj.KeyEvents == null) { wrapperObj.KeyEvents = new List <KeyEvent>(); } wrapperObj.KeyEvents.Add(key); } catch (Exception ex) { LogWrapper.Log($"Error in constructing keyevent from dataset at row count {i}. Skipping to next row. Error message is {ex.Message}", $" Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Error); } } return(wrapperObj); } catch (Exception ex) { LogWrapper.Log($"Error in constructing key events from recordset. Error message is {ex.Message}", $" Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Error); return(null); } }
/// <summary> /// Main process /// </summary> /// <returns></returns> public async Task Run() { try { LogWrapper.Log("Enter DataExtractService Run method", $"Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Information); //fetch all key events and retain it for later processing var originalKeyEvents = await _dal.GetKeyEventsToProcessAsync(); //group unique keyevents for the service call //if there are more than one instance have the same key, then only one instance is considered in this grou. var grpedDictionary = originalKeyEvents.GetKeyEventGrp(); //prepare keyevent wrapper. this will send only unique key events. KeyEventWrapper groupdWrapper = new KeyEventWrapper(); groupdWrapper.DealerId = "ACC01"; groupdWrapper.Token = "Fe86g3jk2"; var keyEventsToSend = new List <KeyEvent>(); foreach (KeyValuePair <string, KeyEvent> kvp in grpedDictionary) { keyEventsToSend.Add(kvp.Value); } groupdWrapper.KeyEvents = keyEventsToSend; //var inputObj = GetRequestObject(); LogWrapper.Log($"Calling web service with input object : {originalKeyEvents}", $"Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Information); var response = await _serviceProxy.CallServicePostAsync <KeyEventWrapper, KeyEventResponse>(groupdWrapper); LogWrapper.Log($"Response received from web service : {response?.ToString()}", $"Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Information); if (response != null && response.Item1 != null) { response.Item1.RequestJsonString = response.Item2; response.Item1.RequestSentDateTime = response.Item3; response.Item1.ResponseTimeinSecs = response.Item4; response.Item1.IsSuccessful = response.Item5; //stuff response onto all the key events as per the requirement to log same response on the original list of key events. IEnumerable <IntegrationLog> log = CreateIntegrationLog(originalKeyEvents, response.Item1); //log the response details var _dalResponse = await _dal.LogKeyEventResponseAsync(log); if (_dalResponse == 1) { LogWrapper.Log("Logged Service call details successfully to the database", $"Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Information); } else { LogWrapper.Log("Failed to Log Service call details to the database", $"Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Error); } } LogWrapper.Log("Exit DataExtractService Run method", $"Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Information); } catch (Exception ex) { LogWrapper.Log($"Run method threw an exception and exited the process. Error message : {ex.Message} ", $"Thread id : {System.Threading.Thread.CurrentThread.ManagedThreadId}", 1, System.Diagnostics.TraceEventType.Error); } }