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