void ExchangeClientAck(MessageAck messageAck) { try { LogManager.WriteLog("MessageID " + messageAck.MessageID + " MessageAckResult = " + messageAck.ACK, LogManager.enumLogLevel.Info); lock (HoldingObject) { var memoryList = MessageStore.Where(message => message.messageId == messageAck.MessageID); LogManager.WriteLog("Memory List" + MessageStore.Count, LogManager.enumLogLevel.Info); //below is for AFT var aftMemoryList = AFTMessages.Where(aftmessage => aftmessage.MessageID == messageAck.MessageID); LogManager.WriteLog("AFT Memory List" + AFTMessages.Count, LogManager.enumLogLevel.Info); if (memoryList != null) { foreach (var store in memoryList) { if (store != null) { LogManager.WriteLog("store.GamePosition = " + store.GamePosition.ToString(), LogManager.enumLogLevel.Info); if (Int32.Parse(store.GamePosition) == 0) { if (messageAck.ACK) { if (store.Reason == NetworkService.MessageStore.ReasonType.AAMS) { //if (store.ExportHistoryID != 0) //{ // var _proxy = GetWebService(); // _proxy.UpdateBarPositionCentralStatusBySiteID(store.ExportHistoryID); //} DBBuilder.UpdateAAMSStatus(store.badId, store.datapakCurrentState.ToString(), "", store.entityType, store.installationNo, store.updateDate); LogManager.WriteLog( "Message ID: " + messageAck.MessageID + " --- ACK Status was True", LogManager.enumLogLevel.Info); } else { LogManager.WriteLog( "This enable/disable was called due to enterprise connectivity.", LogManager.enumLogLevel.Info); dBarPositions = new Dictionary <string, string> { { "BarPosName", store.barpositionName }, { "isMachine", "true" } }; LogManager.WriteLog( "datapack number and Message ID : " + store.installationNo + " " + store.messageId, LogManager.enumLogLevel.Info); LogManager.WriteLog("Current machine Status " + store.datapakCurrentState, LogManager.enumLogLevel.Info); if (store.datapakCurrentState == 1) { dBarPositions.Add("Status", "1"); } else { dBarPositions.Add("Status", "0"); } LogManager.WriteLog("Enabled Machine " + dBarPositions["isMachine"], LogManager.enumLogLevel.Info); LogManager.WriteLog("Enabled Position " + dBarPositions["BarPosName"], LogManager.enumLogLevel.Info); LogManager.WriteLog("Set Status " + dBarPositions["Status"], LogManager.enumLogLevel.Info); var bUpdatedResult = DBBuilder.UpdateBarPosition(dBarPositions); if (bUpdatedResult) { LogManager.WriteLog("Updated Bar Position status", LogManager.enumLogLevel.Info); lFaults = new List <string> { store.installationNo.ToString(), "300" }; if (store.datapakCurrentState == 1) { lFaults.Add("Machine Auto Enabled"); } else { lFaults.Add("Machine Auto Disabled"); } lFaults.Add("true"); if (store.datapakCurrentState == 1) { lFaults.Add("101"); } else { lFaults.Add("100"); } dFaultEvents = GetFaults(lFaults); DBBuilder.CreateFaultEvents(dFaultEvents); if (store.datapakCurrentState == 1) { LogManager.WriteLog("Machine Auto Enabled - fault event created", LogManager.enumLogLevel.Info); } else { LogManager.WriteLog("Machine Auto Disabled - fault event created", LogManager.enumLogLevel.Info); } } } } else { LogManager.WriteLog( "Message ID: " + messageAck.MessageID + " --- ACK Status was Failure", LogManager.enumLogLevel.Info); } } else { LogManager.WriteLog(" Before Updating Store Nack or ack. store ", LogManager.enumLogLevel.Info); store.GameACKorNACK = messageAck.ACK; LogManager.WriteLog( " Update GameAcK or Nack to Message ID: " + messageAck.MessageID + "Game Position = " + store.GamePosition + " Installation No=" + store.installationNo, LogManager.enumLogLevel.Info); } } else { LogManager.WriteLog("Store value is null", LogManager.enumLogLevel.Info); } } } if (aftMemoryList != null) { LogManager.WriteLog("Inside aftmemory list check", LogManager.enumLogLevel.Info); foreach (var store in aftMemoryList) { LogManager.WriteLog("Ack status " + messageAck.ACK, LogManager.enumLogLevel.Info); if (messageAck.ACK) { DBBuilder.UpdateAFTPolling(store.Installation_No); LogManager.WriteLog("AFT enabled/disabled for the installation no :- " + store.Installation_No.ToString(), LogManager.enumLogLevel.Info); } else { LogManager.WriteLog("Message ID: " + messageAck.MessageID + " --- ACK Status was Failure for AFT Enable/Disable", LogManager.enumLogLevel.Info); } } } else { LogManager.WriteLog(" MessageId " + messageAck.MessageID + "Could not be found", LogManager.enumLogLevel.Info); } LogManager.WriteLog("Removing Messages. MessageAck = " + messageAck.MessageID, LogManager.enumLogLevel.Info); MessageStore.RemoveAll(x => x.messageId == messageAck.MessageID); AFTMessages.RemoveAll(x => x.MessageID == messageAck.MessageID); LogManager.WriteLog("Removed Sucessfully. MessageAck = " + messageAck.MessageID, LogManager.enumLogLevel.Info); } } catch (Exception ex) { ExceptionManager.Publish(ex); } }