Beispiel #1
0
        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));
        }
Beispiel #2
0
        public ActionResult QuestaoConfirma([FromBody] ResgateViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(PartialView("_QuestaoConfirma", viewModel));
        }
Beispiel #3
0
        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);
        }