Esempio n. 1
0
        public async Task <ResultDto <UserDto> > SalvarUsuario(UserDto userDto)
        {
            var userDtoValidate = new UserDtoValidate(userDto);

            if (!userDtoValidate.Validate())
            {
                return(ResultDto <UserDto> .Validation(userDtoValidate.Mensagens));
            }

            var usuarioJaCadastrado = await _userManager.Users.FirstOrDefaultAsync(c => c.Email == userDto.Email);

            if (usuarioJaCadastrado != null && usuarioJaCadastrado.IsGoogle)
            {
                return(ResultDto <UserDto> .Validation("Email já cadastrado via google!"));
            }
            else if (usuarioJaCadastrado != null && usuarioJaCadastrado.IsFacebook)
            {
                return(ResultDto <UserDto> .Validation("Email já cadastrado via facebook!"));
            }
            else if (usuarioJaCadastrado != null)
            {
                return(ResultDto <UserDto> .Validation("Email já cadastrado!"));
            }

            var user = new User(userDto);

            if (userDto.Role != "Administrador")
            {
                var userEstabelecimentos = new List <UserEstabelecimento> {
                    new UserEstabelecimento()
                    {
                        EstabelecimentoId = userDto.EstabelecimentoId
                    }
                };
                user.VincularEstabelecimento(userEstabelecimentos);
            }

            var result = await _userManager.CreateAsync(user, userDto.Senha);

            userDto.Id = user.Id;

            if (result.Succeeded && !string.IsNullOrWhiteSpace(userDto.Role))
            {
                var userDB = await _userManager.Users
                             .Include(x => x.UserEstabelecimentos)
                             .ThenInclude(x => x.Estabelecimento)
                             .FirstOrDefaultAsync(u => u.Id == userDto.Id);

                var estabelecimento = userDB.UserEstabelecimentos.FirstOrDefault().Estabelecimento;

                userDto.EstabelecimentoNomeUrl = estabelecimento.Url;
                userDto.EstabelecimentoNome    = estabelecimento.Nome;

                await _userManager.AddToRoleAsync(userDB, userDto.Role);

                _emailService.Send(userDto.Email, "Confirmação de cadastro", userDto.EstabelecimentoNome, EmailTemplate.ConfirmacaoCadastro(_configuration, userDto));
            }

            return(await Task.FromResult(ResultDto <UserDto> .Success(userDto)));
        }
Esempio n. 2
0
        public async Task <ResultDto <UserDto> > Salvar(UserDto userDto)
        {
            var userDtoValidate = new UserDtoValidate(userDto);

            if (!userDtoValidate.Validate())
            {
                return(ResultDto <UserDto> .Validation(userDtoValidate.Mensagens));
            }

            var usuarioJaCadastrado = await _userManager.Users.FirstOrDefaultAsync(c => c.Email == userDto.Email);

            if (usuarioJaCadastrado != null && usuarioJaCadastrado.IsGoogle)
            {
                return(ResultDto <UserDto> .Validation("Email já cadastrado via google!"));
            }
            else if (usuarioJaCadastrado != null && usuarioJaCadastrado.IsFacebook)
            {
                return(ResultDto <UserDto> .Validation("Email já cadastrado via facebook!"));
            }
            else if (usuarioJaCadastrado != null)
            {
                return(ResultDto <UserDto> .Validation("Email já cadastrado!"));
            }
            var userEstabelecimentos = new List <UserEstabelecimento> {
                new UserEstabelecimento()
                {
                    EstabelecimentoId = userDto.EstabelecimentoId
                }
            };
            var user = new User(userDto);

            user.VincularEstabelecimento(userEstabelecimentos);

            var result = await _userManager.CreateAsync(user, userDto.Senha);

            userDto.Id = user.Id;

            if (result.Succeeded && !string.IsNullOrWhiteSpace(userDto.Role))
            {
                var userDB = await _userManager.Users
                             .Include(x => x.UserEstabelecimentos)
                             .ThenInclude(x => x.Estabelecimento)
                             .FirstOrDefaultAsync(u => u.Id == userDto.Id);

                var estabelecimento = userDB.UserEstabelecimentos.FirstOrDefault().Estabelecimento;
                userDto.EstabelecimentoNomeUrl = estabelecimento.Url;
                userDto.EstabelecimentoNome    = estabelecimento.Nome;

                await _userManager.AddToRoleAsync(userDB, userDto.Role);
            }
            else if (result.Errors.Any(x => x.Code == "PasswordTooShort"))
            {
                return(ResultDto <UserDto> .Validation("senha deve ter no minimo 6 caracteres!"));
            }
            else
            {
                return(ResultDto <UserDto> .Validation("Cadastro inválido!"));
            }

            return(await Task.FromResult(ResultDto <UserDto> .Success(userDto)));
        }