public async Task <string> AuthMiddleWare()
        {
            const string METHOD_NAME = "AuthMiddleWare";

            try
            {
                string sResponse = null;

                using (WebApiClient oHttpClient = new WebApiClient())
                {
                    string sUrl = this._settingsServicios.MiddleWareAPI + "api/v1/seguridad/authenticate";

                    var oRequest = new SSODto.Authenticate.Request();
                    oRequest.Username = this._settingsMiddleware.TokenUser;
                    oRequest.Password = this._settingsMiddleware.TokenPassword;

                    var oClientResponse = await oHttpClient.CallPostAsync <SSODto.Authenticate.Request, string>(sUrl, oRequest);

                    if (oClientResponse.StatusCode == HttpStatusCode.OK)
                    {
                        sResponse = oClientResponse.Content;
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.BadRequest)
                    {
                        //oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [400] Petición Invalida.";
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.Unauthorized)
                    {
                        //oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [401] Acceso Denegado.";
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.NotFound)
                    {
                        //oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [404] Ruta Invalida.";
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.InternalServerError)
                    {
                        //oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [500] Error Interno.";
                    }
                    else
                    {
                        //oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [{(int)oClientResponse.StatusCode}] Error Desconocido.";
                    }
                }

                return(sResponse);
            }
            catch (Exception ex)
            {
                throw new Exception($"({SERVICE_NAME}-{METHOD_NAME}) : " + ex.Message);
            }
        }
        public async Task <Response <SSODto.Login.Response> > Login(SSODto.Login.RequestModel oItem)
        {
            const string METHOD_NAME = "Login";

            try
            {
                string sToken = await this.AuthMiddleWare();

                if (string.IsNullOrEmpty(sToken))
                {
                    throw new Exception($"({SERVICE_NAME}-{METHOD_NAME}): Metodo Auth devolvio un token vacio o null.");
                }

                var oResponse = new Response <SSODto.Login.Response>();
                oResponse.IsSuccess = false;

                using (WebApiClient oHttpClient = new WebApiClient(sToken))
                {
                    string sUrl = this._settingsServicios.MiddleWareAPI + "api/v1/sso/Login";

                    var oRequest = new SSODto.Login.Request();
                    oRequest.ApplicationId = this._settingsSSO.ApplicationId;
                    oRequest.TokenUser     = this._settingsSSO.TokenUser;
                    oRequest.TokenPassword = this._settingsSSO.TokenPassword;
                    oRequest.UserName      = oItem.sUsername;
                    oRequest.UserPassword  = oItem.sPassword;

                    var oClientResponse = await oHttpClient.CallPostAsync <SSODto.Login.Request, SSODto.SSOResponse <SSODto.Login.Response> >(sUrl, oRequest);

                    if (oClientResponse.StatusCode == HttpStatusCode.OK)
                    {
                        oResponse.IsSuccess = oClientResponse.Content.Success;
                        oResponse.Data      = oClientResponse.Content.Data;
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.BadRequest)
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) {oClientResponse.Content.Message}";
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.Unauthorized)
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [401] Acceso Denegado.";
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.NotFound)
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [404] Ruta Invalida.";
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.InternalServerError)
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [500] Error Interno.";
                    }
                    else
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [{(int)oClientResponse.StatusCode}] Error Desconocido.";
                    }
                }

                return(oResponse);
            }
            catch (Exception ex)
            {
                throw new Exception($"({SERVICE_NAME}-{METHOD_NAME}) : " + ex.Message);
            }
        }
        public async Task <Response <SSODto.EnterpriseAddLocal.Response> > EnterpriseAddLocal(
            string sIdEmpresa,
            string sDocumentNumber,
            string sIdAplicacionEmpresa,
            string sNombreLocal,
            string sDireccionLocal)
        {
            const string METHOD_NAME = "EnterpriseAddLocal";

            try
            {
                string sToken = await this.AuthMiddleWare();

                if (string.IsNullOrEmpty(sToken))
                {
                    throw new Exception($"({SERVICE_NAME}-{METHOD_NAME}): Metodo Auth devolvio un token vacio o null.");
                }

                var oResponse = new Response <SSODto.EnterpriseAddLocal.Response>();
                oResponse.IsSuccess = false;

                using (WebApiClient oHttpClient = new WebApiClient(sToken))
                {
                    string sUrl = this._settingsServicios.MiddleWareAPI + "api/v1/sso/EnterpriseAddLocal";

                    var oRequest = new SSODto.EnterpriseAddLocal.Request();
                    oRequest.ApplicationId       = this._settingsSSO.ApplicationId;
                    oRequest.TokenUser           = this._settingsSSO.TokenUser;
                    oRequest.TokenPassword       = this._settingsSSO.TokenPassword;
                    oRequest.idEmpresa           = sIdEmpresa;
                    oRequest.DocumentNumber      = sDocumentNumber;
                    oRequest.IdAplicacionEmpresa = sIdAplicacionEmpresa;
                    oRequest.NombreLocal         = sNombreLocal;
                    oRequest.DireccionLocal      = sDireccionLocal;

                    var oClientResponse = await oHttpClient.CallPostAsync <SSODto.EnterpriseAddLocal.Request, SSODto.SSOResponse <SSODto.EnterpriseAddLocal.Response> >(sUrl, oRequest);

                    if (oClientResponse.StatusCode == HttpStatusCode.OK)
                    {
                        oResponse.IsSuccess = oClientResponse.Content.Success;
                        oResponse.Data      = oClientResponse.Content.Data;
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.BadRequest)
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) {oClientResponse.Content.Message}";
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.Unauthorized)
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [401] Acceso Denegado.";
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.NotFound)
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [404] Ruta Invalida.";
                    }
                    else if (oClientResponse.StatusCode == HttpStatusCode.InternalServerError)
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [500] Error Interno.";
                    }
                    else
                    {
                        oResponse.Message = $"({SERVICE_NAME}-{METHOD_NAME}) [{(int)oClientResponse.StatusCode}] Error Desconocido.";
                    }
                }

                return(oResponse);
            }
            catch (Exception ex)
            {
                throw new Exception($"({SERVICE_NAME}-{METHOD_NAME}) : " + ex.Message);
            }
        }