//public Guid SubmitDelivery(DeliveryCo.Business.Entities.DeliveryInfo pDeliveryInfo) //{ // using(TransactionScope lScope = new TransactionScope()) // using(DeliveryDataModelContainer lContainer = new DeliveryDataModelContainer()) // { // pDeliveryInfo.DeliveryIdentifier = Guid.NewGuid(); // pDeliveryInfo.Status = 0; // lContainer.DeliveryInfoes.AddObject(pDeliveryInfo); // lContainer.SaveChanges(); // ThreadPool.QueueUserWorkItem(new WaitCallback((pObj) => ScheduleDelivery(pDeliveryInfo))); // lScope.Complete(); // } // return pDeliveryInfo.DeliveryIdentifier; //} public void SubmitDelivery(Message message) { //Specify the binding to be used for the client. NetMsmqBinding binding = new NetMsmqBinding(NetMsmqSecurityMode.None); //Specify the address to be used for the client. EndpointAddress address = new EndpointAddress("net.msmq://localhost/private/PublisherMessageQueue"); PublisherServiceClient lClient = new PublisherServiceClient(binding, address); using (TransactionScope lScope = new TransactionScope()) using (DeliveryDataModelContainer lContainer = new DeliveryDataModelContainer()) { DeliveryMessage mDeliveryMessage = message as DeliveryMessage; mDeliveryMessage.DeliveryIdentifier = Guid.NewGuid(); mDeliveryMessage.Status = 0; mDeliveryMessage.Topic = "delivery"; DeliveryInfo pDeliveryInfo = new DeliveryInfo() { OrderNumber = mDeliveryMessage.OrderNumber, SourceAddress = mDeliveryMessage.SourceAddress, DestinationAddress = mDeliveryMessage.DestinationAddress, DeliveryNotificationAddress = "net.msmq://localhost/private/DeliveryNotificationQueue" }; lContainer.DeliveryInfoes.AddObject(pDeliveryInfo); lContainer.SaveChanges(); //lClient.Publish(mDeliveryMessage); //Console.WriteLine("Delivery submitted and planing deliver to " + pDeliveryInfo.DestinationAddress); ThreadPool.QueueUserWorkItem(new WaitCallback((pObj) => ScheduleDelivery(pDeliveryInfo, mDeliveryMessage.DeliveryIdentifier, lClient))); lScope.Complete(); } }
public async Task <IActionResult> SendMessage(string clientId, string message) { var deliveryservice = new DeliveryMessage(clientId, message); await deliveryservice.SendMessageAsync(clientId, message, default(CancellationToken)); return(Ok()); }
public void Index_Post_UnCorrectNumber_ShouldReturn_DeliveryMessage() { // Arrange InvoiceDto invoiceDto = null; mockInvoicesService.Setup(s => s.SearchByNumber("")).ReturnsAsync(invoiceDto); MainController controller = new MainController(new DeliveryMessage(), mockPostOperatorService.Object, mockInvoicesService.Object); DeliveryMessage deliveryMessage = null; try { // Act result = controller.Index(new MainIndexViewModel { Number = "" }) as ViewResult; deliveryMessage = (DeliveryMessage)result.Model; } catch (Exception ex) { errorMessage = ex.Message + " | " + ex.StackTrace; } // Assert Assert.IsTrue(result.ViewName == "DeliveryMessage", errorMessage); Assert.IsNotNull(deliveryMessage, errorMessage); }
//[IPAuthentication] public HttpResponseMessage SendReport(HttpRequestMessage request) { string strIncomingMessage = string.Empty; StreamReader MyStreamReader = new StreamReader(request.Content.ReadAsStreamAsync().Result); strIncomingMessage = MyStreamReader.ReadToEnd(); dynamic result = JValue.Parse(strIncomingMessage); dynamic reportTasks = JArray.Parse(result.rpts.ToString()) as JArray; dynamic failedReportTask; dynamic successReportTask; DeliveryMessage deliveryMessage = new DeliveryMessage(); deliveryMessage.FailedMobile = new List <string>(); deliveryMessage.SuccessMobile = new List <string>(); LogController <ServiceLogs> .LogInFile(ServiceLogs.WebAPI, string.Format("strIncomingMessage : {0}", strIncomingMessage)); deliveryMessage.Agent = (int)SmsSenderAgentReference.GSMGateway; LogController <ServiceLogs> .LogInFile(ServiceLogs.WebAPI, string.Format("reportTasks[0].failed : {0}", reportTasks[0].failed)); if (Helper.GetInt(reportTasks[0].failed) > 0) { LogController <ServiceLogs> .LogInFile(ServiceLogs.WebAPI, string.Format("reportTasks[0].failed is > 0")); failedReportTask = JArray.Parse(reportTasks[0].fdr.ToString()) as JArray; LogController <ServiceLogs> .LogInFile(ServiceLogs.WebAPI, string.Format("failedReportTask : {0}", failedReportTask)); foreach (dynamic failedTask in failedReportTask) { LogController <ServiceLogs> .LogInFile(ServiceLogs.WebAPI, string.Format("failedTask[1] : {0}", failedTask[1].ToString())); deliveryMessage.FailedMobile.Add(Helper.GetLocalMobileNumber(failedTask[1].ToString())); } } LogController <ServiceLogs> .LogInFile(ServiceLogs.WebAPI, string.Format("reportTasks[0].sent : {0}", reportTasks[0].sent)); if (Helper.GetInt(reportTasks[0].sent) > 0) { successReportTask = JArray.Parse(reportTasks[0].sdr.ToString()) as JArray; LogController <ServiceLogs> .LogInFile(ServiceLogs.WebAPI, string.Format("successReportTask : {0}", successReportTask)); foreach (dynamic successTask in successReportTask) { LogController <ServiceLogs> .LogInFile(ServiceLogs.WebAPI, string.Format("successTask[1] : {0}", successTask[1].ToString())); deliveryMessage.SuccessMobile.Add(Helper.GetLocalMobileNumber(successTask[1].ToString())); } } LogController <ServiceLogs> .LogInFile(ServiceLogs.WebAPI, string.Format("batchid : {0}", reportTasks[0].tid.ToString())); deliveryMessage.BatchId = reportTasks[0].tid.ToString(); ManageQueue.SendMessage(Queues.SaveGsmDelivery, deliveryMessage, string.Format("Agent:{0}=>SuccessMobile:{1}-FailedMobile:{2}-BatchId:{3}", deliveryMessage.Agent, deliveryMessage.SuccessMobile.Count, deliveryMessage.FailedMobile.Count, deliveryMessage.BatchId)); return(Request.CreateResponse(HttpStatusCode.OK)); }
///// New 8-3-2019 public static string GetDeliveryURL(Guid pNumber) { Common.PrivateNumber privateNumber = new Common.PrivateNumber(); DeliveryMessage deliveryMessage = new DeliveryMessage(); privateNumber = Facade.PrivateNumber.LoadNumber(pNumber); deliveryMessage.DeliveryRelayGuid = privateNumber.DeliveryTrafficRelayGuid; return(Facade.TrafficRelay.LoadUrl(deliveryMessage.DeliveryRelayGuid).Url); }
public void Visit(IVisitable pVisitable) { if (pVisitable is DeliveryInfo) { DeliveryInfo deliveryInfo = pVisitable as DeliveryInfo; Result = new DeliveryMessage() { }; } }
private void RelayStatus(List <Message> messages) { string response = string.Empty; PrivateNumber privateNumber = new PrivateNumber(); foreach (Message msg in messages) { response = string.Empty; deliveryMessage = new DeliveryMessage(); msg.Formatter = new BinaryMessageFormatter(); deliveryMessage = (DeliveryMessage)msg.Body; privateNumber = Arad.SMS.Gateway.Facade.PrivateNumber.LoadNumber(deliveryMessage.PrivateNumberGuid); deliveryMessage.DeliveryRelayGuid = privateNumber.DeliveryTrafficRelayGuid; LogController <ServiceLogs> .LogInFile(ServiceLogs.TrafficRelay, string.Format(@"On DeliveryRelay{5}BatchId : {0},{5}PrivateNumberGuid : {1},{5}DeliveryRelayGuid : {2},{5}Mobile :{3},{5}Status : {4},{5}", deliveryMessage.BatchId, deliveryMessage.PrivateNumberGuid, deliveryMessage.DeliveryRelayGuid, deliveryMessage.Mobile, deliveryMessage.Status, Environment.NewLine)); if (deliveryMessage.DeliveryRelayGuid == Guid.Empty) { deliveryMessage.DeliveryRelayGuid = Helper.GetGuid(Arad.SMS.Gateway.Facade.UserSetting.GetSettingValue(deliveryMessage.UserGuid, Arad.SMS.Gateway.Business.AccountSetting.DeliveryTrafficRelay)); } if (deliveryMessage.DeliveryRelayGuid != Guid.Empty) { TrafficRelay relay = Arad.SMS.Gateway.Facade.TrafficRelay.LoadUrl(deliveryMessage.DeliveryRelayGuid); if (!string.IsNullOrEmpty(relay.Url)) { relay.Url = Regex.Replace(relay.Url, "\\$batchid", deliveryMessage.BatchId, RegexOptions.IgnoreCase); relay.Url = Regex.Replace(relay.Url, "\\$mobile", deliveryMessage.Mobile, RegexOptions.IgnoreCase); relay.Url = Regex.Replace(relay.Url, "\\$status", deliveryMessage.Status.ToString(), RegexOptions.IgnoreCase); LogController <ServiceLogs> .LogInFile(ServiceLogs.TrafficRelay, string.Format("URL : {0}", relay.Url)); using (var wb = new WebClient()) { response = wb.DownloadString(relay.Url); } LogController <ServiceLogs> .LogInFile(ServiceLogs.TrafficRelay, string.Format(@"On ParseDeliveryMessage{0}Response : {1},{0}", Environment.NewLine, response)); } } } //Facade.OutboxNumber.GetDeliveryRelayInfo(lstDeliveryMessages.Where); }
public override bool OnMessage(IMessage message) { if (message.IsDeliveryMsg) { DeliveryMessage deliveryMessage = message as DeliveryMessage; if (deliveryMessage.receiverID == Uid) { return(true); } } return(base.OnMessage(message)); }
public async Task <IActionResult> Delivery(DeliveryMessage deliveryMessage) { string json = JsonConvert.SerializeObject(deliveryMessage); var message = new Message(Encoding.UTF8.GetBytes(json)); message.Label = deliveryMessage.GetType().ToString(); message.ContentType = "application/json"; message.CorrelationId = deliveryMessage.ShopLocation; await deliveryTopicClient.SendAsync(message); await deliveryTopicClient.CloseAsync(); return(Accepted()); }
public bool OnMessage(IMessage message) { if (message.IsDeliveryMsg) { DeliveryMessage deliveryMessage = message as DeliveryMessage; if (deliveryMessage.receiverID == NetID) { if (m_messageListener.OnMessage(deliveryMessage)) { return(true); } } } return(false); }
private void InsertDelivery() { List <int> deliveryStayInQueue = new List <int>(); deliveryStayInQueue.Add((int)DeliveryStatus.SentToItc); deliveryStayInQueue.Add((int)DeliveryStatus.ReceivedByItc); deliveryStayInQueue.Add((int)DeliveryStatus.Sent); foreach (BatchMessage batch in batchMessageList) { foreach (InProgressSms sms in batch.Receivers) { if (!sms.SaveDelivery) { continue; } deliveryMessage = new DeliveryMessage(); deliveryMessage.Agent = (int)batch.SmsSenderAgentReference; deliveryMessage.BatchId = sms.ReturnID; deliveryMessage.ReturnId = sms.ReturnID; deliveryMessage.Mobile = sms.RecipientNumber; deliveryMessage.Status = (int)sms.DeliveryStatus; deliveryMessage.Date = DateTime.Now.Date; deliveryMessage.Time = DateTime.Now.TimeOfDay; ManageQueue.SendMessage(saveDeliveryQueue, deliveryMessage, string.Format("Agent:{0}=>Mobile:{1}-ReturnId:{2}-Status:{3}", deliveryMessage.Agent, deliveryMessage.Mobile, deliveryMessage.ReturnId, deliveryMessage.Status)); } batch.Receivers.RemoveAll(sms => sms.SaveDelivery && (sms.DeliveryTryCount > 5 || !deliveryStayInQueue.Contains((int)sms.DeliveryStatus))); } foreach (BatchMessage batch in batchMessageList) { if (batch.Receivers.Count > 0) { foreach (InProgressSms sms in batch.Receivers) { sms.SaveDelivery = false; } ManageQueue.SendMessage(queueName, batch, string.Format("Id:{0}-batchGuid:{1}=>SenderId:{2}-ReceiverCount:{3}", batch.Id, batch.Guid, batch.SenderNumber, batch.Receivers.Count)); } ReceiveMessageFromQueue(batch.QueueMessageId); } }
public HttpResponseMessage GetDelivery([FromUri] GetDeliverySmsModel delivery) { DeliveryMessage deliveryMessage = new DeliveryMessage(); deliveryMessage.Agent = delivery.Agent; deliveryMessage.BatchId = delivery.ReturnId; deliveryMessage.ReturnId = delivery.ReturnId; deliveryMessage.CheckId = delivery.CheckId; deliveryMessage.Mobile = delivery.Mobile; deliveryMessage.Status = GetDeliveryStatus(delivery.Agent, Helper.GetInt(delivery.Status)); deliveryMessage.Date = DateTime.Now; deliveryMessage.Time = DateTime.Now.TimeOfDay; ManageQueue.SendMessage(Queues.SaveDelivery, deliveryMessage, string.Format("Agent:{0}=>Mobile:{1}-ReturnId:{2}-Status:{3}", delivery.Agent, delivery.Mobile, delivery.ReturnId, delivery.Status)); return(Request.CreateResponse(HttpStatusCode.OK)); }
private void SaveGsmDelivery(List <Message> messages) { try { DeliveryMessage deliveryMessage; foreach (Message msg in messages) { deliveryMessage = new DeliveryMessage(); msg.Formatter = new BinaryMessageFormatter(); deliveryMessage = (DeliveryMessage)msg.Body; deliveryMessage.MessageId = msg.Id; try { if (deliveryMessage.FailedMobile.Count > 0) { Arad.SMS.Gateway.Facade.OutboxNumber.UpdateGsmDeliveryStatus(DeliveryStatus.NotSent, deliveryMessage.FailedMobile, deliveryMessage.BatchId, deliveryMessage); } if (deliveryMessage.SuccessMobile.Count > 0) { Arad.SMS.Gateway.Facade.OutboxNumber.UpdateGsmDeliveryStatus(DeliveryStatus.SentAndReceivedbyPhone, deliveryMessage.SuccessMobile, deliveryMessage.BatchId, deliveryMessage); } if (deliveryMessage.FailedMobile.Count > 0 || deliveryMessage.SuccessMobile.Count > 0) { ManageQueue.SendMessage(queueName, deliveryMessage, string.Format("Agent:{0}=>SuccessMobile:{1}-FailedMobile:{2}-BatchId:{3}", deliveryMessage.Agent, deliveryMessage.SuccessMobile.Count, deliveryMessage.FailedMobile.Count, deliveryMessage.BatchId)); } ReceiveMessageFromQueue(msg.Id); } catch (Exception ex) { LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveDelivery, string.Format("On UpdateGsmDeliveryStatus Method : {0}*{1}", ex.Message, ex.StackTrace)); } } } catch (Exception ex) { LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveGsmDelivery, string.Format("On SaveDeliveryStatus : {0}*{1}", ex.Message, ex.StackTrace)); throw ex; } }
public bool OnMessage(IMessage message) { var itor = m_combatOwners.GetEnumerator(); while (itor.MoveNext()) { if (message.IsDeliveryMsg) { ICombatOwner combatOwner = itor.Current.Value; DeliveryMessage deliveryMessage = message as DeliveryMessage; if (deliveryMessage.receiverID == combatOwner.NetID) { if (combatOwner.OnMessage(deliveryMessage)) { return(true); } } } } return(false); }
public bool OnMessage(IMessage message) { var itor = m_players.GetEnumerator(); while (itor.MoveNext()) { if (message.IsDeliveryMsg) { IEntity entity = itor.Current.Value; DeliveryMessage deliveryMessage = message as DeliveryMessage; if (deliveryMessage.receiverID == entity.NetID) { if (entity.OnMessage(deliveryMessage)) { return(true); } } } } return(false); }
private void ScheduleDelivery(DeliveryInfo pDeliveryInfo, Guid pDeliveryIdentifier, PublisherServiceClient lClient) { Thread.Sleep(10000); Console.WriteLine("Order: " + pDeliveryInfo.DestinationAddress + " Delivered at " + DateTime.Now.ToString()); //notifying of delivery completion using (TransactionScope lScope = new TransactionScope()) using (DeliveryDataModelContainer lContainer = new DeliveryDataModelContainer()) { pDeliveryInfo.Status = 1; //IDeliveryNotificationService lService = DeliveryNotificationServiceFactory.GetDeliveryNotificationService(pDeliveryInfo.DeliveryNotificationAddress); //lService.NotifyDeliveryCompletion(pDeliveryInfo.DeliveryIdentifier, DeliveryInfoStatus.Delivered); DeliveryMessage mDeliveryMessage = new DeliveryMessage() { OrderNumber = pDeliveryInfo.OrderNumber, DeliveryIdentifier = pDeliveryIdentifier, Status = 1, Topic = "delivery" }; lClient.Publish(mDeliveryMessage); lScope.Complete(); } }
public void SaveDeliveryStatus(object sender, EventArgs e) { try { MessageQueue queue; DeliveryMessage delivery; DeliveryMessage oldStatusDelivery; List <DeliveryMessage> lstDelivery = new List <DeliveryMessage>(); string queuePath = string.Format(@"185.37.53.188\private$\{0}", ConfigurationManager.GetSetting("QueueName")); if (!MessageQueue.Exists(queuePath)) { return; } int counter = 0; int capacity = 10000; var messages = new List <Message>(); queue = new MessageQueue(queuePath); queue.Formatter = new BinaryMessageFormatter(); var msgEnumerator = queue.GetMessageEnumerator2(); while (msgEnumerator.MoveNext(new TimeSpan(0, 0, 1))) { using (var msg = msgEnumerator.Current) { messages.Add(msg); counter++; if (counter == capacity) { break; } } } foreach (Message msg in messages) { delivery = new DeliveryMessage(); msg.Formatter = new BinaryMessageFormatter(FormatterAssemblyStyle.Full, FormatterTypeStyle.TypesAlways); delivery = (DeliveryMessage)msg.Body; delivery.MessageId = msg.Id; switch (delivery.Agent) { case (int)SmsSenderAgentReference.SLS: case (int)SmsSenderAgentReference.RahyabRG: if (lstDelivery.Where(item => item.Agent == delivery.Agent && item.BatchId == delivery.BatchId && item.Mobile == delivery.Mobile && item.Date <= delivery.Date && item.Time < delivery.Time).Count() > 0) { oldStatusDelivery = lstDelivery.Where(item => item.Agent == delivery.Agent && item.BatchId == delivery.BatchId && item.Mobile == delivery.Mobile && item.Date <= delivery.Date && item.Time < delivery.Time).First(); lstDelivery.Remove(oldStatusDelivery); queue.ReceiveById(oldStatusDelivery.MessageId); } break; default: if (lstDelivery.Where(item => item.Agent == delivery.Agent && item.ReturnId == delivery.ReturnId && item.Date <= delivery.Date && item.Time < delivery.Time).Count() > 0) { oldStatusDelivery = lstDelivery.Where(item => item.Agent == delivery.Agent && item.ReturnId == delivery.ReturnId && item.Date <= delivery.Date && item.Time < delivery.Time).First(); lstDelivery.Remove(oldStatusDelivery); queue.ReceiveById(oldStatusDelivery.MessageId); } break; } lstDelivery.Add(delivery); } if (Facade.OutboxNumber.UpdateDeliveryStatus(lstDelivery)) { foreach (DeliveryMessage d in lstDelivery) { queue.ReceiveById(d.MessageId); } } lstDelivery.Clear(); messages.Clear(); } catch (Exception ex) { LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveDelivery, string.Format("On SaveDeliveryStatus : {0}*{1}", ex.Message, ex.StackTrace)); throw ex; } }
//public static void UpdateDeliveryStatus(long[] messageIDs, long[] deliveryStatus) //{ // Business.OutboxNumber smsController = new Business.OutboxNumber(); // Dictionary<long, List<long>> messageStatus = new Dictionary<long, List<long>>(); // string outerSystemMessageID = string.Empty; // for (int i = 0; i < deliveryStatus.Length; i++) // { // if (!messageStatus.ContainsKey(deliveryStatus[i])) // messageStatus.Add(deliveryStatus[i], new List<long>()); // messageStatus[deliveryStatus[i]].Add(messageIDs[i]); // } // foreach (int state in messageStatus.Keys) // { // outerSystemMessageID = string.Empty; // foreach (long smsID in messageStatus[state]) // outerSystemMessageID += string.Format("'{0}',", smsID); // smsController.UpdateDeliveryStatus(outerSystemMessageID.TrimEnd(','), state); // } //} //public static void UpdateDeliveryStatus(string[] messageIDs, int[] deliveryStatus) //{ // Business.OutboxNumber smsController = new Business.OutboxNumber(); // Dictionary<int, List<string>> messageStatus = new Dictionary<int, List<string>>(); // for (int i = 0; i < deliveryStatus.Length; i++) // { // if (!messageStatus.ContainsKey(deliveryStatus[i])) // messageStatus.Add(deliveryStatus[i], new List<string>()); // messageStatus[deliveryStatus[i]].Add(messageIDs[i]); // } // foreach (int state in messageStatus.Keys) // { // string strMessageIDs = string.Empty; // foreach (string messageID in messageStatus[state]) // strMessageIDs += string.Format("'{0}',", messageID); // smsController.UpdateDeliveryStatus(strMessageIDs.TrimEnd(','), state); // } //} //public static void UpdateDeliveryStatus(string batchID, string[] numbers, int[] deliveryStatus) //{ // Business.OutboxNumber smsController = new Business.OutboxNumber(); // Dictionary<int, List<string>> messageStatus = new Dictionary<int, List<string>>(); // for (int i = 0; i < deliveryStatus.Length; i++) // { // if (!messageStatus.ContainsKey(deliveryStatus[i])) // messageStatus.Add(deliveryStatus[i], new List<string>()); // messageStatus[deliveryStatus[i]].Add(numbers[i]); // } // foreach (int state in messageStatus.Keys) // { // string recievers = string.Empty; // foreach (string number in messageStatus[state]) // recievers += string.Format("'{0}',", number); // smsController.UpdateDeliveryStatus(batchID, recievers.TrimEnd(','), state); // } //} public static bool UpdateGsmDeliveryStatus(DeliveryStatus status, List <string> mobiles, string batchId, DeliveryMessage deliveryMessage) { try { Business.OutboxNumber smsController = new Business.OutboxNumber(); return(smsController.UpdateGsmDeliveryStatus(status, mobiles, batchId, deliveryMessage)); } catch (Exception ex) { throw ex; } }
public static bool UpdateDeliveryStatus(List <DeliveryMessage> lstDelivery) { Business.OutboxNumber outboxNumberController = new Business.OutboxNumber(); string outerMessageIds = string.Empty; string numbers = string.Empty; DataTable dtDeliveryRelayInfo = new DataTable(); DeliveryMessage deliveryMessage; try { LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveDelivery, string.Join(Environment.NewLine, lstDelivery.Select(deliver => string.Format("agent:{0}, status:{1}, mobile:{2}, returnId:{3},batchid:{4}", deliver.Agent, deliver.Status, deliver.Mobile, deliver.ReturnId, deliver.BatchId)))); var deliveryGroup = lstDelivery.Where(msg => msg.Agent != (int)SmsSenderAgentReference.RahyabRG && msg.Agent != (int)SmsSenderAgentReference.SLS) .GroupBy(msg => msg.Status).Select(grp => new { key = grp.Key, lstMessages = grp.ToList() }).ToList(); foreach (var item in deliveryGroup) { LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveDelivery, string.Format("status:{0},returnIds:{1}", item.key, string.Join(",", item.lstMessages.Select(msg => string.Format("'{0}'", msg.ReturnId))))); outerMessageIds = string.Join(",", item.lstMessages.Select(msg => string.Format("'{0}'", msg.ReturnId))); dtDeliveryRelayInfo = outboxNumberController.UpdateDeliveryStatus(outerMessageIds, item.key); foreach (DataRow row in dtDeliveryRelayInfo.Rows) { deliveryMessage = new DeliveryMessage(); deliveryMessage.BatchId = row["OutboxGuid"].ToString(); deliveryMessage.Mobile = row["ToNumber"].ToString(); deliveryMessage.Status = Helper.GetInt(row["DeliveryStatus"]); deliveryMessage.PrivateNumberGuid = Helper.GetGuid(row["PrivateNumberGuid"]); deliveryMessage.UserGuid = Helper.GetGuid(row["UserGuid"]); ///// New 8-3-2019 if (!string.IsNullOrEmpty(GetDeliveryURL(deliveryMessage.PrivateNumberGuid))) { ManageQueue.SendMessage(ManageQueue.Queues.DeliveryRelay.ToString(), deliveryMessage, string.Format("DeliveryRelay=> batchid={0},mobile={1},status={2}", deliveryMessage.BatchId, deliveryMessage.Mobile, deliveryMessage.Status)); } } } var deliveryBatchGroup = lstDelivery.Where(msg => msg.Agent == (int)SmsSenderAgentReference.RahyabRG || msg.Agent == (int)SmsSenderAgentReference.SLS) .GroupBy(msg => new { msg.BatchId, msg.Status }) .Select(grp => new { batchId = grp.Key.BatchId, status = grp.Key.Status, lstMessages = grp.ToList() }).ToList(); foreach (var item in deliveryBatchGroup) { LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveDelivery, string.Format("status:{0},batchid:{1},mobiles:{2}", item.status, item.batchId, string.Join(",", item.lstMessages.Select(msg => string.Format("'{0}'", msg.Mobile))))); numbers = string.Join(",", item.lstMessages.Select(msg => string.Format("'{0}'", msg.Mobile))); dtDeliveryRelayInfo = outboxNumberController.UpdateDeliveryStatus(item.batchId, numbers, item.status); foreach (DataRow row in dtDeliveryRelayInfo.Rows) { deliveryMessage = new DeliveryMessage(); deliveryMessage.BatchId = row["OutboxGuid"].ToString(); deliveryMessage.Mobile = row["ToNumber"].ToString(); deliveryMessage.Status = Helper.GetInt(row["DeliveryStatus"]); deliveryMessage.PrivateNumberGuid = Helper.GetGuid(row["PrivateNumberGuid"]); deliveryMessage.UserGuid = Helper.GetGuid(row["UserGuid"]); ///// New 8-3-2019 if (!string.IsNullOrEmpty(GetDeliveryURL(deliveryMessage.PrivateNumberGuid))) { ManageQueue.SendMessage(ManageQueue.Queues.DeliveryRelay.ToString(), deliveryMessage, string.Format("DeliveryRelay=> batchid={0},mobile={1},status={2}", deliveryMessage.BatchId, deliveryMessage.Mobile, deliveryMessage.Status)); } } } return(true); } catch (Exception ex) { LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveDelivery, string.Format("UpdateDeliveryStatus Error Message : {0}", ex.Message)); throw ex; } }
public void PublishDelivery(DeliveryMessage message) { var messageBytes = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(message)); Publish(messageBytes, RabbitMqConstants.DeliveryRouteKey); }
public bool UpdateGsmDeliveryStatus(DeliveryStatus status, List <string> mobiles, string batchId, DeliveryMessage deliveryMessage) { int msgstatus = 3; if (status == DeliveryStatus.SentAndReceivedbyPhone) { msgstatus = 1; } if (status == DeliveryStatus.NotSent) { msgstatus = 10; } try { string mobile = string.Empty;; DataTable dtSavedNumbers = FetchSPDataTable("UpdateGsmDeliveryStatus", "@Status", (int)status, "@Mobiles", string.Join(",", mobiles.Select(number => string.Format("'{0}'", number))), "@ReturnId", batchId); foreach (DataRow row in dtSavedNumbers.Rows) { mobile = row["Mobile"].ToString(); deliveryMessage.BatchId = row["OutboxGuid"].ToString(); deliveryMessage.PrivateNumberGuid = Helper.GetGuid(row["PrivateNumberGuid"]); deliveryMessage.UserGuid = Helper.GetGuid(row["UserGuid"]); deliveryMessage.Mobile = mobile; deliveryMessage.Status = msgstatus; ManageQueue.SendMessage(ManageQueue.Queues.DeliveryRelay.ToString(), deliveryMessage, string.Format("DeliveryRelay=> batchid={0},mobile={1},status={2}", batchId, mobile, msgstatus)); if (mobiles.Contains(mobile)) { mobiles.Remove(mobile); } } return(true); } catch (Exception ex) { throw ex; } }
public void Publish(Message pMessage) { //Console.WriteLine("Publish queue-------- Topic: " + pMessage.Topic); String topicFrom = pMessage.Topic; String forwardAddress = ""; //if(topicFrom == "bank") //{ // forwardAddress = "bank"; //} if (topicFrom == "bank") { TransferMessage transferMessage = pMessage as TransferMessage; bool bTransferResult = transferMessage.BTransfer; if (bTransferResult) { forwardAddress = "delivery"; using (MessageBusEntitiesModelContainer lContainer = new MessageBusEntitiesModelContainer()) { DeliveryMessage deliveryMessage = new DeliveryMessage() { Topic = "delivery", OrderNumber = transferMessage.OrderGuid.ToString(), SourceAddress = "Video Store Address", DestinationAddress = lContainer.Orders.Where((pOrder) => pOrder.OrderNumber == transferMessage.OrderGuid).FirstOrDefault().DestinationAddress }; pMessage = deliveryMessage; EmailMessage emailMessage = new EmailMessage() { Topic = "email", EmailAddress = lContainer.Orders.Where((pOrder) => pOrder.OrderNumber == transferMessage.OrderGuid).FirstOrDefault().EmailAddress, EmailContent = "Order: " + transferMessage.OrderGuid + " is submitted at " + DateTime.Now.ToString() }; PublishMessage(emailMessage, "email"); } // Inform Video Store Transfer Success PublishMessage(transferMessage, "videostore"); Console.WriteLine("MessageBus: ----------Bank to Delivery Co and Video Store"); } else { PublishMessage(transferMessage, "videostore"); forwardAddress = "email"; using (MessageBusEntitiesModelContainer lContainer = new MessageBusEntitiesModelContainer()) { Guid orderGuid = transferMessage.OrderGuid; EmailMessage mEmailMessage = new EmailMessage() { EmailAddress = lContainer.Orders.Where((pOrder) => pOrder.OrderNumber == orderGuid).FirstOrDefault().EmailAddress, EmailContent = "Your order " + orderGuid + " can not be processed, please chekc your credit." }; pMessage = mEmailMessage; Console.WriteLine("MessageBus: ----------Bank to Messagebus to email"); } } } if (topicFrom == "delivery") { forwardAddress = "email"; if (pMessage is DeliveryMessage) { Console.WriteLine("MessageBus: ----------Delivery Co to Video Store"); DeliveryMessage mDeliveryMessage = pMessage as DeliveryMessage; int deliveryStatus = mDeliveryMessage.Status; using (MessageBusEntitiesModelContainer lContainer = new MessageBusEntitiesModelContainer()) { Guid orderGuid = new Guid(mDeliveryMessage.OrderNumber); EmailMessage mEmailMessage = new EmailMessage() { EmailAddress = lContainer.Orders.Where((pOrder) => pOrder.OrderNumber == orderGuid).FirstOrDefault().EmailAddress, //EmailContent = "Your order " + mDeliveryMessage.OrderNumber + " has been placed" }; // Submited if (deliveryStatus == 0) { mEmailMessage.EmailContent = "Your order " + mDeliveryMessage.OrderNumber + " has been placed"; } // Delivered if (deliveryStatus == 1) { mEmailMessage.EmailContent = "Your order " + mDeliveryMessage.OrderNumber + " has been delivered"; } pMessage = mEmailMessage; } } } if (topicFrom == "videostore") { if (pMessage is OrderMessage) { Console.WriteLine("MessageBus: ----------Video Store to Bank"); OrderMessage orderMessage = pMessage as OrderMessage; SaveOrderToDataBase(orderMessage); OrderMessageToTransferMessage lVisitor = new OrderMessageToTransferMessage(); lVisitor.Visit(orderMessage); pMessage = lVisitor.Result; forwardAddress = "bank"; } } //foreach (String lHandlerAddress in SubscriptionRegistry.Instance.GetTopicSubscribers(forwardAddress)) //{ // ISubscriberService lSubServ = ServiceFactory.GetService<ISubscriberService>(lHandlerAddress); // Console.WriteLine("Handler Address:" + lHandlerAddress); // lSubServ.PublishToSubscriber(pMessage); //} PublishMessage(pMessage, forwardAddress); }
private void SaveDelivery(List <Message> messages) { try { foreach (Message msg in messages) { lstMessageIds.Clear(); delivery = new DeliveryMessage(); msg.Formatter = new BinaryMessageFormatter(); delivery = (DeliveryMessage)msg.Body; delivery.MessageId = msg.Id; if (string.IsNullOrEmpty(delivery.ReturnId) || delivery.ReturnId == "0") { ReceiveMessageFromQueue(msg.Id); continue; } switch (delivery.Agent) { case (int)SmsSenderAgentReference.SLS: case (int)SmsSenderAgentReference.RahyabRG: lstMessageIds = lstDelivery.Where(item => item.Agent == delivery.Agent && item.BatchId == delivery.BatchId && item.Mobile == delivery.Mobile && item.Date <= delivery.Date && item.Time < delivery.Time).Select(item => item.MessageId).ToList(); lstDelivery.RemoveAll(item => item.Agent == delivery.Agent && item.BatchId == delivery.BatchId && item.Mobile == delivery.Mobile && item.Date <= delivery.Date && item.Time < delivery.Time); break; default: lstMessageIds = lstDelivery.Where(item => item.Agent == delivery.Agent && item.ReturnId == delivery.ReturnId && item.Date <= delivery.Date && item.Time < delivery.Time).Select(item => item.MessageId).ToList(); lstDelivery.RemoveAll(item => item.Agent == delivery.Agent && item.ReturnId == delivery.ReturnId && item.Date <= delivery.Date && item.Time < delivery.Time); break; } ReceiveMessageFromQueue(lstMessageIds); lstDelivery.Add(delivery); } if (Arad.SMS.Gateway.Facade.OutboxNumber.UpdateDeliveryStatus(lstDelivery)) { ReceiveMessageFromQueue(lstDelivery.Select(item => item.MessageId).ToList()); } lstDelivery.Clear(); } catch (Exception ex) { LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveDelivery, string.Format("On SaveDeliveryStatus : {0}*{1}", ex.Message, ex.StackTrace)); throw ex; } }
public void Init() { _service = new DeliveryMessage( "https://api.telegram.org/bot", "325834582:AAGbvJQ7oYH2E3HW4z_yqshRvu-jT53GOQc"); }