/// <summary>
        /// Activates the service order.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="headerArgs"></param>
        /// <returns></returns>
        public ActivateServiceOrderResponseDto ActivateServiceOrder(ActivateServiceOrderRequestDto request, HeaderArgs headerArgs)
        {
            Random random = new Random();
            if (random.Next(0, 1) == 0)
            {
                return new ActivateServiceOrderResponseDto
                {
                    Status = true
                };
            }

            return new ActivateServiceOrderResponseDto
            {
                Status = false
            };
        }
Exemple #2
0
 /// <summary>
 /// Activates the service order.
 /// TODO:Logic inside this method will be changed later when we have operation ready in 
 /// either Rosettian or ESB.
 /// </summary>
 /// <param name="tn">telephone number</param>
 /// <param name="headerArgs"></param>
 /// <returns></returns>
 public LineNumberPortabilityStatusDto GetLineNumberPortabilityStatus(string tn, HeaderArgs headerArgs)
 {
     var request = new ActivateServiceOrderRequestDto()
     {
         TN = tn
     };
     return _enterpriseService.GetLineNumberPortabilityStatus(request, headerArgs);
 }
 /// <summary>
 /// Gets status of SOA Activation for TN
 /// </summary>
 /// <param name="request">contains TN</param>
 /// <param name="headerArgs"></param>
 /// <returns></returns>
 public LineNumberPortabilityStatusDto GetLineNumberPortabilityStatus(ActivateServiceOrderRequestDto request,
     HeaderArgs headerArgs)
 {
     return new LineNumberPortabilityStatusDto()
     {
         StatusCode = "FakeStatusCode",
         StatusSource = "FakeStatusSource",
         Message = "FakeMessage"
     };
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <param name="headerArgs"></param>
        /// <returns></returns>
        public ActivateServiceOrderResponseDto ActivateServiceOrder(ActivateServiceOrderRequestDto request, HeaderArgs headerArgs)
        {
            if (string.IsNullOrWhiteSpace(request.TN)) throw new ArgumentNullException(request.TN);

            var getActivateServiceOrderResponse = new ActivateServiceOrderResponseDto()
            {
                Status = false
            };

            try
            {
                if (Boolean.Parse(ConfigurationManager.AppSettings["NewPerformSOAEnabled"]))
                {
                    var esbRequest = CreateWpsActivateServiceOrderRequest(request, headerArgs);
                    var client = new ManageTelephoneNumberRegistrationClient();
                    var esbResponse = client.UpdateLineNumberPortability(esbRequest.ManageTelephoneNumberRegistrationUpdateLineNumberPortabilityRequest);

                    // Handle any unsuccessful conditions
                    if (esbResponse.ExecutionContext.ExecutionStatus.ExecutionStatusSuccessFlag == false)
                    {
                        var messages = esbResponse.ExecutionContext.ExecutionStatus.ExecutionStatusMessage;
                        var errorMessage = String.Empty;
                        var sb = new StringBuilder();

                        for (int i = 0; i < messages.Length; i++)
                        {
                            sb.AppendLine(String.Format("Error {0}:: Severity: {1}, Code: {2}, Message: {3}",
                                i + 1,
                                messages[i].ExecutionStatusSeverity.ToString(),
                                messages[i].ExecutionStatusCode,
                                messages[i].ExecutionStatusDescription));
                        }

                        if (sb.ToString().Length > 0)
                        {
                            errorMessage =
                                String.Concat(
                                    String.Format(
                                        "The activation process for TN # {0} has failed with the following errors: \n\n",
                                        request.TN), sb.ToString());
                        }
                        else
                        {
                            errorMessage = String.Format(
                                "The activation process for TN # {0} has failed for unknown reasons.",
                                request.TN);
                        }

                        throw new EnterpriseServiceException(errorMessage);
                    }
                }
                else
                {
                    var esbRequest = CreateActivateServiceOrderRequest(request, headerArgs);
                    _serviceOrderOrchestration.resumeServiceOrder(esbRequest);
                }

               getActivateServiceOrderResponse.Status = true;
            }
            catch (System.Exception e)
            {
                var isServiceException = _enterpriseExceptionHandler.HandleGeneralServiceExceptions(e);
                if (isServiceException)
                {
                    var myException = new System.Exception(Constants.IsServiceExceptionUpperCase, e);
                    throw myException;
                }

                throw;
            }

            return getActivateServiceOrderResponse;
        }
        /// <summary>
        /// Create the ESB Request method for ActivateService Order using WPS endpoints.
        /// </summary>
        /// <param name="request">Contains Subscriber Telephone Number to Activate</param>
        /// <param name="headerArgs">Contains User Info</param>
        /// <returns></returns>
        private static UpdateLineNumberPortabilityRequest CreateWpsActivateServiceOrderRequest(ActivateServiceOrderRequestDto request, HeaderArgs headerArgs)
        {
            try
            {
                var _executionContext = new ExecutionContext();
                if (request.ExecutionContext == null)
                {
                    var consumerInfo = new ConsumerInfo();
                    consumerInfo.ApplicationID = ApplicationIDEnum.SIMPL;
                    consumerInfo.EmployeeID = headerArgs.CrisId;
                    consumerInfo.UserID = headerArgs.CorpId ?? String.Empty;

                    var esbHeader = new ESBHeader();
                    esbHeader.ConsumerInfo = consumerInfo;
                    _executionContext.ESBHeader = esbHeader;
                    _executionContext.ESBHeader.ConsumerInfo.ApplicationID = ApplicationIDEnum.SIMPL;
                    _executionContext.ESBHeader.ConsumerInfo.EmployeeID = headerArgs.CrisId;
                    _executionContext.ESBHeader.ConsumerInfo.UserID = headerArgs.CorpId ?? String.Empty;
                }
                else
                {
                    _executionContext.ESBHeader.ConsumerInfo.ApplicationID = ApplicationIDEnum.SIMPL;
                    _executionContext.ESBHeader.ConsumerInfo.EmployeeID =
                        request.ExecutionContext.EsbHeader.ConsumerInfo.EmployeeID;
                    _executionContext.ESBHeader.ConsumerInfo.UserID =
                        request.ExecutionContext.EsbHeader.ConsumerInfo.UserID ?? String.Empty;
                }

                var _requestCriteria = new NumberRegistrationRequest();
                _requestCriteria.Action = NumberRegistrationActionEnum.Activate;
                _requestCriteria.RequestDateTimeSpecified = true;
                _requestCriteria.RequestDateTime = DateTime.Now;
                _requestCriteria.PortedTelephoneNumber = new TelephoneNumber();
                _requestCriteria.PortedTelephoneNumber.Item = request.TN;
                _requestCriteria.PortAction = PortActionEnum.SOAOnlyPortIn;

                var _request = new UpdateLineNumberPortabilityRequest();
                _request.ManageTelephoneNumberRegistrationUpdateLineNumberPortabilityRequest =
                    new ManageTelephoneNumberRegistrationUpdateLineNumberPortabilityRequest();
                _request.ManageTelephoneNumberRegistrationUpdateLineNumberPortabilityRequest.ExecutionContext =
                    _executionContext;
                _request.ManageTelephoneNumberRegistrationUpdateLineNumberPortabilityRequest.RequestCriteria = _requestCriteria;

                return _request;
            }
            catch (System.Exception ex)
            {
                var myException = new System.Exception("Error Creating ActivateServiceOrderRequest", ex);
                throw myException;
            }
        }
        /// <summary>
        /// Create the ESB Request method for getting the Line Activation Portability Status using WPS endpoints.
        /// </summary>
        /// <param name="request">Contains Subscriber Telephone Number to Query</param>
        /// <param name="headerArgs">Contains User Info</param>
        /// <returns></returns>
        private static GetLineNumberPortabilityStatusRequest CreateLineTestPortabilityStatusRequest(ActivateServiceOrderRequestDto request, HeaderArgs headerArgs)
        {
            try
            {
                var _executionContext = new ExecutionContext();
                if (request.ExecutionContext == null)
                {
                    var consumerInfo = new ConsumerInfo();
                    consumerInfo.ApplicationID = ApplicationIDEnum.SIMPL;
                    consumerInfo.EmployeeID = headerArgs.CrisId;
                    consumerInfo.UserID = headerArgs.CorpId ?? String.Empty;

                    var esbHeader = new ESBHeader();
                    esbHeader.ConsumerInfo = consumerInfo;
                    _executionContext.ESBHeader = esbHeader;
                    _executionContext.ESBHeader.ConsumerInfo.ApplicationID = ApplicationIDEnum.SIMPL;
                    _executionContext.ESBHeader.ConsumerInfo.EmployeeID = headerArgs.CrisId;
                    _executionContext.ESBHeader.ConsumerInfo.UserID = headerArgs.CorpId ?? String.Empty;
                }
                else
                {
                    _executionContext.ESBHeader.ConsumerInfo.ApplicationID = ApplicationIDEnum.SIMPL;
                    _executionContext.ESBHeader.ConsumerInfo.EmployeeID =
                        request.ExecutionContext.EsbHeader.ConsumerInfo.EmployeeID;
                    _executionContext.ESBHeader.ConsumerInfo.UserID =
                        request.ExecutionContext.EsbHeader.ConsumerInfo.UserID ?? String.Empty;
                }

                var tn = new TelephoneNumber();
                tn.Item = request.TN;

                var _requestCriteria = new GetNumberRegistrationStatusRequest();
                _requestCriteria.TelephoneNumber = tn;

                var manage = new ManageTelephoneNumberRegistrationGetLineNumberPortabilityStatusRequest();
                manage.ExecutionContext = _executionContext;
                manage.RequestCriteria = _requestCriteria;

                var _request = new GetLineNumberPortabilityStatusRequest();
                _request.ManageTelephoneNumberRegistrationGetLineNumberPortabilityStatusRequest = manage;

                return _request;
            }
            catch (System.Exception ex)
            {
                var myException = new System.Exception("Error Creating ActivateServiceOrderRequest", ex);
                throw myException;
            }
        }
        /// <summary>
        /// Create the ESB Request method for ActivateService Order using the deprecated BPM endpoints.
        /// </summary>
        /// <param name="request">Contains Subscriber Telephone Number to Activate</param>
        /// <param name="headerArgs">Contains User Info</param>
        /// <returns></returns>
        private static resumeServiceOrderRequest CreateActivateServiceOrderRequest(ActivateServiceOrderRequestDto request, HeaderArgs headerArgs)
        {
            try
            {
                serviceOrder.Header header = null;
                resumeServiceOrderRequest esbRequest = null;

                // construct header
                header = new serviceOrder.Header
                {
                    Source = "SIMPL",
                    Security_T = new serviceOrder.CharacteristicSpecification[2],
                    ConsumerInfo = new serviceOrder.CharacteristicSpecification[4]
                };

                header.Security_T[0] = new serviceOrder.CharacteristicSpecification
                {
                    name = "employeeID",
                    Value = new serviceOrder.CharacteristicValue
                    {
                        value = headerArgs.CrisId
                    }
                };

                header.Security_T[1] = new serviceOrder.CharacteristicSpecification
                {
                    name = "userID",
                    Value = new serviceOrder.CharacteristicValue
                    {
                        value = headerArgs.CorpId ?? string.Empty
                    }
                };

                header.ConsumerInfo[0] = new serviceOrder.CharacteristicSpecification
                {
                    name = "DPIEnvironment",
                    Value = new serviceOrder.CharacteristicValue
                    {
                        value = headerArgs.DpiRegion ?? string.Empty
                    }
                };

                header.ConsumerInfo[1] = new serviceOrder.CharacteristicSpecification
                {
                    name = "name",
                    Value = new serviceOrder.CharacteristicValue
                    {
                        value = headerArgs.Name ?? string.Empty
                    }
                };

                header.ConsumerInfo[2] = new serviceOrder.CharacteristicSpecification
                {
                    name = "email",
                    Value = new serviceOrder.CharacteristicValue
                    {
                        value = headerArgs.Email ?? string.Empty
                    }
                };

                header.ConsumerInfo[3] = new serviceOrder.CharacteristicSpecification
                {
                    name = "role",
                    Value = new serviceOrder.CharacteristicValue
                    {
                        value = headerArgs.Role ?? string.Empty
                    }
                };

                // construct payload
                esbRequest = new resumeServiceOrderRequest
                {

                    resumeServiceOrder = new resumeServiceOrder
                    {
                        resumeServiceOrderInput = new serviceOrder.msg_LookupRequest
                        {
                            Header = header,
                            Payload = new serviceOrder.LookupRequest
                            {
                                SearchCriteria = new[]
                                {
                                    new serviceOrder.Entity
                                    {
                                        type = "ServiceOrder",
                                        Characteristics = new[]
                                        {
                                            new serviceOrder.CharacteristicSpecification
                                            {
                                                name = "telephoneNumber",
                                                valueType = "WTN",
                                                Value = new serviceOrder.CharacteristicValue
                                                {
                                                    value = request.TN
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                };

                return esbRequest;
            }
            catch (System.Exception ex)
            {
                var myException = new System.Exception("Error Creating ActivateServiceOrderRequest", ex);
                throw myException;
            }
        }
        /// <summary>
        /// Gets status of SOA for subscriber
        /// </summary>
        /// <param name="request"></param>
        /// <param name="headerArgs"></param>
        /// <returns></returns>
        public LineNumberPortabilityStatusDto GetLineNumberPortabilityStatus(ActivateServiceOrderRequestDto request, HeaderArgs headerArgs)
        {
            if (string.IsNullOrWhiteSpace(request.TN)) throw new ArgumentNullException(request.TN);

            try
            {
                var esbRequest = CreateLineTestPortabilityStatusRequest(request, headerArgs);
                var client = new ManageTelephoneNumberRegistrationClient();
                var esbResponse =
                    client.GetLineNumberPortabilityStatus(esbRequest.ManageTelephoneNumberRegistrationGetLineNumberPortabilityStatusRequest);

                // Handle any unsuccessful conditions
                if (esbResponse.ExecutionContext.ExecutionStatus.ExecutionStatusSuccessFlag == false)
                {
                    var messages = esbResponse.ExecutionContext.ExecutionStatus.ExecutionStatusMessage;
                    var errorMessage = String.Empty;
                    var sb = new StringBuilder();

                    for (int i = 0; i < messages.Length; i++)
                    {
                        sb.AppendLine(String.Format("Error {0}:: Severity: {1}, Code: {2}, Message: {3}",
                            i + 1,
                            messages[i].ExecutionStatusSeverity.ToString(),
                            messages[i].ExecutionStatusCode,
                            messages[i].ExecutionStatusText));
                    }

                    if (sb.ToString().Length > 0)
                    {
                        errorMessage =
                            String.Concat(
                                String.Format(
                                    "The activation process for TN # {0} has failed with the following errors: \n\n",
                                    request.TN), sb.ToString());
                    }
                    else
                    {
                        errorMessage = String.Format(
                            "The activation process for TN # {0} has failed for unknown reasons.",
                            request.TN);
                    }

                    throw new EnterpriseServiceException(errorMessage);
                }

                // Parse Data

                return new LineNumberPortabilityStatusDto()
                {
                    StatusCode = esbResponse.LineNumberPortabilityStatus.StatusCode,
                    StatusSource = esbResponse.LineNumberPortabilityStatus.StatusSource,
                    Message = esbResponse.LineNumberPortabilityStatus.Message
                };

            }
            catch (System.Exception e)
            {
                var isServiceException = _enterpriseExceptionHandler.HandleGeneralServiceExceptions(e);
                if (isServiceException)
                {
                    var myException = new System.Exception(Constants.IsServiceExceptionUpperCase, e);
                    throw myException;
                }
                throw;
            }
        }