예제 #1
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);
        }