예제 #1
0
        public async Task <PaginaDto> GuardarPagina(PaginaDto pagina, string authToken = null, CancellationToken cancellationToken = new CancellationToken())
        {
            cancellationToken.ThrowIfCancellationRequested();
            try
            {
                var response = await ApiClient.Post("api/Pagina/Create", pagina, cancellationToken);

                var errors = new List <BaseErrorDto>();
                if (response.IsSuccessStatusCode)
                {
                    JObject jObject = JObject.Parse(await response.Content.ReadAsStringAsync());
                    errors.Add(BaseErrorDto.create("Pagina", "Registro almacenado exitosamente"));
                    return(PaginaDto.create(PaginaDto.create(jObject), errors, 200));
                }
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    JObject jObject = JObject.Parse(await response.Content.ReadAsStringAsync());
                    var     values  = VentasService.Util.JObjectExtensions.ToDictionary(jObject);
                    foreach (var error in values)
                    {
                        errors.Add(BaseErrorDto.create(error.Key, error.Value));
                    }
                    return(PaginaDto.create(errors, response.StatusCode));
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            return(null);
        }
예제 #2
0
        public static BaseErrorDto create(string Field, string Description)
        {
            BaseErrorDto dto = new BaseErrorDto();

            dto.Description = Description;
            dto.Field       = Field;
            return(dto);
        }
예제 #3
0
        public BaseErrorResponseDto getExceptionErrorResponse()
        {
            BaseErrorDto        error  = new BaseErrorDto(500, "Failed Request", 321);
            List <BaseErrorDto> errors = new List <BaseErrorDto>();

            errors.Add(error);
            BaseErrorResponseDto response = new BaseErrorResponseDto();

            response.Errors = errors;
            return(response);
        }
예제 #4
0
        public static BaseErrorDto create(string Field, object Description)
        {
            BaseErrorDto dto = new BaseErrorDto();

            foreach (var value in (object[])Description)
            {
                dto.Description = value.ToString();
            }
            dto.Field = Field;
            return(dto);
        }
예제 #5
0
        protected virtual async Task <BaseResponseDto <TResult> > ReadResponseJson <TResult>(HttpResponseMessage response)
        {
            BaseResponseDto <TResult> result = null;
            BaseErrorDto innerError          = null;
            string       responseContent     = string.Empty;

            // In these cases, there may be JSON with standard structure and proper error message from microservice
            if (response.StatusCode == HttpStatusCode.OK ||
                response.StatusCode == HttpStatusCode.BadRequest ||
                response.StatusCode == HttpStatusCode.Unauthorized ||
                response.StatusCode == HttpStatusCode.BadGateway ||
                response.StatusCode == HttpStatusCode.NotImplemented ||
                response.StatusCode == HttpStatusCode.InternalServerError)
            {
                responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

                if (!string.IsNullOrWhiteSpace(responseContent))
                {
                    try
                    {
                        result = JsonConvert.DeserializeObject <BaseResponseDto <TResult> >(responseContent);
                    }
                    catch (Exception e)
                    {
                        innerError = new BaseErrorDto {
                            Message = $"{e.Message} response content: '{responseContent}'"
                        };
                    }
                }
            }
            else // some severe network error
            {
                result = new BaseResponseDto <TResult>
                {
                    Success = false,
                    Payload = default(TResult),
                    Error   = new BaseErrorDto
                    {
                        Message = $"HttpClient received status {response.StatusCode}, reason {response.ReasonPhrase}"
                    }
                };
            }

            return(result ?? new BaseResponseDto <TResult>
            {
                Success = false,
                Payload = default(TResult),
                Error = new BaseErrorDto
                {
                    Message = $"{_responseIncorrectMessage} response content: '{responseContent}'",
                    InnerError = innerError
                }
            });
        }
예제 #6
0
        public async Task <UsuarioDto> Login(string username, string password,
                                             CancellationToken cancellationToken = new CancellationToken())
        {
            cancellationToken.ThrowIfCancellationRequested();
            var errors = new List <BaseErrorDto>();

            try
            {
                var response = await ApiClient.Post("api/Auth/login", new { username = username, password = password });

                if (response.IsSuccessStatusCode)
                {
                    if (!string.IsNullOrEmpty(await response.Content.ReadAsStringAsync()))
                    {
                        JObject jObject = JObject.Parse(await response.Content.ReadAsStringAsync());
                        var     user    = (JObject)jObject["user"];
                        errors.Add(BaseErrorDto.create("Usuario", ""));
                        return(UsuarioDto.create(UsuarioDto.create((JObject)user["data"]), errors, 200));
                    }
                    return(UsuarioDto.create(UsuarioDto.create(), errors, Convert.ToInt32(response.StatusCode.ToString())));
                }
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    if (!string.IsNullOrEmpty(await response.Content.ReadAsStringAsync()))
                    {
                        JObject jObject = JObject.Parse(await response.Content.ReadAsStringAsync());
                        var     values  = VentasService.Util.JObjectExtensions.ToDictionary(jObject);
                        foreach (var error in values)
                        {
                            errors.Add(BaseErrorDto.create(error.Key, error.Value));
                        }
                        return(UsuarioDto.create(errors, 400));
                    }
                    errors.Add(BaseErrorDto.create("Usuario", "Error consultando registro"));
                    return(UsuarioDto.create(errors, 500));
                }
            }
            catch (UriFormatException er)
            {
                errors.Add(BaseErrorDto.create("Usuario", er.Message));
                return(UsuarioDto.create(errors, 500));
            }
            catch (Exception e)
            {
                errors.Add(BaseErrorDto.create("Usuario", e.Message));
                return(UsuarioDto.create(errors, 500));
            }
            return(null);
        }
예제 #7
0
        public async Task <PaginaDto> GetPagina(int id, string authToken = null, CancellationToken cancellationToken = new CancellationToken())
        {
            cancellationToken.ThrowIfCancellationRequested();
            var errors = new List <BaseErrorDto>();

            try
            {
                HttpResponseMessage response = await ApiClient.Get(string.Format("api/Pagina/Get?id={0}", id), cancellationToken);

                if (response.IsSuccessStatusCode)
                {
                    if (!string.IsNullOrEmpty(await response.Content.ReadAsStringAsync()))
                    {
                        JObject jObject = JObject.Parse(await response.Content.ReadAsStringAsync());
                        errors.Add(BaseErrorDto.create("Pagina", ""));
                        return(PaginaDto.create(PaginaDto.create(jObject), errors, 200));
                    }
                    if (response.StatusCode.Equals(HttpStatusCode.NoContent))
                    {
                        return(PaginaDto.create(PaginaDto.create(), errors, Convert.ToInt32(204)));
                    }
                    return(PaginaDto.create(PaginaDto.create(), errors, Convert.ToInt32(response.StatusCode.ToString())));
                }
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    if (!string.IsNullOrEmpty(await response.Content.ReadAsStringAsync()))
                    {
                        JObject jObject = JObject.Parse(await response.Content.ReadAsStringAsync());
                        var     values  = VentasService.Util.JObjectExtensions.ToDictionary(jObject);
                        foreach (var error in values)
                        {
                            errors.Add(BaseErrorDto.create(error.Key, error.Value));
                        }
                        return(PaginaDto.create(errors, Convert.ToInt32(response.StatusCode.ToString())));
                    }
                    errors.Add(BaseErrorDto.create("Pagina", "Error consultando registro"));
                    return(PaginaDto.create(errors, 500));
                }
            }
            catch (Exception e)
            {
                errors.Add(BaseErrorDto.create("Pagina", e.Message));
                return(PaginaDto.create(errors, 500));
            }
            return(null);
        }
예제 #8
0
        public async Task <PaginaDto> Delete(int id,
                                             CancellationToken cancellationToken = new CancellationToken())
        {
            cancellationToken.ThrowIfCancellationRequested();
            var errors = new List <BaseErrorDto>();

            try
            {
                var dyn = new { Id = id };
                HttpResponseMessage response = await ApiClient.Delete("api/Pagina/Delete", dyn);

                if (response.IsSuccessStatusCode)
                {
                    if (!string.IsNullOrEmpty(await response.Content.ReadAsStringAsync()))
                    {
                        JObject jObject = JObject.Parse(await response.Content.ReadAsStringAsync());
                        errors.Add(BaseErrorDto.create("Pagina", "Registro eliminado exitosamente"));
                        return(PaginaDto.create(PaginaDto.create(jObject), errors, 200));
                    }
                    return(PaginaDto.create(PaginaDto.create(), errors, Convert.ToInt32(response.StatusCode.ToString())));
                }
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    if (!string.IsNullOrEmpty(await response.Content.ReadAsStringAsync()))
                    {
                        JObject jObject = JObject.Parse(await response.Content.ReadAsStringAsync());
                        var     values  = VentasService.Util.JObjectExtensions.ToDictionary(jObject);
                        foreach (var error in values)
                        {
                            errors.Add(BaseErrorDto.create(error.Key, error.Value));
                        }
                        return(PaginaDto.create(errors, 400));
                    }
                }
                errors.Add(BaseErrorDto.create("Pagina", "Error Eliminando registro"));
                return(PaginaDto.create(errors, 500));
            }
            catch (Exception e)
            {
                errors.Add(BaseErrorDto.create("Pagina", e.Message));
                return(PaginaDto.create(errors, 500));
            }
        }