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; } }
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; } }