static GsmStatusInfo GetInsertDateAndIdOfGsmItem(string messageId, string sessionId, GsmOperator gsmOperator, List <GsmStatusInfo> gsmGetStatusEntitiyList) { GsmStatusInfo smallGsmEntitiy = new GsmStatusInfo(); foreach (var item in gsmGetStatusEntitiyList) { if (gsmOperator == GsmOperator.VODAFONE) { if ((messageId == item.OperatorResponseId && sessionId == item.SessionId)) { smallGsmEntitiy = (GsmStatusInfo)item.Clone(); break; } } else { if (messageId == item.OperatorResponseId) { smallGsmEntitiy = (GsmStatusInfo)item.Clone(); break; } } } return(smallGsmEntitiy); }
public static GsmStatusInfo GetGsmSmsStatusInfo(long responseId, DateTime createDate) { GsmStatusInfo smallGsmStatusEntity = new GsmStatusInfo(); SmsStatusResult smsStatusResult; int messageStatus; List <GsmStatusInfo> gsmGetStatusEntitiyList = NotificationOperation.GetGsmSmsStatusOfSingleRecord(responseId, createDate); if (gsmGetStatusEntitiyList.Count == 0) { throw new EsbBusinessException("RecordNotFound"); } if (gsmGetStatusEntitiyList.FirstOrDefault().Status != GsmOperatorStatus.Completed) { smsStatusResult = BuildSmsStatusRequestByOperator(gsmGetStatusEntitiyList); messageStatus = smsStatusResult.GsmSmsStatusResultList.FirstOrDefault().MessageStatus; var gsmOperator = gsmGetStatusEntitiyList.FirstOrDefault().Operator; GsmOperatorSender sender = new GsmOperatorSender(gsmOperator); string statusExplanation = sender.GetStatusExplanationFromEnum(messageStatus); smallGsmStatusEntity.NotificationResponseId = responseId; smallGsmStatusEntity.GsmStatus = messageStatus.ToString(); smallGsmStatusEntity.GsmStatusExplanation = statusExplanation; smallGsmStatusEntity.DeliveryTime = smsStatusResult.GsmSmsStatusResultList.FirstOrDefault().MessageDeliveryDate; smallGsmStatusEntity.Operator = gsmOperator; } else { smallGsmStatusEntity = gsmGetStatusEntitiyList.FirstOrDefault(); } return(smallGsmStatusEntity); }
public static SmsStatusResult BuildSmsStatusRequestByOperator(List <GsmStatusInfo> gsmGetStatusEntitiyList) { try { CommonUtilities.SetEsbContext(); } catch (Exception ex) { log.ErrorFormat("Error while creating new esb context :{0}", ex); } if (gsmGetStatusEntitiyList == null) { return(null); } var gsmOperator = gsmGetStatusEntitiyList.FirstOrDefault().Operator; GsmOperatorSender sender = new GsmOperatorSender(gsmOperator); SmsStatusRequestEntity smsGetStatusItem = new SmsStatusRequestEntity(); foreach (var item in gsmGetStatusEntitiyList) { if (gsmOperator == GsmOperator.VODAFONE) { smsGetStatusItem.MultipleStatusRequestKeys.Add(new MultipleStatusRequestKey { MessageId = item.OperatorResponseId, NotificationResponseId = item.NotificationResponseId, SessionId = item.SessionId, GsmStatusId = item.Id }); smsGetStatusItem.SessionId = item.SessionId; smsGetStatusItem.NotificationResponseId = item.NotificationResponseId; } else { smsGetStatusItem.MessageIdList.Add(item.OperatorResponseId); if (!string.IsNullOrEmpty(item.SessionId)) { smsGetStatusItem.SessionId = item.SessionId; } } } SmsStatusRequest smsStatusRequest = sender.BuildSmsStatusRequest(smsGetStatusItem); SmsStatusResult smsStatusResult = sender.GetSmsStatus(smsStatusRequest); if (smsStatusResult.GsmSmsStatusResultList == null || smsStatusResult.GsmSmsStatusResultList.Count == 0) { throw new Exception(string.Format("Gsm status result null or empty, gsm operator:{0}", gsmOperator)); } foreach (var smsStatusResulItem in smsStatusResult.GsmSmsStatusResultList) { var gsmStatusFields = sender.SetGsmStatusFields(smsStatusResulItem, sender); GsmStatusInfo smallGsmEntitiy = GetInsertDateAndIdOfGsmItem(smsStatusResulItem.MessageId, smsStatusResulItem.SessionId, gsmOperator, gsmGetStatusEntitiyList); NotificationOperation.UpdateGsmSmsStatusResults(smsStatusResulItem, gsmOperator, smallGsmEntitiy, gsmStatusFields); if (gsmStatusFields.InternalStatus != GsmOperatorStatus.Completed) { DateTime nexCheckDate = sender.SetNextStatusCheckDateOfGsmSms(smallGsmEntitiy.InsertDate, gsmStatusFields.InternalStatus); NotificationOperation.UpdateNexCheckDateOfGsmRecord(nexCheckDate, smsStatusResulItem.MessageId, smallGsmEntitiy); } } return(smsStatusResult); }