Exemplo n.º 1
0
        public static bool UpdateDeliveryStatus(Guid OutboxGuid, Dictionary <DeliveryStatus, List <string> > messageStatus, long id = 0)
        {
            Business.OutboxNumber smsController = new Business.OutboxNumber();
            try
            {
                foreach (DeliveryStatus state in messageStatus.Keys)
                {
                    string recievers = string.Empty;
                    foreach (string number in messageStatus[state])
                    {
                        recievers += string.Format("'{0}',", number);
                    }

                    smsController.UpdateDeliveryStatus(OutboxGuid, recievers.TrimEnd(','), state, id);
                }
                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 2
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;
            }
        }