Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
0
        public async Task <ResponseContract <UsuarioViewModel> > RegisterUpdateAsync(UsuarioViewModel viewModel)
        {
            var response = new ResponseContract <UsuarioViewModel>();

            try
            {
                viewModel.RemoveFormatacao();

                var model = await _usuarioRepository.FindAsync(_user.GetUserId());

                model.SetRegisterUpdate(_mapper.Map <Usuario>(viewModel));

                var valid = await _usuarioRepository.UpdateAsync(model);

                if (!valid)
                {
                    response.AddError(Resources.ErrorOnRegisterUpdate);
                    return(response);
                }

                var exist = await _enderecoAlteracaoRepository.ExistAsync(model.CampanhaId, model.UsuarioId);

                if (!exist)
                {
                    var enderecoAlteracao = new CampanhaUsuarioAtualizacaoCadastro
                    {
                        UsuarioId  = model.UsuarioId,
                        CampanhaId = model.CampanhaId
                    };

                    await _enderecoAlteracaoRepository.InsertAsync(enderecoAlteracao);

                    _logger.LogWarning($"[UsuarioId: {_user.GetUserDocument()}] [CPF: {_user.GetUserDocument()}] incluido na alteração de endereço pela primeira vez.");
                }

                _logger.LogWarning($"[UsuarioId: {_user.GetUserDocument()}] [CPF: {_user.GetUserDocument()}] realizou alteração no cadastro.");
                response.SetContent(_mapper.Map <UsuarioViewModel>(model));
                response.SetValid();
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex);
                response.AddError(Resources.ErrorOnRegisterUpdate);
            }

            return(response);
        }
Ejemplo n.º 3
0
        public async Task <ResponseContract <LoginViewModel> > LoginAsync(LoginViewModel viewModel)
        {
            var response = new ResponseContract <LoginViewModel>();

            try
            {
                var campanha = await _campanhaRepository.GetCurrentAsync(_campaignSettings.Name);

                if (campanha == null)
                {
                    response.AddError(Resources.CampaignInvalid);
                    return(response);
                }

                var usuario = await _usuarioRepository.GetByBirthDateAndDocumentAndCampaign(campanha.CampanhaId, viewModel.Cpf.RemoveFormatacao(), viewModel.DataNascimento);

                if (usuario == null)
                {
                    response.AddError(Resources.LoginInvalid);
                    return(response);
                }

                await GenerateClaimsAsync(usuario, campanha);

                _logger.LogWarning($"[UsuarioId: {usuario.UsuarioId}] [CPF: {usuario.Documento}] realizou login com sucesso.");

                await SetAccessControl(usuario);

                response.SetValid();
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex);
                response.AddError(Resources.ErrorOnLogin);
            }

            return(response);
        }