예제 #1
0
        public static PerguntasERespostasDisplayRS ValidarPerguntasERespostasDisplayRQ(this PerguntasERespostasDisplayRQ request, IClienteRepository clienteService)
        {
            PerguntasERespostasDisplayRS response = new PerguntasERespostasDisplayRS();

            response.Mensagens        = new List <Mensagem>();
            response.ProtocoloRetorno = Guid.NewGuid();

            if (response.Mensagens.Count == 0 && (request != null))
            {
                if (request.CodCliente.IsEmptyOrWhiteSpace())
                {
                    response.AdicionarMensagemErro(CodigoMensagem.NAO_INFORMADO_ID_CLIENTE.CodigoErro, CodigoMensagem.NAO_INFORMADO_ID_CLIENTE.Descricao, TipoMensagem.ErroValidacao);
                }
                else
                {
                    var clienteExist = clienteService.Find(x => x.CodigoCliente == request.CodCliente);
                    if (clienteExist == null)
                    {
                        response.AdicionarMensagemErro(CodigoMensagem.ID_CLIENTE_NAO_EXISTE.CodigoErro, CodigoMensagem.ID_CLIENTE_NAO_EXISTE.Descricao, TipoMensagem.ErroValidacao);
                    }
                }
                if (string.IsNullOrEmpty(request.CodigoLoja))
                {
                    response.AdicionarMensagemErro(CodigoMensagem.NAO_INFORMADO_ID_LOJA.CodigoErro, CodigoMensagem.NAO_INFORMADO_ID_LOJA.Descricao, TipoMensagem.ErroValidacao);
                }
            }
            else
            {
                response.AdicionarMensagemErro(CodigoMensagem.REQUEST_INVALIDO.CodigoErro, CodigoMensagem.REQUEST_INVALIDO.Descricao, TipoMensagem.ErroValidacao);
            }

            response.Valido = response.Mensagens.Count == 0;
            return(response);
        }
예제 #2
0
        public async Task <PerguntasERespostasDisplayRS> ObterDuvidas(PerguntasERespostasDisplayRQ request)
        {
            PerguntasERespostasDisplayRS response = request.ValidarPerguntasERespostasDisplayRQ(clienteService);

            try
            {
                if (response.Valido)
                {
                    if (response.Mensagens.All(m => m.Tipo == TipoMensagem.Negocio))
                    {
                        if (request.PageNumber == 0 || !request.Busca.IsEmptyOrWhiteSpace())
                        {
                            request.PageNumber = 1;
                        }
                        response = await qaRepository.ObterDuvidasAsync(request);
                    }
                }
            }
            catch (Exception ex)
            {
                var jsonRequest = JsonConvert.SerializeObject(request);
                logService.AdicionarLogErro("EnviarPergunta", 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);
        }
예제 #3
0
        // GET: QA
        public ActionResult Index(PerguntasERespostasDisplayRQ rq)
        {
            var model = new PerguntasERespostasDisplayRS();

            model.Produto = new ProdutoDTO();
            model.QA      = new List <Messages.Dtos.QA.QADTO>();

            var client = new RestClient("http://api.betaviews.com.br/PerguntasERespostas/");

            var request = new RestRequest("ObterDuvidas/", Method.GET);

            request.AddParameter("prdCodigo", rq.PrdCodigo);
            request.AddParameter("CodigoLoja", rq.CodigoLoja);
            request.AddParameter("codCliente", rq.CodCliente);
            request.AddParameter("PageNumber", rq.PageNumber);
            request.AddParameter("Filter", rq.Filter);
            request.AddParameter("Busca", rq.Busca);

            request.AddHeader("Authorization", rq.Authorization);

            var response = client.Execute <PerguntasERespostasDisplayRS>(request);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                model = response.Data;
                ViewBag.ClientSerachFor = rq.Busca;
            }



            return(View(model));
        }
예제 #4
0
        public async Task <PerguntasERespostasDisplayRS> ObterDuvidasAsync(PerguntasERespostasDisplayRQ request)
        {
            PerguntasERespostasDisplayRS response = new PerguntasERespostasDisplayRS();

            response.Mensagens        = new List <Mensagem>();
            response.ProtocoloRetorno = Guid.NewGuid();
            response.Loja             = new LojaDTO();
            response.Produto          = new ProdutoDTO();
            response.QA            = new List <QADTO>();
            response.Pagination    = new PaginationDTO();
            response.CodigoRetorno = 400;
            response.Valido        = false;
            using (var ctx = new DataBaseContext())
            {
                object[] xParams =
                {
                    new SqlParameter("@APIKey",           request.CodCliente),
                    new SqlParameter("@CodProduto",       request.PrdCodigo),
                    new SqlParameter("@CodLoja",          request.CodigoLoja),
                    new SqlParameter("@ActualPageNumber", request.PageNumber),
                    new SqlParameter("@Filtro",           request.Filter.DefaultIfNullOrEmpty("")),
                    new SqlParameter("@Busca",            request.Busca.DefaultIfNullOrEmpty(""))
                };

                var db = await ctx.Database.SqlQuery <QAListarPaginaDataMapper>("exec QAListarPagina @APIKey,@CodProduto,@CodLoja,@ActualPageNumber,@Filtro,@Busca", xParams).ToListAsync();

                if (db.Any())
                {
                    response.CodigoRetorno = 200;
                    //response.Loja.CodigoCliente = request.CodCliente;
                    response.Loja.LojaCodigo   = request.CodigoLoja;
                    response.Produto.PrdCodigo = request.PrdCodigo;
                    response.Produto.PrdNome   = db.FirstOrDefault().PrdNome;
                    //paginacao
                    response.Pagination.TotalRows         = db.FirstOrDefault().TotalRows;
                    response.Pagination.ActualPageNumber  = request.PageNumber;
                    response.Pagination.RowsPerPage       = (int)Math.Ceiling(response.Pagination.TotalRows / (double)10);
                    response.Pagination.BtnPaginationName = "btnQAGetPage";

                    foreach (var item in db)
                    {
                        bool respTerceiro = false;
                        if (item.RespTerceiroStatus == 1)
                        {
                            respTerceiro       = true;
                            item.NomeModerador = $"{item.RespTerceiroClienteNome}, nosso cliente.";
                        }
                        response.QA.Add(new QADTO
                        {
                            IDQuestion         = item.IdQA,
                            ClienteNome        = item.ClienteNome,
                            ClienteEmail       = item.ClienteEmail,
                            ClienteLocalizacao = item.ClienteLocalizacao,
                            Badge                     = item.Badge,
                            ClientePergunta           = item.ClientePergunta,
                            DtPergunta                = item.DtPergunta,
                            DTResposta                = item.DtResposta.HasValue? item.DtResposta.Value: DateTime.MinValue,
                            QtdRespAjudou             = item.QtdAjudou,
                            QtdRespNaoAjudou          = item.QtdNaoAjudou,
                            Resposta                  = item.Resposta,
                            RespostaNome              = item.NomeModerador,
                            RespondidoPorOutroCliente = respTerceiro,
                            IdQAStatus                = (StatusQAEnum)item.IdQAStatus
                        });
                    }
                }
            }

            return(response);
        }