//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();
                }
        }
Example #2
0
        public async Task <IActionResult> SendMessage(string clientId, string message)
        {
            var deliveryservice = new DeliveryMessage(clientId, message);
            await deliveryservice.SendMessageAsync(clientId, message, default(CancellationToken));

            return(Ok());
        }
Example #3
0
        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);
        }
Example #4
0
        //[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));
        }
Example #5
0
        ///// 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);
        }
Example #8
0
 public override bool OnMessage(IMessage message)
 {
     if (message.IsDeliveryMsg)
     {
         DeliveryMessage deliveryMessage = message as DeliveryMessage;
         if (deliveryMessage.receiverID == Uid)
         {
             return(true);
         }
     }
     return(base.OnMessage(message));
 }
Example #9
0
        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());
        }
Example #10
0
 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);
 }
Example #11
0
        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;
            }
        }
Example #14
0
        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);
        }
Example #15
0
        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;
            }
        }
Example #18
0
        //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;
            }
        }
Example #19
0
        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);
        }
Example #21
0
        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);
        }
Example #23
0
        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;
            }
        }
Example #24
0
 public void Init()
 {
     _service = new DeliveryMessage(
         "https://api.telegram.org/bot",
         "325834582:AAGbvJQ7oYH2E3HW4z_yqshRvu-jT53GOQc");
 }