/// <summary> /// Create Acknowledgements Queue /// </summary> /// <param name="acknowledgementsQueue"></param> /// <returns></returns> public async Task CreateAcknowledgementsQueue(AcknowledgementsQueue acknowledgementsQueue) { DateTime dateCreated = DateTime.UtcNow; acknowledgementsQueue.DateCreated = dateCreated; await dbConnection.AcknowledgementsQueue.AddAsync(acknowledgementsQueue); }
/// <summary> /// Commit Inbound Message /// </summary> /// <param name="messageQueue"></param> /// <returns></returns> public async Task <ResponseModel <MessageQueue> > CommitInboundMessage(MessageQueue messageQueue, ConnectionStrings connectionStrings) { ResponseModel <MessageQueue> returnResponse = new ResponseModel <MessageQueue>(); try { _loggingManagementDataService.OpenConnection(connectionStrings.PrimaryDatabaseConnectionString); _loggingManagementDataService.BeginTransaction((int)IsolationLevel.ReadCommitted); MessagesSent existingMessageSent = await _loggingManagementDataService.GetMessageSent(messageQueue.TransactionQueueId, messageQueue.ExchangeName, messageQueue.TransactionCode); if (messageQueue.QueueName != string.Empty && messageQueue.QueueName != null) { MessagesReceived existingMessageReceived = await _loggingManagementDataService.GetMessageReceived(messageQueue.TransactionQueueId, messageQueue.ExchangeName, messageQueue.TransactionCode, messageQueue.QueueName); if (existingMessageReceived != null) { returnResponse.ReturnStatus = true; return(returnResponse); } } if (existingMessageSent == null) { MessagesSent messageSent = new MessagesSent(); messageSent.ExchangeName = messageQueue.ExchangeName; messageSent.SenderTransactionQueueId = messageQueue.TransactionQueueId; messageSent.TransactionCode = messageQueue.TransactionCode; messageSent.Payload = messageQueue.Payload; if (messageSent.TransactionCode == MessageQueueExchanges.ProductUpdated) { messageSent.AcknowledgementsRequired = MessageExchangeFanouts.ProductUpdated; messageSent.AcknowledgementsReceived = 0; } else if (messageSent.TransactionCode == MessageQueueExchanges.PurchaseOrderSubmitted) { messageSent.AcknowledgementsRequired = MessageExchangeFanouts.PurchaseOrderSubmitted; messageSent.AcknowledgementsReceived = 0; } else if (messageSent.TransactionCode == MessageQueueExchanges.SalesOrderSubmitted) { messageSent.AcknowledgementsRequired = MessageExchangeFanouts.SalesOrderSubmitted; messageSent.AcknowledgementsReceived = 0; } else if (messageSent.TransactionCode == MessageQueueExchanges.InventoryReceived) { messageSent.AcknowledgementsRequired = MessageExchangeFanouts.InventoryReceived; messageSent.AcknowledgementsReceived = 0; } else if (messageSent.TransactionCode == MessageQueueExchanges.InventoryShipped) { messageSent.AcknowledgementsRequired = MessageExchangeFanouts.InventoryShipped; messageSent.AcknowledgementsReceived = 0; } if (messageQueue.QueueName != string.Empty && messageQueue.QueueName != null) { existingMessageSent.AcknowledgementsReceived = existingMessageSent.AcknowledgementsReceived + 1; } await _loggingManagementDataService.CreateMessagesSent(messageSent); } if (messageQueue.QueueName != string.Empty && messageQueue.QueueName != null) { if (existingMessageSent != null) { existingMessageSent.AcknowledgementsReceived = existingMessageSent.AcknowledgementsReceived + 1; await _loggingManagementDataService.UpdateMessagesSent(existingMessageSent); } MessagesReceived messageReceived = new MessagesReceived(); messageReceived.ExchangeName = messageQueue.ExchangeName; messageReceived.SenderTransactionQueueId = messageQueue.TransactionQueueId; messageReceived.TransactionCode = messageQueue.TransactionCode; messageReceived.Payload = messageQueue.Payload; messageReceived.QueueName = messageQueue.QueueName; await _loggingManagementDataService.CreateMessagesReceived(messageReceived); if (existingMessageSent.AcknowledgementsReceived == existingMessageSent.AcknowledgementsRequired) { AcknowledgementsQueue acknowledgementsQueue = new AcknowledgementsQueue(); acknowledgementsQueue.ExchangeName = messageQueue.ExchangeName; acknowledgementsQueue.SenderTransactionQueueId = messageQueue.TransactionQueueId; acknowledgementsQueue.TransactionCode = messageQueue.TransactionCode; if (acknowledgementsQueue.TransactionCode == MessageQueueExchanges.ProductUpdated) { acknowledgementsQueue.AcknowledgementQueue = MessageQueueEndpoints.InventoryQueue; } else if (acknowledgementsQueue.TransactionCode == MessageQueueExchanges.PurchaseOrderSubmitted) { acknowledgementsQueue.AcknowledgementQueue = MessageQueueEndpoints.PurchaseOrderQueue; } else if (acknowledgementsQueue.TransactionCode == MessageQueueExchanges.SalesOrderSubmitted) { acknowledgementsQueue.AcknowledgementQueue = MessageQueueEndpoints.SalesOrderQueue; } else if (acknowledgementsQueue.TransactionCode == MessageQueueExchanges.InventoryReceived) { acknowledgementsQueue.AcknowledgementQueue = MessageQueueEndpoints.InventoryQueue; } else if (acknowledgementsQueue.TransactionCode == MessageQueueExchanges.InventoryShipped) { acknowledgementsQueue.AcknowledgementQueue = MessageQueueEndpoints.InventoryQueue; } await _loggingManagementDataService.CreateAcknowledgementsQueue(acknowledgementsQueue); } } await _loggingManagementDataService.UpdateDatabase(); _loggingManagementDataService.CommitTransaction(); returnResponse.ReturnStatus = true; } catch (Exception ex) { _loggingManagementDataService.RollbackTransaction(); returnResponse.ReturnStatus = false; returnResponse.ReturnMessage.Add(ex.Message); } finally { _loggingManagementDataService.CloseConnection(); } returnResponse.Entity = messageQueue; return(returnResponse); }
/// <summary> /// Delete Acknowledgements Queue Item /// </summary> /// <param name="acknowledgementsQueueId"></param> /// <returns></returns> public async Task DeleteAcknowledgementsQueue(int acknowledgementsQueueId) { AcknowledgementsQueue acknowledgementsQueue = await dbConnection.AcknowledgementsQueue.Where(x => x.AcknowledgementsQueueId == acknowledgementsQueueId).FirstOrDefaultAsync(); dbConnection.AcknowledgementsQueue.Remove(acknowledgementsQueue); }