// GET: AvaliacaoProduto public ActionResult Index(ListarAvaliacoesProdutosRQ rq) { if (rq.ActualPageNumber == 0) { rq.ActualPageNumber = 1; } var model = new ListarAvaliacoesProdutosRS(); model.Avaliacoes = new List <Messages.Dtos.AvaliacaoDTO>(); model.AvaliacaoGeral = new Messages.Dtos.AvaliacaoTotaisDTO(); model.AvaliacaoNegativaMaisUtil = new Messages.Dtos.AvaliacaoDTO(); var client = new RestClient("http://api.betaviews.com.br/Avaliacoes/"); var request = new RestRequest("obter/produto/", Method.GET); request.AddParameter("prdCodigo", rq.PrdCodigo); request.AddParameter("codigoLoja", rq.CodigoLoja); request.AddParameter("actualPageNumber", rq.ActualPageNumber); request.AddParameter("Filtro", rq.Filtro); request.AddParameter("busca", rq.Busca); request.AddHeader("Authorization", rq.Authorization); var response = client.Execute <ListarAvaliacoesProdutosRS>(request); if (response.StatusCode == System.Net.HttpStatusCode.OK) { model = response.Data; //model.AvaliacaoGeral.AvaliacaoGeral = StringExtensions.RoundScore(model.AvaliacaoGeral.AvaliacaoGeral); } return(View(model)); }
public static ListarAvaliacoesProdutosRS ListarAvaliacoesProdutosValidar(this ListarAvaliacoesProdutosRQ request) { var response = new ListarAvaliacoesProdutosRS(); response.Mensagens = new System.Collections.Generic.List <Mensagem>(); response.ProtocoloRetorno = Guid.NewGuid(); if (response.Mensagens.Count == 0 && (request != null)) { if (string.IsNullOrEmpty(request.CodigoLoja)) { response.AdicionarMensagemErro(CodigoMensagem.NAO_INFORMADO_ID_LOJA.CodigoErro, CodigoMensagem.NAO_INFORMADO_ID_LOJA.Descricao, TipoMensagem.ErroValidacao); } if (string.IsNullOrEmpty(request.PrdCodigo)) { response.AdicionarMensagemErro("PrdCodigo", "PrdCodigo não informado", TipoMensagem.ErroValidacao); } if (request.ActualPageNumber <= 0) { response.AdicionarMensagemErro(CodigoMensagem.NAO_INFORMADO_CAMPOS.CodigoErro, CodigoMensagem.NAO_INFORMADO_CAMPOS.SetFormat("PageNumber").Descricao, TipoMensagem.ErroValidacao); } } else { response.AdicionarMensagemErro(CodigoMensagem.REQUEST_INVALIDO.CodigoErro, CodigoMensagem.REQUEST_INVALIDO.Descricao, TipoMensagem.ErroValidacao); } response.Valido = response.Mensagens.Count == 0; return(response); }
public async Task <ListarAvaliacoesProdutosRS> ListarAvaliacoesProdutos(ListarAvaliacoesProdutosRQ request) { ListarAvaliacoesProdutosRS response = request.ListarAvaliacoesProdutosValidar(); try { if (response.Valido) { if (response.Mensagens.All(m => m.Tipo == TipoMensagem.Negocio)) { response = await avaliacaoService.AvaliacoesProdutosListar(request); if (response.Avaliacoes.Any() && response.Avaliacoes.Any()) { //int totalAvaliacoes = response.AvaliacaoGeral.TotalAvaliacoes; //double mp = 0; //mp = mp + (response.AvaliacaoGeral.Total1Estrela * 1); //mp = mp + (response.AvaliacaoGeral.Total2Estrela * 2); //mp = mp + (response.AvaliacaoGeral.Total3Estrela * 3); //mp = mp + (response.AvaliacaoGeral.Total4Estrela * 4); //mp = mp + (response.AvaliacaoGeral.Total5Estrela * 5); ////MP = TOTAL ESTRELA * PESO(ESTRELA)//MEDIA = MP/total distribuido / //if (totalAvaliacoes > 0 && mp > 0) //{ // response.AvaliacaoGeral.TotalAvaliacoes = totalAvaliacoes; // double PontuacaoMedia = (mp / totalAvaliacoes); // response.AvaliacaoGeral.AvaliacaoGeral = Math.Round(PontuacaoMedia, 1); //} //if (response.AvaliacaoGeral.TotalRecomendaProduto > 0 && totalAvaliacoes > 0) //{ // response.AvaliacaoGeral.TotalRecomendaProduto = Math.Round(100 * response.AvaliacaoGeral.TotalRecomendaProduto / totalAvaliacoes); //} } else { response.Valido = false; response.AdicionarMensagemErro("sem resultados", "não tem avaliações", TipoMensagem.NenhumErro); } } } } catch (Exception ex) { var jsonRequest = JsonConvert.SerializeObject(request); logService.AdicionarLogErro("ListarAvaliacoesPagina", response.ProtocoloRetorno.ToString(), CodigoMensagem.ERRO_APLICAO.CodigoErro, CodigoMensagem.ERRO_APLICAO.SetFormat(string.Format("MENSAGEM={0}\nINNER_EXCEPTION={1}\nSTACK_TRACE={2}\n JSON REQUEST=={3}", ex.Message, (ex.InnerException != null ? ex.InnerException.ToString() : ""), ex.StackTrace.ToString()), jsonRequest).Descricao, TipoMensagem.ErroAplicacao); response.AdicionarMensagemErro(CodigoMensagem.ERRO_APLICAO_GENERICO.CodigoErro, CodigoMensagem.ERRO_APLICAO_GENERICO.Descricao, TipoMensagem.ErroAplicacao); response.StatusCode = System.Net.HttpStatusCode.BadRequest; } response.Valido = response.Mensagens.All(m => m.Tipo == TipoMensagem.Negocio); response.StatusCode = System.Net.HttpStatusCode.OK; return(response); }
/// <summary> /// Usado na listagem de avaliacoes de produtos /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <ListarAvaliacoesProdutosRS> AvaliacoesProdutosListar(ListarAvaliacoesProdutosRQ request) { var avaliacoes = new ListarAvaliacoesProdutosRS(); avaliacoes.Mensagens = new List <Mensagem>(); avaliacoes.ProtocoloRetorno = Guid.NewGuid(); avaliacoes.Loja = new LojaDTO(); avaliacoes.Produto = new ProdutoDTO(); avaliacoes.AvaliacaoGeral = new AvaliacaoTotaisDTO(); avaliacoes.Avaliacoes = new List <AvaliacaoDTO>(); avaliacoes.AvaliacaoNegativaMaisUtil = new AvaliacaoDTO(); avaliacoes.AvaliacaoPositivaMaisUtil = new AvaliacaoDTO(); avaliacoes.Pagination = new PaginationDTO(); using (var ctx = new DataBaseContext()) { object[] xParams = { new SqlParameter("@APIKey", request.Authorization), new SqlParameter("@CodProduto", request.PrdCodigo), new SqlParameter("@CodLoja", request.CodigoLoja), new SqlParameter("PageNumber", request.ActualPageNumber), new SqlParameter("@Filtro", request.Filtro.ToNullString()), new SqlParameter("@Busca", request.Busca.ToNullString()) }; var db = await ctx.Database.SqlQuery <AvalialiacaoListarPaginaDataMapper>("exec AvaliacaoProdutoListar @APIKey,@CodProduto,@CodLoja,@PageNumber,@Filtro,@Busca", xParams).ToListAsync(); if (db.Any()) { avaliacoes.Loja.LojaCodigo = request.CodigoLoja; avaliacoes.Loja.LojaNome = db.FirstOrDefault().LojaNome; avaliacoes.Produto.PrdCodigo = request.PrdCodigo; avaliacoes.Produto.PrdNome = db.FirstOrDefault().PrdNome; avaliacoes.AvaliacaoGeral.TotalAvaliacoes = db.FirstOrDefault().totalRows; avaliacoes.AvaliacaoGeral.Total1Estrela = db.FirstOrDefault().S1; avaliacoes.AvaliacaoGeral.Total2Estrela = db.FirstOrDefault().S2; avaliacoes.AvaliacaoGeral.Total3Estrela = db.FirstOrDefault().S3; avaliacoes.AvaliacaoGeral.Total4Estrela = db.FirstOrDefault().S4; avaliacoes.AvaliacaoGeral.Total5Estrela = db.FirstOrDefault().S5; avaliacoes.AvaliacaoGeral.TotalRecomendaProduto = db.FirstOrDefault().TotalRecomenda; avaliacoes.AvaliacaoGeral.AvaliacaoGeral = Math.Round(db.FirstOrDefault().AvaliacaoGeral, 1); avaliacoes.AvaliacaoGeral.PercentualRecomenda = (avaliacoes.AvaliacaoGeral.TotalRecomendaProduto > 0? Math.Round(100 * avaliacoes.AvaliacaoGeral.TotalRecomendaProduto / avaliacoes.AvaliacaoGeral.TotalAvaliacoes):0); avaliacoes.Pagination.TotalRows = db.FirstOrDefault().totalRows; avaliacoes.Pagination.ActualPageNumber = request.ActualPageNumber; avaliacoes.Pagination.RowsPerPage = (int)Math.Ceiling(avaliacoes.Pagination.TotalRows / (double)10); avaliacoes.Pagination.BtnPaginationName = "btnAvalicaoGetPage"; if (db.FirstOrDefault().AP_IDREVIEW > 0 && db.FirstOrDefault().ANP_IDREVIEW > 0) { avaliacoes.AvaliacaoPositivaMaisUtil.IdAvaliacao = db.FirstOrDefault().AP_IDREVIEW; avaliacoes.AvaliacaoPositivaMaisUtil.ClienteNome = db.FirstOrDefault().AP_NOME; avaliacoes.AvaliacaoPositivaMaisUtil.ClienteComentario = db.FirstOrDefault().AP_COMENT; avaliacoes.AvaliacaoPositivaMaisUtil.ClienteClassificacao = db.FirstOrDefault().AP_CLASS; avaliacoes.AvaliacaoNegativaMaisUtil.IdAvaliacao = db.FirstOrDefault().ANP_IDREVIEW; avaliacoes.AvaliacaoNegativaMaisUtil.ClienteNome = db.FirstOrDefault().ANP_NOME; avaliacoes.AvaliacaoNegativaMaisUtil.ClienteComentario = db.FirstOrDefault().ANP_COMENT; avaliacoes.AvaliacaoNegativaMaisUtil.ClienteClassificacao = db.FirstOrDefault().ANP_CLASS; } foreach (var item in db) { avaliacoes.Avaliacoes.Add(new AvaliacaoDTO { IdAvaliacao = item.IdAvaliacao, ClienteClassificacao = item.ClienteClassificacao, ClienteTitulo = item.ClienteTitulo, ClienteComentario = item.ClienteComentario, DataAvaliacao = item.ClienteDataAvaliacao, ClienteLocalizacao = item.ClienteLocalizacao, ClienteNome = item.ClienteNome, ClienteRecomenda = item.ClienteRecomenda, ClienteVerificado = item.ClienteVerificado, QtdAjudou = item.QtdAjudou, QtdNaoAjudou = item.QtdNaoAjudou }); } } } return(avaliacoes); }