public async Task <IActionResult> Resgate(ResgateViewModel viewModel) { HomeViewModel response; try { if (ModelState.IsValid) { var responseWish = await _productService.MakeRedemptionAsync(viewModel); if (responseWish.Valid) { @ViewBag.Sucesso = responseWish.Valid; } else { responseWish.Errors.ForEach(x => ModelState.AddModelError("", x)); } } } finally { response = await GetModelAsync(); } return(View("Index", response)); }
public ActionResult QuestaoConfirma([FromBody] ResgateViewModel viewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } return(PartialView("_QuestaoConfirma", viewModel)); }
public async Task <ResponseContract <ResgateViewModel> > MakeRedemptionAsync(ResgateViewModel request) { var response = new ResponseContract <ResgateViewModel>(); response.SetContent(request); try { var product = await _produtoCampanhaRepository.FindByAsync(request.ProdutoCampanhaId, request.CampanhaProdutoId, request.ProdutoId, _user.GetCampaignId(), _user.GetWallet()); if (product == null || product.CampanhaProduto == null) { response.AddError(Resources.ProductInvalid); return(response); } if (product.CampanhaProduto.Campanha == null || product.CampanhaProduto.Campanha.DesabilitaResgate.GetValueOrDefault()) { response.AddError(Resources.CampaignInvalid); return(response); } if (await _usuarioPremioRepository.HasPrizeAsync(_user.GetUserId())) { response.AddError(Resources.UserAlreadyRedemption); return(response); } _usuarioPremioRepository.BeginTransaction(); var usuarioPremio = new UsuarioPremio(_user.GetUserId(), request.CampanhaProdutoId, Enum.UsuarioPremioStatus.AGUARDANDO_PROCESSAMENTO.GetHashCode(), DateTime.Now); usuarioPremio = await _usuarioPremioRepository.InsertAsync(usuarioPremio); _usuarioPremioRepository.Commit(); response.SetValid(); _logger.LogWarning($"[UsuarioId: {_user.GetUserId()}] [CPF: {_user.GetUserDocument()}] realizou o resgate - [CampanhaProduto: {request.CampanhaProdutoId}] [Produto: {request.ProdutoId}] ."); await _authService.RefreshClaims(); } catch (Exception ex) { _logger.LogError(ex.Message, ex); _usuarioPremioRepository.Rollback(); response.AddError(Resources.ErrorOnMakeWish); } return(response); }