Esempio n. 1
0
        public IActionResult GetAuthorForArticles(Guid authorId)
        {
            ApiResponseMessage <AuthorDTO> apiResponseMessage = new ApiResponseMessage <AuthorDTO>()
            {
                Succeed = false, Message = "", Data = null
            };

            if (authorId == Guid.Empty)
            {
                return(BadRequest());
            }

            if (!_authorRepository.AuthorExists(authorId))
            {
                return(NoContent());
            }

            var authorForArticlesModel = _mapper.Map <AuthorDTO>(_authorRepository.GetAuthorForArticles(authorId));

            if (authorForArticlesModel != null)
            {
                apiResponseMessage.Succeed = true;
                apiResponseMessage.Message = $"Islem basarili.";
                apiResponseMessage.Data    = authorForArticlesModel;
            }

            return(Ok(apiResponseMessage));
        }
        //para funcionar o binding de um xml para um array ou list a classe correspondente ao parâmetro
        //deve ser decorada com a propriedade "[DataContract]" e as propriedades da classe que precisam
        //ser serializadas devem ser decoradas com a propriedade "[DataMember]"
        //Se na origem da requisição o dado for um json isto não é necessário.
        //Ver explicação em: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
        public HttpResponseMessage PostMultiplo([FromBody] ListaUsuario usuarios)
        {
            ApiResponseMessage retornoPortal;

            try
            {
                var usuariosComNome             = usuarios.Where(x => !string.IsNullOrEmpty(x.Nome)).ToList();
                int quantidadeDeUsuariosSemNome = usuarios.Count - usuariosComNome.Count;
                _cadastroUsuario.AtualizarUsuarios(usuariosComNome);
                retornoPortal = new ApiResponseMessage()
                {
                    Retorno = new Retorno()
                    {
                        Codigo = "200", Texto = usuariosComNome.Count + " usuários atualizados." +
                                                (quantidadeDeUsuariosSemNome > 0 ? quantidadeDeUsuariosSemNome + " usuários não atualizados: " +
                                                 string.Join(", ", usuarios.Where(x => string.IsNullOrEmpty(x.Nome)).Select(u => u.Login)) + "." : "")
                    }
                };
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }

            catch (Exception ex)
            {
                retornoPortal = ExceptionUtil.GeraExecaoDeErroParaWebApi(ex);
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }
        }
Esempio n. 3
0
        public IActionResult GetAuthor(Guid authorId)
        {
            ApiResponseMessage <AuthorDTO> apiResponseMessage = new ApiResponseMessage <AuthorDTO>()
            {
                Succeed = false, Message = "", Data = null
            };

            if (authorId == Guid.Empty)
            {
                return(BadRequest("Mesaj yaz"));
            }

            var authorModel = _mapper.Map <AuthorDTO>(_authorRepository.GetAuthor(authorId));

            if (authorModel == null)
            {
                //return NoContent("Mesaj yaz");
            }

            apiResponseMessage.Succeed = true;
            apiResponseMessage.Message = $"Islem basarili. GetAuthor";
            apiResponseMessage.Data    = authorModel;

            return(Ok(apiResponseMessage));
        }
        public async Task Is_HttpContent_Read_As_ApiResponseMessage_Async()
        {
            // Arrange
            HttpContent httpContent = new StringContent(
                @"{ ""Code"" : 200,
                    ""Message"": {""Header"" : ""Test header"", ""Body"" : ""Test body""}, 
                    ""Info"" : ""Extra info""
                  }");

            var expectedApiResponseMessage = new ApiResponseMessage <ExampleMessageType>()
            {
                Code    = (HttpStatusCode)200,
                Message = new ExampleMessageType {
                    Header = "Test header", Body = "Test body"
                },
                Info = "Extra info"
            };

            // Act
            var actualApiResponseMessage = await httpContent.ReadAsApiResponseMessageAsync <ExampleMessageType>();

            // Assert
            Assert.AreEqual(expectedApiResponseMessage.Code, actualApiResponseMessage.Code);
            Assert.AreEqual(expectedApiResponseMessage.Message.Header, actualApiResponseMessage.Message.Header);
            Assert.AreEqual(expectedApiResponseMessage.Message.Body, actualApiResponseMessage.Message.Body);
            Assert.AreEqual(expectedApiResponseMessage.Info, actualApiResponseMessage.Info);
        }
Esempio n. 5
0
 public BasicApiResponse(bool successful, params ErrorMessage[] messages)
 {
     ApiMessage = new ApiResponseMessage()
     {
         Successful = successful, Errors = messages
     };
 }
Esempio n. 6
0
        /// <summary>
        /// 接口统一的返回消息
        /// </summary>
        /// <param name="result">返回内容</param>
        /// <returns></returns>
        protected HttpResponseMessage ApiResponse(ApiResponseMessage result)
        {
            HttpResponseMessage response = new HttpResponseMessage
            {
                Content = new ObjectContent <ApiResponseMessage>(result, Configuration.Formatters.JsonFormatter),
            };

            return(response);
        }
        //para funcionar o binding de um xml para um array ou list a classe correspondente ao parâmetro
        //deve ser decorada com a propriedade "[DataContract]" e as propriedades da classe que precisam
        //ser serializadas devem ser decoradas com a propriedade "[DataMember]"
        //Se na origem da requisição o dado for um json isto não é necessário.
        //Ver explicação em: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
        public HttpResponseMessage PostMultiplo([FromBody] ListaProdutos produtos)
        {
            ApiResponseMessage retornoPortal;

            try
            {
                _cadastroProduto.AtualizarProdutos(produtos);
                retornoPortal = new ApiResponseMessage()
                {
                    Retorno = new Retorno()
                    {
                        Codigo = "200", Texto = produtos.Count + " produtos atualizados"
                    }
                    //retorno = new retorno() { retCodigo = "200", retTexto =    produtos.Produtos.Count + " produtos atualizados" }
                };
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }

            catch (Exception ex)
            {
                string detalhes = "";
                if (produtos == null)
                {
                    detalhes = "A lista de produtos esta nula";
                }
                else if (produtos.Count == 0)
                {
                    detalhes = "A lista de produtos esta vazia";
                }
                else
                {
                    for (int i = 0; i < produtos.Count; i++)
                    {
                        detalhes += "Produto " + i + ": Codigo: " + (string.IsNullOrEmpty(produtos[i].Codigo)
                                                ? "nulo" : produtos[i].Codigo)
                                    + " - Tipo: " + (string.IsNullOrEmpty(produtos[i].Tipo)
                                                  ? "nulo" : produtos[i].Tipo
                                                     + " - Descricao: " + (string.IsNullOrEmpty(produtos[i].Descricao)
                                                  ? "nulo": produtos[i].Descricao));
                    }
                }

                retornoPortal = new ApiResponseMessage()
                {
                    Retorno = new Retorno()
                    {
                        Codigo = "500", Texto = "Erro interno. Mensagem: " + ex.Message
                                                + (ex.InnerException != null ? " - Excecao Interna: " + ex.InnerException.Message : "")
                                                + " - Pilha de Execucao: " + ex.StackTrace + " - Detalhes: " + detalhes
                    }
                };
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }
        }
Esempio n. 8
0
        private Task <string> ResponseData(bool isSuccess, dynamic dataResponse, ApiResponseMessage message)
        {
            ResponseViewModel response = new ResponseViewModel()
            {
                IsSuccess = isSuccess,
                Message   = message.Message,
                Data      = dataResponse
            };

            return(Task.FromResult(response.ToJsonCamel()));
        }
Esempio n. 9
0
        //public ComunicacaoFechamentoProcessoCotacaoFrete(CredencialSap credencialSap)
        //{
        //    _comunicacaoSap = new ComunicacaoSap<ListaProcessoDeCotacaoDeFreteFechamento>(credencialSap);
        //}

        public ApiResponseMessage EfetuarComunicacao(ProcessoDeCotacao processo)
        {
            ProcessoDeCotacaoItem item = processo.Itens.First();

            if (item.Produto.NaoEstocavel)
            {
                //Cotações de frete para empresas do grupo que não utilizam o SAP deverão ser realizadas com material NLAG
                //(Material não estocável). Para este tipo de material a cotação não deverá ser enviada para o SAP;
                return(new ApiResponseMessage
                {
                    Retorno = new Retorno
                    {
                        Codigo = "200",
                        Texto = "S"
                    }
                });
            }

            var mensagemParaEnviar = new ListaProcessoDeCotacaoDeFreteFechamento();

            var processoAuxiliar = (ProcessoDeCotacaoDeFrete)processo.CastEntity();

            foreach (var fornecedorParticipante in processoAuxiliar.FornecedoresParticipantes)
            {
                if (fornecedorParticipante.Cotacao != null && fornecedorParticipante.Cotacao.Itens.First().Selecionada)
                {
                    CotacaoItem itemDaCotacao = fornecedorParticipante.Cotacao.Itens.First();
                    mensagemParaEnviar.Add(new ProcessoDeCotacaoDeFreteFechamentoComunicacaoSapVm
                    {
                        CodigoTransportadora = fornecedorParticipante.Fornecedor.Codigo,
                        //CodigoMaterial = processoAuxiliar.Produto.Codigo,
                        CodigoMaterial = item.Produto.Codigo,
                        //CodigoUnidadeMedida = processoAuxiliar.UnidadeDeMedida.CodigoInterno,
                        CodigoUnidadeMedida   = item.UnidadeDeMedida.CodigoInterno,
                        CodigoItinerario      = processoAuxiliar.Itinerario.Codigo,
                        DataDeValidadeInicial = processoAuxiliar.DataDeValidadeInicial.ToString("yyyyMMdd"),
                        DataDeValidaFinal     = processoAuxiliar.DataDeValidadeFinal.ToString("yyyyMMdd"),
                        NumeroDoContrato      = processoAuxiliar.NumeroDoContrato ?? "",
                        Valor = itemDaCotacao.ValorComImpostos
                    });
                }
            }

            ApiResponseMessage apiResponseMessage =
                _comunicacaoSap.EnviarMensagem(
                    "/HttpAdapter/HttpMessageServlet?senderParty=PORTAL&senderService=HTTP&interfaceNamespace=http://portal.bsbios.com.br/&interface=si_cotacaoFreteFechamento_portal&qos=be"
                    , mensagemParaEnviar);

            if (apiResponseMessage.Retorno.Codigo == "E")
            {
                throw new ComunicacaoSapException("json", "Ocorreu um erro ao comunicar o fechamento do Processo de Cotação de Frete para o SAP. Detalhes: " + apiResponseMessage.Retorno.Texto);
            }
            return(apiResponseMessage);
        }
Esempio n. 10
0
        private /*async*/ void ExecutaChamadaAssincrona()
        {
            //var configuration = new HttpConfiguration();
            //configuration.Formatters.XmlFormatter.UseXmlSerializer = true;

            var clientHandler = new HttpClientHandler();

            clientHandler.Credentials = new NetworkCredential("fusion_lucas", "fusion123");

            var httpClient         = new HttpClient(clientHandler);
            var mensagemParaEnviar = new ApiResponseMessage()
            {
                Retorno = new Retorno()
                {
                    Codigo = "100",
                    Texto  = "blablabla"
                }
            };

            var response = httpClient.PostAsXmlAsync("http://sap-pid.bsbios.com:50000/HttpAdapter/HttpMessageServlet?senderParty=PORTAL&senderService=HTTP&interfaceNamespace=http://portal.bsbios.com.br/&interface=si_envioStatus_portal&qos=be"
                                                     , mensagemParaEnviar);

            Assert.IsTrue(response.Result.IsSuccessStatusCode);
            //var retorno = response.Result.Content.ReadAsAsync<ApiResponseMessage>();
            //var retorno = response.Result.Content.ReadAsStringAsync();
            Stream content         = response.Result.Content.ReadAsStreamAsync().Result;
            var    serializer      = new XmlSerializer(typeof(ApiResponseMessage) /*,"http://schemas.datacontract.org/2004/07/BsBios.Portal.ViewModel"*/);
            var    responseMessage = (ApiResponseMessage)serializer.Deserialize(content);

            //var responseMessage = retorno.Result;
            Assert.IsNotNull(responseMessage);
            Assert.AreEqual("24", responseMessage.Retorno.Codigo);

            //*await*/ httpClient.PostAsXmlAsync("http://sap-pid.bsbios.com:50000/HttpAdapter/HttpMessageServlet?senderParty=PORTAL&senderService=HTTP&interfaceNamespace=http://portal.bsbios.com.br/&interface=si_envioStatus_portal&qos=be"
            //   , mensagemParaEnviar).ContinueWith(
            //   requestTask =>
            //       {
            //           Console.WriteLine("requestTask");
            //           HttpResponseMessage response = requestTask.Result;
            //           response.EnsureSuccessStatusCode();

            //           response.Content.ReadAsAsync<ApiResponseMessage>().ContinueWith(
            //               readTask =>
            //                   {
            //                       Console.WriteLine("readTask");
            //                       Assert.AreEqual("200", readTask.Result.Retorno.Codigo);
            //                   });
            //       });

            Console.WriteLine("Fim do Teste");
        }
        public ApiResponseMessage EfetuarComunicacao(ProcessoDeCotacao processo)
        {
            //seleciona os participantes que preencheram a cotação (cotacaoMaterial != null)
            //e que ainda não possuem número da cotação. O esperado é que nenhuma das cotações possuem NumeroDaCotacao.
            //Isto acontecerá apenas se ocorrer erro na comunicação com o sap em para uns dos fornecedores do processo
            //e antes deste fornecedor, a comunicação tenha sido realizada com sucesso para outro fornecedor.
            //Neste cenário o fornecedor anterior já tem um número de cotação e não deve ser mais enviado para o SAP,
            //pois isto faria com que fosse criado duas cotações para o mesmo fornecedor e item de requisição, o que é errado.
            var participantesSemCotacaoNoSap = (from fp in processo.FornecedoresParticipantes
                                                let cotacaoMaterial = (CotacaoMaterial)fp.Cotacao.CastEntity()
                                                                      where string.IsNullOrEmpty(fp.NumeroDaCotacao)
                                                                      select fp);

            foreach (var fornecedorParticipante in participantesSemCotacaoNoSap)
            {
                var itens = new ListaProcessoDeCotacaoDeMaterialAberturaItemVm();
                itens.AddRange(from ProcessoDeCotacaoDeMaterialItem item in processo.Itens
                               select new ProcessoDeCotacaoDeMaterialAberturaItemVm
                {
                    NumeroRequisicao = item.RequisicaoDeCompra.Numero,
                    NumeroItem       = item.RequisicaoDeCompra.NumeroItem
                });

                var vm = new ProcessoDeCotacaoDeMaterialAberturaComunicacaoSapVm
                {
                    IdProcessoCotacao = processo.Id,
                    CodigoFornecedor  = fornecedorParticipante.Fornecedor.Codigo,
                    DataLimiteRetorno = processo.DataLimiteDeRetorno.Value.ToString("dd.MM.yyyy"),
                    Itens             = itens
                };

                //comentado enquanto o serviço do SAP não é implementado
                ApiResponseMessage resposta = _comunicacaoSap.EnviarMensagem("/HttpAdapter/HttpMessageServlet?senderParty=PORTAL&senderService=HTTP&interfaceNamespace=http://portal.bsbios.com.br/&interface=si_cadCotacaoAbertura_portal&qos=be", vm);
                if (resposta.Retorno.Codigo.Equals("200") && !string.IsNullOrEmpty(resposta.Retorno.Texto))
                {
                    fornecedorParticipante.AtualizarNumeroDaCotacao(resposta.Retorno.Texto);
                }
                else
                {
                    throw new Exception("Ocorreu um erro ao enviar os dados do Processo de Cotação para o SAP.");
                }
            }
            return(new ApiResponseMessage()
            {
                Retorno = new Retorno()
                {
                    Codigo = "200", Texto = "OK"
                }
            });
        }
        /// <summary>
        /// Tries to read <see cref="HttpContent"/> as an <see cref="ApiResponseMessage{TMessageType}"/>
        /// with <see cref="ApiResponseMessage{TMessageType}.Message"/> set to <typeparam name="TExpectedMessageType"/>
        /// as a synchronous operation
        /// </summary>
        /// <typeparam name="TExpectedMessageType"></typeparam>
        /// <param name="content"></param>
        /// <param name="apiResponseMessage"></param>
        /// <param name="contractResolver">Which contract resolver to use for deserializing Json. Default is <see cref="CamelCasePropertyNamesContractResolver"/></param>
        /// <returns><see cref="ApiResponseMessage{TMessageType}"/> with the <see cref="ApiResponseMessage{TMessageType}.Message"/>
        /// property set to <typeparam name="TExpectedMessageType"/></returns>
        public static bool TryReadAsApiResponseMessage <TExpectedMessageType>(
            this HttpContent content,
            out ApiResponseMessage <TExpectedMessageType> apiResponseMessage,
            IContractResolver contractResolver)
        {
            var json   = content.ReadAsStringAsync().Result;
            var parsed = json.TryParse <ApiResponseMessage <TExpectedMessageType> >();

            if (parsed == null)
            {
                apiResponseMessage = default(ApiResponseMessage <TExpectedMessageType>);
                return(false);
            }

            apiResponseMessage = parsed;
            return(true);
        }
Esempio n. 13
0
        public ApiResponseMessage <List <ProductViewModel> > GetProductGroupDateTotalUsageAmount(string usageaccountid, int pageCnt, int pageRows)
        {
            Logger.Info("Start API GetProductGroupDateTotalUsageAmount List");
            if (usageaccountid == null)
            {
                var resp = new ApiResponseMessage <List <ProductViewModel> >();
                resp.StatusCode = HttpStatusCode.BadRequest;
                resp.Message.Add("Request data is empty");
                return(resp);
            }

            ApiResponseMessage <List <ProductViewModel> > response = new ApiResponseMessage <List <ProductViewModel> >();

            response = ValuesHandler.GetProductGroupDateTotalUsageAmountById(usageaccountid, pageCnt, pageRows);
            Logger.Info("End API GetProductGroupDateTotalUsageAmount List");
            return(response);
        }
Esempio n. 14
0
        public void ConsigoEnviarMensagemDeFechamentoDoProcessoDeCotacaoDeFreteUtilizandoServico()
        {
            ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComCadastrosExistentes();
            var fornecedor = new Fornecedor("0000101815", "AIRGAS COM E TRANSP LTDA", "*****@*****.**", "", "Passo Fundo", "RS", true);

            processo.AdicionarFornecedor(fornecedor);
            processo.Abrir(DefaultObjects.ObtemUsuarioPadrao());
            CotacaoFrete cotacaoFrete = processo.InformarCotacao(fornecedor.Codigo, 100, 110, "obs");

            processo.SelecionarCotacao(cotacaoFrete.Id, 50);
            var comunicacaoSap = ObjectFactory.GetInstance <IComunicacaoSap <ListaProcessoDeCotacaoDeFreteFechamento> >();
            //var credencialSap = ObjectFactory.GetInstance<CredencialSap>();
            var comunicaoFechamento     = new ComunicacaoFechamentoProcessoCotacaoFrete(comunicacaoSap);
            ApiResponseMessage mensagem = comunicaoFechamento.EfetuarComunicacao(processo);

            Assert.AreEqual("S", mensagem.Retorno.Codigo);
        }
Esempio n. 15
0
        public override void OnAuthorization(HttpActionContext actionContext)
        {
            // 匿名访问验证
            var anonymousAction = actionContext.ActionDescriptor.GetCustomAttributes <AllowAnonymousAttribute>();

            if (!anonymousAction.Any())
            {
                ApiResponseMessage result = null;
                // token存在验证
                var token = actionContext.ControllerContext.Request.Headers.FirstOrDefault(x => x.Key == "token").Value.FirstOrDefault();
                if (string.IsNullOrEmpty(token))
                {
                    result = new ApiResponseMessage(ResultStatus.UnAuthorize, "未登录");
                }
                else
                {
                    token = SecurityHelper.DecryptDES(token, Common.ConstFiled.OpenIdEncryptKey);
                    //token合法验证
                    var sign = CacheHelper.GetCache(token);
                    if (sign == null)
                    {
                        var user = _repositoryFactory.IWeChatMember.Single(x => x.OpenId == token);
                        if (user == null)
                        {
                            result = new ApiResponseMessage(ResultStatus.UnAuthorize, "未注册用户");
                        }
                        else
                        {
                            CacheHelper.SetCache(token, user, TimeSpan.FromHours(5));
                        }
                    }
                }
                if (result != null)
                {
                    var response = new HttpResponseMessage()
                    {
                        StatusCode = System.Net.HttpStatusCode.Unauthorized
                    };
                    response.Content = new ObjectContent <ApiResponseMessage>(result,
                                                                              actionContext.ActionDescriptor.Configuration.Formatters.JsonFormatter);
                    actionContext.Response = response;
                    return;
                }
            }
        }
Esempio n. 16
0
        public IActionResult GetAuthors()
        {
            ApiResponseMessage <List <AuthorDTO> > apiResponseMessage = new ApiResponseMessage <List <AuthorDTO> >()
            {
                Succeed = false, Message = "", Data = null
            };

            var authorsModels = _mapper.Map <List <AuthorDTO> >(_authorRepository.GetAuthors());

            if (authorsModels.Count > 0)
            {
                apiResponseMessage.Succeed = true;
                apiResponseMessage.Message = $"Islem basarili.";
                apiResponseMessage.Data    = authorsModels;
            }

            return(Ok(apiResponseMessage));
        }
Esempio n. 17
0
        public IActionResult Post([FromBody] OrderDTO order)
        {
            var returnMessage = new ApiResponseMessage();

            try
            {
                var id = this._orderService.Save(order);
                returnMessage.Success = true;
                returnMessage.Message = "Order " + id + " created";
                return(Ok(returnMessage));
            }
            catch (ProductNotSupportedException ex)
            {
                returnMessage.Success = false;
                returnMessage.Message = ex.Message;
                return(BadRequest(returnMessage));
            }
        }
Esempio n. 18
0
        public ApiResponseMessage <T> Request <T>(string url, HttpMethod method, StringContent content = null, ContentResponseType?contentResponseType = null, IDictionary <string, string> defaultRequestHeaders = null, IList <MediaTypeWithQualityHeaderValue> acceptRequestHeaders = null)
        {
            HttpRequestMessage message = new HttpRequestMessage(method, url);
            var httpClient             = new HttpClient();

            foreach (var header in defaultRequestHeaders ?? Enumerable.Empty <KeyValuePair <string, string> >())
            {
                httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
            }
            foreach (var acceptHeader in acceptRequestHeaders ?? Enumerable.Empty <MediaTypeWithQualityHeaderValue>())
            {
                httpClient.DefaultRequestHeaders.Accept.Add(acceptHeader);
            }
            if (content != null)
            {
                message.Content = content;
            }
            var responseMessage = httpClient.SendAsync(message).Result;
            ApiResponseMessage <T> apiResponseMessage = new ApiResponseMessage <T>()
            {
                ResponseMessage = responseMessage
            };

            if (responseMessage.IsSuccessStatusCode)
            {
                if (contentResponseType.HasValue && contentResponseType.Value == ContentResponseType.JsonContent)
                {
                    string jsonString     = responseMessage.Content.ReadAsStringAsync().Result;
                    var    responseObject = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(jsonString);
                    apiResponseMessage.ReponseObject = responseObject;
                }
                else if (contentResponseType.HasValue && contentResponseType.Value == ContentResponseType.TextContent)
                {
                    string textString = responseMessage.Content.ReadAsStringAsync().Result;
                    apiResponseMessage.ReponseObject = (dynamic)textString;
                }
                else if (contentResponseType.HasValue && contentResponseType.Value == ContentResponseType.XmlContent)
                {
                    string xmlString = responseMessage.Content.ReadAsStringAsync().Result;
                    apiResponseMessage.ReponseObject = xmlString.XmlDeserialize <T>();
                }
            }
            return(apiResponseMessage);
        }
Esempio n. 19
0
        public IActionResult GetArticles()
        {
            ApiResponseMessage <List <ArticleDTO> > apiResponseMessage = new ApiResponseMessage <List <ArticleDTO> >()
            {
                Succeed = false, Message = "", Data = null
            };

            var model = _mapper.Map <List <ArticleDTO> >(_articleRepository.GetArticles());

            if (model.Count > 0)
            {
                apiResponseMessage.Succeed = true;
                apiResponseMessage.Message = $"Islem basarili donen kayit sayisi: {model.Count}";
                apiResponseMessage.Data    = model;
            }


            return(Ok(apiResponseMessage));
        }
        /// <summary>
        /// GetProductGroupDateTotalUsageAmountById
        /// </summary>
        /// <param name="usageaccountid">usageaccountid</param>
        /// <returns> ApiResponseMessage  ProductViewModel List</returns>
        public static ApiResponseMessage <List <ProductViewModel> > GetProductGroupDateTotalUsageAmountById(string usageaccountid, int pageCnt, int pageRows)
        {
            Logger.Debug("Start GetProductGroupDateTotalUsageAmountById");
            ApiResponseMessage <List <ProductViewModel> > response = new ApiResponseMessage <List <ProductViewModel> >();
            List <ProductViewModel> result = response.Data;

            try
            {
                response            = GetProductGroupDateTotalUsageAmount(usageaccountid, pageCnt, pageRows);
                response.StatusCode = System.Net.HttpStatusCode.OK;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                response.StatusCode = System.Net.HttpStatusCode.InternalServerError;
                response.Errors.Add(new System.Web.Http.HttpError(ex, false));
            }
            Logger.Debug("End GetProductGroupDateTotalUsageAmountById");
            return(response);
        }
        /// <summary>
        /// GetProductGroupTotalUsageAmount
        /// </summary>
        /// <param name="pageCnt">查詢的頁數</param>
        /// <param name="pageRows">每頁筆數</param>
        /// <returns> ApiResponseMessageProductViewModel List</returns>
        private static ApiResponseMessage <List <ProductViewModel> > GetProductGroupTotalUsageAmount(string usageaccountid, int pageCnt, int pageRows)
        {
            var result     = new ApiResponseMessage <List <ProductViewModel> >();
            var resultData = GetProducts().Join(GetLineItems(), p => p.Id, l => l.ProductId, (p, l) => new { p, l })
                             .Where(x => x.l.UsageAccountId == usageaccountid)
                             .GroupBy(g => g.p.ProductName)
                             .Select(s => new ProductViewModel
            {
                ProductName      = s.Key,
                TotalUsageAmount = s.Sum(t => t.l.UnblendedCost)
            });

            if (pageCnt != 0 && pageRows != 0)
            {
                resultData.Skip((pageCnt - 1) * pageRows).Take(pageRows);
            }

            result.Data = resultData.ToList();
            return(result);
        }
Esempio n. 22
0
        public IActionResult GetArticlesForAuthor(Guid authorId)
        {
            ApiResponseMessage <List <ArticleDTO> > apiResponseMessage = new ApiResponseMessage <List <ArticleDTO> >()
            {
                Succeed = false, Message = "", Data = null
            };

            var articlesForAuthor = _mapper.Map <List <ArticleDTO> >(_articleRepository.GetArticlesForAuthor(authorId));

            if (articlesForAuthor != null)
            {
                apiResponseMessage.Succeed = true;
                apiResponseMessage.Message = $"Islem basarili GetArticlesForAuthor";
                apiResponseMessage.Data    = articlesForAuthor;
            }
            else
            {
                return(NotFound());
            }

            return(Ok(apiResponseMessage));
        }
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            var modelState = actionContext.ModelState;

            if (!modelState.IsValid)
            {
                string error = string.Empty;
                foreach (var key in modelState.Keys)
                {
                    var state = modelState[key];
                    if (state.Errors.Any())
                    {
                        var modelError = state.Errors.First();
                        if (modelError.Exception != null)
                        {
                            error = modelError.Exception.Message;
                        }
                        else
                        {
                            error = modelError.ErrorMessage;
                            if (error.Length < 1)
                            {
                                error = $"参数格式验证失败:[{key}]";
                            }
                        }
                        break;
                    }
                }
                ApiResponseMessage response = new ApiResponseMessage()
                {
                    Status = ResultStatus.ParamError, Message = error
                };
                actionContext.Response = new HttpResponseMessage(HttpStatusCode.Accepted)
                {
                    Content = new ObjectContent <ApiResponseMessage>(response,
                                                                     actionContext.ActionDescriptor.Configuration.Formatters.JsonFormatter)
                };
            }
        }
        public async Task Trying_To_Read_Valid_CamelCase_Json_As_ApiResponseMessage_From_HttpContent_Async_Is_Successful()
        {
            // Arrange
            HttpContent httpContent = new StringContent(
                @"{ ""code"" : 200,
                    ""message"": {""header"" : ""Test header"", ""body"" : ""Test body""}, 
                    ""info"" : ""Extra info""
                  }");


            var expectedApiResponseMessage = new ApiResponseMessage <ExampleMessageType>()
            {
                Code    = (HttpStatusCode)200,
                Message = new ExampleMessageType {
                    Header = "Test header", Body = "Test body"
                },
                Info = "Extra info"
            };

            // Act
            ApiResponseMessage <ExampleMessageType> actualApiResponseMessage = null;

            var result = await httpContent.TryReadAsApiResponseMessageAsync <ExampleMessageType>();

            actualApiResponseMessage = result.ExpectedApiResponseMessage;

            // Assert

            if (!result.Success || actualApiResponseMessage == null)
            {
                Assert.Fail();
            }

            Assert.AreEqual(expectedApiResponseMessage.Code, actualApiResponseMessage.Code);
            Assert.AreEqual(expectedApiResponseMessage.Message.Header, actualApiResponseMessage.Message.Header);
            Assert.AreEqual(expectedApiResponseMessage.Message.Body, actualApiResponseMessage.Message.Body);
            Assert.AreEqual(expectedApiResponseMessage.Info, actualApiResponseMessage.Info);
        }
Esempio n. 25
0
        //para funcionar o binding de um xml para um array ou list a classe correspondente ao parâmetro
        //deve ser decorada com a propriedade "[DataContract]" e as propriedades da classe que precisam
        //ser serializadas devem ser decoradas com a propriedade "[DataMember]"
        //Se na origem da requisição o dado for um json isto não é necessário.
        //Ver explicação em: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
        public HttpResponseMessage NovaRequisicao([FromBody] RequisicaoDeCompraVm requisicaoDeCompraVm)
        {
            ApiResponseMessage retornoPortal;

            try
            {
                _cadastroRequisicaoCompra.NovaRequisicao(requisicaoDeCompraVm);
                retornoPortal = new ApiResponseMessage()
                {
                    Retorno = new Retorno()
                    {
                        Codigo = "200", Texto = "Requisição de compra criada com sucesso."
                    }
                };
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }

            catch (Exception ex)
            {
                retornoPortal = ExceptionUtil.GeraExecaoDeErroParaWebApi(ex);
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }
        }
        //para funcionar o binding de um xml para um array ou list a classe correspondente ao parâmetro 
        //deve ser decorada com a propriedade "[DataContract]" e as propriedades da classe que precisam
        //ser serializadas devem ser decoradas com a propriedade "[DataMember]"
        //Se na origem da requisição o dado for um json isto não é necessário.
        //Ver explicação em: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
        public HttpResponseMessage PostMultiplo([FromBody] ListaFornecedores fornecedores)
        {
            ApiResponseMessage retornoPortal;
            try
            {
                var fornecedoresComNome = fornecedores.Where(x => !string.IsNullOrEmpty(x.Nome)).ToList();
                int quantidadeDeFornecedoresSemNome = fornecedores.Count - fornecedoresComNome.Count;
                _cadastroFornecedor.AtualizarFornecedores(fornecedoresComNome);
                retornoPortal = new ApiResponseMessage()
                    {
                        Retorno = new Retorno() {Codigo = "200", Texto = fornecedoresComNome.Count + " fornecedores atualizados." +
                        (quantidadeDeFornecedoresSemNome > 0 ? quantidadeDeFornecedoresSemNome +  " fornecedores não atualizados: "  + 
                        string.Join(", ",fornecedores.Where(x => string.IsNullOrEmpty(x.Nome)).Select(f => f.Codigo)) + ".": "") }
                    };
                return Request.CreateResponse(HttpStatusCode.OK, retornoPortal);
            }

            catch (Exception ex)
            {
                retornoPortal = ExceptionUtil.GeraExecaoDeErroParaWebApi(ex);
                return Request.CreateResponse(HttpStatusCode.OK, retornoPortal);
            }
        }
Esempio n. 27
0
        //para funcionar o binding de um xml para um array ou list a classe correspondente ao parâmetro
        //deve ser decorada com a propriedade "[DataContract]" e as propriedades da classe que precisam
        //ser serializadas devem ser decoradas com a propriedade "[DataMember]"
        //Se na origem da requisição o dado for um json isto não é necessário.
        //Ver explicação em: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
        public HttpResponseMessage PostMultiplo([FromBody] ListaIva ivas)
        {
            ApiResponseMessage retornoPortal;

            try
            {
                _cadastroIva.AtualizarIvas(ivas);
                retornoPortal = new ApiResponseMessage()
                {
                    Retorno = new Retorno()
                    {
                        Codigo = "200", Texto = ivas.Count + " Ivas atualizados"
                    }
                };
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }

            catch (Exception ex)
            {
                retornoPortal = ExceptionUtil.GeraExecaoDeErroParaWebApi(ex);
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }
        }
Esempio n. 28
0
        //para funcionar o binding de um xml para um array ou list a classe correspondente ao parâmetro
        //deve ser decorada com a propriedade "[DataContract]" e as propriedades da classe que precisam
        //ser serializadas devem ser decoradas com a propriedade "[DataMember]"
        //Se na origem da requisição o dado for um json isto não é necessário.
        //Ver explicação em: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
        public HttpResponseMessage PostMultiplo([FromBody] ListaUnidadesDeMedida unidadesDeMedida)
        {
            ApiResponseMessage retornoPortal;

            try
            {
                _cadastroUnidadeDeMedida.AtualizarUnidadesDeMedida(unidadesDeMedida);
                retornoPortal = new ApiResponseMessage()
                {
                    Retorno = new Retorno()
                    {
                        Codigo = "200", Texto = unidadesDeMedida.Count + " unidades de medida atualizadas"
                    }
                };
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }

            catch (Exception ex)
            {
                retornoPortal = ExceptionUtil.GeraExecaoDeErroParaWebApi(ex);
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }
        }
        //para funcionar o binding de um xml para um array ou list a classe correspondente ao parâmetro
        //deve ser decorada com a propriedade "[DataContract]" e as propriedades da classe que precisam
        //ser serializadas devem ser decoradas com a propriedade "[DataMember]"
        //Se na origem da requisição o dado for um json isto não é necessário.
        //Ver explicação em: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
        public HttpResponseMessage PostMultiplo([FromBody] ListaCondicaoPagamento condicoesDePagamento)
        {
            ApiResponseMessage retornoPortal;

            try
            {
                _cadastroCondicaoPagamento.AtualizarCondicoesDePagamento(condicoesDePagamento);
                retornoPortal = new ApiResponseMessage()
                {
                    Retorno = new Retorno()
                    {
                        Codigo = "200", Texto = condicoesDePagamento.Count + " condições de pagamento atualizadas"
                    }
                };
                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }

            catch (Exception ex)
            {
                retornoPortal = ExceptionUtil.GeraExecaoDeErroParaWebApi(ex);

                return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal));
            }
        }
Esempio n. 30
0
        protected async Task <OkObjectResult> ResponseData(bool isSuccess, dynamic dataResponse, ApiResponseMessage message)
        {
            ResponseViewModel response = new ResponseViewModel()
            {
                IsSuccess = isSuccess,
                Message   = message.Message,
                Data      = dataResponse
            };

            return(await Task.FromResult(Ok(response.ToJsonCamel())));
        }