/*public O ExecuteService<S, O>(string destino, Func<S, O> methodName, string securitytokenid)
         * {
         *  ChannelFactory<S> client = CreateChannelFactory<S>(destino);
         *  client.Open();
         *  S service = client.CreateChannel();
         *
         *  using (new OperationContextScope((IContextChannel)service))
         *  {
         *      try
         *      {
         *          WebOperationContext.Current.OutgoingRequest.Headers.Add("securitytokenid", securitytokenid);
         *          return methodName(service);
         *      }
         *      finally
         *      {
         *          try
         *          {
         *              ((IClientChannel)service).Close();
         *          }
         *          catch (CommunicationException)
         *          {
         *              // Ignore various exceptions regarding the Channel's current state
         *          }
         *          catch (TimeoutException)
         *          {
         *              // Ignore Timeouts
         *          }
         *      }
         *  }
         * }
         *
         */


        public QueryResult ExecuteQueryServiceApiDMA <S>(ServiciosEnum destino, Func <S, string> methodName, string securitytokenid)
        {
            ChannelFactory <S> client = CreateChannelFactoryJsonMapper <S>(destino);

            client.Open();
            S service = client.CreateChannel();

            using (new OperationContextScope((IContextChannel)service))
            {
                try
                {
                    WebOperationContext.Current.OutgoingRequest.Headers.Add("securitytokenid", securitytokenid);
                    string      stream      = methodName(service);
                    QueryResult queryResult = JsonConvert.DeserializeObject <QueryResult>(stream);
                    return(queryResult);
                }

                finally
                {
                    try
                    {
                        ((IClientChannel)service).Close();
                    }
                    catch (CommunicationException)
                    {
                        // Ignore various exceptions regarding the Channel's current state
                    }
                    catch (TimeoutException)
                    {
                        // Ignore Timeouts
                    }
                }
            }
        }
        public O ExecuteService <S, O>(ServiciosEnum destino, string securitytokenid, Func <S, string> methodName)
        {
            ChannelFactory <S> client = CreateChannelFactory <S>(destino);

            client.Open();
            S service = client.CreateChannel();

            using (new OperationContextScope((IContextChannel)service))
            {
                try
                {
                    WebOperationContext.Current.OutgoingRequest.Headers.Add("securitytokenid", securitytokenid);
                    string stream = methodName(service);

                    var commandResult = JsonConvert.DeserializeObject <CommandResult>(stream);

                    if (commandResult.Status == "EX0000" && commandResult.Data != null)
                    {
                        if (commandResult.Data.ToString().ToLower() == "ok")
                        {
                            return(default(O));
                        }
                        else
                        {
                            return(JsonConvert.DeserializeObject <O>(commandResult.Data.ToString()));
                        }
                    }
                    else
                    {
                        string[] s = JsonConvert.DeserializeObject <string[]>(commandResult.Data.ToString());
                        throw new FaultException <ServiceFault>(new ServiceFault(s[1]), new FaultReason(s[1]));
                    }
                }
                catch (FaultException)
                {
                    throw;
                }
                catch (Exception)
                {
                    throw new FaultException <ServiceFault>(new ServiceFault("Servicios No Disponibles"), new FaultReason("Servicios No Disponibles"));
                }
                finally
                {
                    try
                    {
                        ((IClientChannel)service).Close();
                    }
                    catch (CommunicationException)
                    {
                        // Ignore various exceptions regarding the Channel's current state
                    }
                    catch (TimeoutException)
                    {
                        // Ignore Timeouts
                    }
                }
            }
        }
        private ChannelFactory <T> CreateChannelFactoryJsonMapper <T>(ServiciosEnum destino)
        {
            try
            {
                string          uri             = GetServiceUrl(destino);
                EndpointAddress endpointAddress = new EndpointAddress(uri);

                ChannelFactory <T> channelFactory = new ChannelFactory <T>();
                NetTcpBinding      webHttpBinding = CreateBinding(uri);
                channelFactory.Endpoint.Binding = webHttpBinding;
                channelFactory.Endpoint.Address = endpointAddress;
                return(channelFactory);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public string ExecuteQueryService <S>(ServiciosEnum destino, Func <S, string> methodName)
        {
            ChannelFactory <S> client = CreateChannelFactoryJsonMapper <S>(destino);

            client.Open();
            S service = client.CreateChannel();

            IncomingWebRequestContext request = WebOperationContext.Current.IncomingRequest;
            WebHeaderCollection       headers = request.Headers;
            string securitytokenid            = headers["securitytokenid"];

            using (new OperationContextScope((IContextChannel)service))
            {
                try
                {
                    MessageHeader <string> mhg = new MessageHeader <string>(securitytokenid);
                    var untyped = mhg.GetUntypedHeader("securitytokenid", "ns");

                    OperationContext.Current.OutgoingMessageHeaders.Add(untyped);


                    string stream = methodName(service);


                    return(stream);
                }
                finally
                {
                    try
                    {
                        ((IClientChannel)service).Close();
                    }
                    catch (CommunicationException)
                    {
                        // Ignore various exceptions regarding the Channel's current state
                    }
                    catch (TimeoutException)
                    {
                        // Ignore Timeouts
                    }
                }
            }
        }
        public string GetServiceUrl(ServiciosEnum destino)
        {
            switch (destino)
            {
            case ServiciosEnum.MobileCMD:
                return(URL + "OrdenesApiCommandService.svc/Rest");

            case ServiciosEnum.MobileQRY:
                return(URL + "OrdenesApiQueryService.svc/Rest");

            case ServiciosEnum.OrdenesFIX:
                return("");

            case ServiciosEnum.Graph:
                return(URL + "OrdenesGDService.svc/Rest");

            case ServiciosEnum.CommandExtranet:
                return(URL + "CommandExtranetService.svc/Rest");

            default:
                return("");
            }
        }
Example #6
0
 public QueryResult ExecuteQueryServiceApiDMA <S>(ServiciosEnum destino, Func <S, string> methodName, string securitytokenid)
 {
     return(wcfHelper.ExecuteQueryServiceApiDMA <S>(destino, methodName, securitytokenid));
 }
Example #7
0
 public string ExecuteQueryService <S>(ServiciosEnum destino, Func <S, string> methodName)
 {
     return(wcfHelper.ExecuteQueryService <S>(destino, methodName));
 }
Example #8
0
 public O ExecuteService <S, O>(ServiciosEnum destino, Func <S, string> methodName, string securitytokenid)
 {
     return(wcfHelper.ExecuteService <S, O>(destino, securitytokenid, methodName));
 }