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); }
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); }
// 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)); }
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); }