Exemplo n.º 1
0
        public async Task <RetornoControllerViewModel <ExibicaoMensagemViewModel, List <Guid> > > AdicionarCliente(ClienteAdicionarViewModel clienteAdicionar, Guid idOrganizacao)
        {
            RetornoControllerViewModel <ExibicaoMensagemViewModel, List <Guid> > retornoController = new RetornoControllerViewModel <ExibicaoMensagemViewModel, List <Guid> >();

            var pessoa = await _unitOfWork.GetRepositoryAsync <Pessoa>().GetOne(x =>
                                                                                x.Id == clienteAdicionar.IdPessoa &&
                                                                                x.Organizacoes.Any(y => y.IdOrganizacao == idOrganizacao && y.IdPessoa == x.Id));


            if (pessoa == null)
            {
                ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                {
                    Cabecalho     = "Pessoa inválida",
                    MensagemCurta = "Pessoa inválida",
                    Detalhes      = "Pessoa não foi encontrada.",
                    StatusCode    = StatusCodes.Status400BadRequest
                };

                retornoController.ExibicaoMensagem = exibicaoMensagem;
                return(retornoController);
            }

            Cliente cliente = new Cliente()
            {
                Nome          = clienteAdicionar.Nome,
                DataCriacao   = DateTime.Now,
                DataEdicao    = DateTime.Now,
                IdOrganizacao = idOrganizacao
            };

            var existeCliente = await _unitOfWork.GetRepositoryAsync <Cliente>().GetOne(x => x.Id == clienteAdicionar.IdCliente && x.IdOrganizacao == idOrganizacao);

            if (existeCliente == null)
            {
                await _unitOfWork.GetRepositoryAsync <Cliente>().Insert(cliente);

                PessoaCliente pessoaCliente = new PessoaCliente()
                {
                    Cliente       = cliente,
                    Pessoa        = pessoa,
                    DataInicio    = clienteAdicionar.DataInicio,
                    DataFim       = clienteAdicionar.DataFim,
                    Status        = true,
                    DataCriacao   = DateTime.Now,
                    DataEdicao    = DateTime.Now,
                    IdOrganizacao = idOrganizacao
                };
                await _unitOfWork.GetRepositoryAsync <PessoaCliente>().Insert(pessoaCliente);
            }
            else
            {
                var existeRelacao = await _unitOfWork.GetRepositoryAsync <PessoaCliente>()
                                    .GetOne(x => x.IdPessoa == clienteAdicionar.IdPessoa &&
                                            x.IdCliente == existeCliente.Id &&
                                            x.IdOrganizacao == idOrganizacao);

                if (existeRelacao == null)
                {
                    PessoaCliente pessoaCliente = new PessoaCliente()
                    {
                        Cliente       = existeCliente,
                        Pessoa        = pessoa,
                        DataInicio    = clienteAdicionar.DataInicio,
                        DataFim       = clienteAdicionar.DataFim,
                        Status        = true,
                        DataCriacao   = DateTime.Now,
                        DataEdicao    = DateTime.Now,
                        IdOrganizacao = idOrganizacao
                    };
                    await _unitOfWork.GetRepositoryAsync <PessoaCliente>().Insert(pessoaCliente);

                    await _unitOfWork.SaveAsync();
                }
                else
                {
                    return(null);
                }
            }
            await _unitOfWork.SaveAsync();

            retornoController.Objeto = new List <Guid>()
            {
                { pessoa.Id }, { cliente.Id }
            };
            return(retornoController);
        }
Exemplo n.º 2
0
        public async Task <InserirSenhaResultadoViewModel> TrocarSenha(Guid idRecuperarSenha, string novaSenha)
        {
            var senha = _recuperarSenhaRepository.GetSingleOrDefault(x => x.Id == idRecuperarSenha);

            InserirSenhaResultadoViewModel inserirSenhaResultado = new InserirSenhaResultadoViewModel();

            if (senha == null)
            {
                ExibicaoMensagemViewModel exibicaoMensagemErro = new ExibicaoMensagemViewModel()
                {
                    Cabecalho     = "Recuperação de senha não está válida.",
                    MensagemCurta = "Recuperação de senha não está válida.",
                    Detalhes      = "A solicitação de senha não foi encontrada.",
                    StatusCode    = StatusCodes.Status204NoContent
                };

                inserirSenhaResultado.Resultado        = false;
                inserirSenhaResultado.ExibicaoMensagem = exibicaoMensagemErro;

                return(inserirSenhaResultado);
            }

            if (!senha.Ativo)
            {
                ExibicaoMensagemViewModel exibicaoMensagemErro = new ExibicaoMensagemViewModel()
                {
                    Cabecalho     = "Recuperação de senha não está válida.",
                    MensagemCurta = "Recuperação de senha não está válida.",
                    Detalhes      = "A solicitação de senha não está ativa.",
                    StatusCode    = StatusCodes.Status400BadRequest
                };

                inserirSenhaResultado.Resultado        = false;
                inserirSenhaResultado.ExibicaoMensagem = exibicaoMensagemErro;

                return(inserirSenhaResultado);
            }

            if (senha.DataExpiracao < DateTime.Now)
            {
                ExibicaoMensagemViewModel exibicaoMensagemErro = new ExibicaoMensagemViewModel()
                {
                    Cabecalho     = "Recuperação de senha expirada.",
                    MensagemCurta = "Recuperação de senha expirada.",
                    Detalhes      = "A solicitação de senha está expirada.",
                    StatusCode    = StatusCodes.Status404NotFound
                };

                inserirSenhaResultado.Resultado        = false;
                inserirSenhaResultado.ExibicaoMensagem = exibicaoMensagemErro;

                return(inserirSenhaResultado);
            }

            var usuario = _usuarioRepository.GetSingleOrDefault(x => x.Login == senha.Pessoa.Email);

            usuario.Senha = CriptoHashSha256.GetSha256Hash(novaSenha);

            senha.Ativo = false;

            _usuarioRepository.Update(usuario);
            _recuperarSenhaRepository.Update(senha);
            _usuarioRepository.Save();
            _recuperarSenhaRepository.Save();

            ExibicaoMensagemViewModel exibicaoMensagemSucesso = new ExibicaoMensagemViewModel()
            {
                Cabecalho     = "Alteração de senha concluida",
                MensagemCurta = "Alteração de senha concluída",
                Detalhes      = "Sua nova senha foi inserida com sucesso.",
                StatusCode    = StatusCodes.Status200OK
            };

            inserirSenhaResultado.Resultado        = true;
            inserirSenhaResultado.ExibicaoMensagem = exibicaoMensagemSucesso;

            return(inserirSenhaResultado);
        }
Exemplo n.º 3
0
        public async Task <RetornoControllerViewModel <ExibicaoMensagemViewModel, InserirSenhaResultadoViewModel> > ValidarRestaurarSenha(SenhasHashsViewModel senhasHashs)
        {
            RetornoControllerViewModel <ExibicaoMensagemViewModel, InserirSenhaResultadoViewModel> retornoController = new RetornoControllerViewModel <ExibicaoMensagemViewModel, InserirSenhaResultadoViewModel>();

            if (senhasHashs.Senha != senhasHashs.ConfirmarSenha)
            {
                ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                {
                    Cabecalho     = "Solicitação inválida",
                    MensagemCurta = "Solicitação inválida",
                    Detalhes      = "Senha e Confirmação de Senha não estão iguais.",
                    StatusCode    = StatusCodes.Status400BadRequest
                };

                retornoController.ExibicaoMensagem = exibicaoMensagem;

                return(retornoController);
            }

            if (string.IsNullOrEmpty(senhasHashs.IdRecuperarSenhaHash) || string.IsNullOrEmpty(senhasHashs.TokenHash))
            {
                ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                {
                    Cabecalho     = "Solicitação inválida",
                    MensagemCurta = "Solicitação inválida",
                    Detalhes      = "Acesse a página de login e solicte a criação de um novo usuário.",
                    StatusCode    = StatusCodes.Status404NotFound
                };

                retornoController.ExibicaoMensagem = exibicaoMensagem;

                return(retornoController);
            }

            try
            {
                var idRecuperarSenhaHashStr = Base64.Decode(senhasHashs.IdRecuperarSenhaHash, true);
                var tokenStr = Base64.Decode(senhasHashs.TokenHash, true);

                Guid idRecuperarSenha;

                if (!Guid.TryParse(idRecuperarSenhaHashStr, out idRecuperarSenha))
                {
                    ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                    {
                        Cabecalho     = "Solicitação inválida",
                        MensagemCurta = "Solicitação inválida",
                        Detalhes      = "Acesse a página de login e solicte a criação de um novo usuário.",
                        StatusCode    = StatusCodes.Status400BadRequest
                    };

                    retornoController.ExibicaoMensagem = exibicaoMensagem;

                    return(retornoController);
                }

                var recuperarSenha = await _unitOfWork.GetRepositoryAsync <RecuperarSenha>().GetOne(x => x.Id == idRecuperarSenha && x.Token == tokenStr);

                if (recuperarSenha == null)
                {
                    ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                    {
                        Cabecalho     = "Solicitação inválida",
                        MensagemCurta = "Solicitação inválida",
                        Detalhes      = "Acesse a página de login e solicte a criação de um novo usuário.",
                        StatusCode    = StatusCodes.Status204NoContent
                    };
                    retornoController.ExibicaoMensagem = exibicaoMensagem;

                    return(retornoController);
                }

                var usuario = _usuarioRepository.GetSingleOrDefault(x => x.Login == recuperarSenha.Pessoa.Email);
                if (usuario == null || string.IsNullOrEmpty(usuario.Senha))
                {
                    ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                    {
                        Cabecalho     = "Solicitação inválida",
                        MensagemCurta = "Solicitação inválida",
                        Detalhes      = "Não foi cadastrada uma senha inicial.",
                        StatusCode    = StatusCodes.Status400BadRequest
                    };
                    retornoController.ExibicaoMensagem = exibicaoMensagem;

                    return(retornoController);
                }

                if (recuperarSenha.Ativo == false || recuperarSenha.DataExpiracao < DateTime.Now)
                {
                    ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                    {
                        Cabecalho     = "Solicitação inválida",
                        MensagemCurta = "Solicitação inválida",
                        Detalhes      = "Acesse a página de login e solicte a criação de um novo usuário.",
                        StatusCode    = StatusCodes.Status404NotFound
                    };
                    retornoController.ExibicaoMensagem = exibicaoMensagem;

                    return(retornoController);
                }

                retornoController.Objeto = await TrocarSenha(recuperarSenha.Id, senhasHashs.Senha);

                return(retornoController);
            }
            catch (Exception e)
            {
                ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                {
                    Cabecalho     = "Ocorreu um erro",
                    MensagemCurta = "Ocorreu um erro",
                    Detalhes      = e.Message,
                    StatusCode    = StatusCodes.Status400BadRequest
                };

                retornoController.ExibicaoMensagem = exibicaoMensagem;

                return(retornoController);
            }
        }
Exemplo n.º 4
0
        public async Task <RetornoControllerViewModel <ExibicaoMensagemViewModel, Guid> > RecuperarSenha(RecebeEmailViewModel email)
        {
            var pessoa        = _pessoaRepository.GetSingleOrDefault(x => x.Email == email.Email && x.Status);
            var usuarioPessoa = _usuarioRepository.GetSingleOrDefault(x => x.Login == email.Email && x.Ativo);

            RetornoControllerViewModel <ExibicaoMensagemViewModel, Guid> retornoController = new RetornoControllerViewModel <ExibicaoMensagemViewModel, Guid>();

            if (pessoa == null)
            {
                ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                {
                    Cabecalho     = "E-mail inválido",
                    MensagemCurta = "E-mail inválido",
                    Detalhes      = "Este e-mail já está sendo utilizado.",
                    StatusCode    = StatusCodes.Status400BadRequest
                };

                retornoController.ExibicaoMensagem = exibicaoMensagem;
                return(retornoController);
            }

            if (usuarioPessoa != null && usuarioPessoa.Senha == null)
            {
                //var ultimoConvite = _conviteRepository.Find(x => x.Email == pessoa.Email).OrderByDescending(x => x.DataCriacao).FirstOrDefault();
                //var convite = await _pessoaService.CriarConvite(pessoa, pessoa.Id, ultimoConvite.IdOrganizacao);
                //var linkConvite = await _envioEmailService.GerarLink(convite.ConvitesHistorico.FirstOrDefault().Id,
                //                                        convite.ConvitesHistorico.FirstOrDefault().Token, "registro-pessoa");

                //var envioConvite = await _envioEmailService.EnvioConvite(convite, linkConvite);
                ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                {
                    Cabecalho     = "E-mail não ativado",
                    MensagemCurta = "Processo de Ativação de Cadastro em andamento",
                    Detalhes      = "Este e-mail não foi ativado por um convite",
                    StatusCode    = StatusCodes.Status200OK
                };

                retornoController.ExibicaoMensagem = exibicaoMensagem;
                return(retornoController);
            }

            //criar resetarPassword
            var recuperarSenha = await CriarRegRecuperarSenha(pessoa);

            if (recuperarSenha == null)
            {
                ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
                {
                    Cabecalho     = "Erro ao criar registro Recuperar Senha",
                    MensagemCurta = "Erro ao criar registro Recuperar Senha",
                    Detalhes      = "Não foi possível criar registro para Recuperar Senha.",
                    StatusCode    = StatusCodes.Status204NoContent
                };

                retornoController.ExibicaoMensagem = exibicaoMensagem;
                return(retornoController);
            }

            //pegar link do convite
            //var linkRecuperarSenha = await _envioEmailService.GerarLink(recuperarSenha.Id,
            //                                            recuperarSenha.Token, "recupera-senha");

            ////emailService
            //var envioRecuperarSenha = await _envioEmailService.EnvioRecuperarSenha(recuperarSenha, linkRecuperarSenha);

            //if (envioRecuperarSenha.Resposta == false)
            //{
            //ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel
            //{
            //    Cabecalho = "Erro ao enviar convite",
            //    MensagemCurta = "Erro ao enviar convite",
            //    Detalhes = envioRecuperarSenha.Mensagem,
            //    StatusCode = StatusCodes.Status500InternalServerError
            //};

            retornoController.ExibicaoMensagem = new ExibicaoMensagemViewModel();    //exibicaoMensagem;

            //    recuperarSenha.NotificacaoFoiEnviada = envioRecuperarSenha.Resposta;
            //    recuperarSenha.MensagemResultadoNotificacao = envioRecuperarSenha.Mensagem;

            //return retornoController;
            //}

            //recuperarSenha.NotificacaoFoiEnviada = envioRecuperarSenha.Resposta;
            //recuperarSenha.MensagemResultadoNotificacao = envioRecuperarSenha.Mensagem;

            await _unitOfWork.SaveAsync();

            retornoController.Objeto = recuperarSenha.Id;

            return(retornoController);
        }