Пример #1
0
        // 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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        /// <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);
        }