public static void AtualizarUsuario(this Usuario usuario, UsuarioViewModel usuarioVM, Usuario usuarioAlt, IEncryptionService _encryptionService)
        {
            usuario.UsuarioAlteracao = usuarioAlt;
            usuario.UsuarioNome      = usuarioVM.UsuarioNome;
            usuario.UsuarioEmail     = usuarioVM.UsuarioEmail;
            var senhaChave = _encryptionService.CriaChave();

            if (usuarioVM.TelefoneUsuario != null)
            {
                var telefoneUsuario = usuario.Telefones.FirstOrDefault(x => x.Id == usuarioVM.TelefoneUsuario.Id);
                usuario.Telefones.Remove(telefoneUsuario);
                telefoneUsuario.DddCel       = usuarioVM.TelefoneUsuario.DddCel;
                telefoneUsuario.Celular      = usuarioVM.TelefoneUsuario.Celular;
                telefoneUsuario.DddTelComl   = usuarioVM.TelefoneUsuario.DddTelComl;
                telefoneUsuario.TelefoneComl = usuarioVM.TelefoneUsuario.TelefoneComl;
                telefoneUsuario.Contato      = usuarioVM.TelefoneUsuario.Contato;
                usuario.Telefones.Add(telefoneUsuario);
            }

            //var usuarioTelefone = usuario.Telefones.Where(x=>x.Id == )

            if (!String.IsNullOrEmpty(usuarioVM.Senha))
            {
                if (!String.IsNullOrEmpty(usuarioVM.NovaSenha))
                {
                    usuario.Senha = _encryptionService.EncryptSenha(usuarioVM.NovaSenha, senhaChave);
                }
                else
                {
                    usuario.Senha = _encryptionService.EncryptSenha(usuarioVM.Senha, senhaChave);
                }
                usuario.Chave = senhaChave;
            }

            usuario.Ativo     = usuarioVM.Ativo;
            usuario.FlgMaster = usuarioVM.FlgMaster;
        }
        public Usuario CreateUser(string nome,
                                  string email,
                                  string senha,
                                  int perfilId,
                                  int pessoaId,
                                  int usuarioCriacaoId,
                                  bool flgMaster,
                                  string DddTelComl   = null,
                                  string TelefoneComl = null,
                                  string DddCel       = null,
                                  string Celular      = null,
                                  string Contato      = null)
        {
            var existingUser = _usuarioRep.GetSingleByEmail(email, perfilId);

            if (existingUser != null)
            {
                throw new Exception("E-mail já cadastrado!");
            }

            var senhaChave = _encryptionService.CriaChave();


            var usuario = new Usuario()
            {
                UsuarioNome      = nome,
                Chave            = senhaChave,
                UsuarioEmail     = email,
                Ativo            = true,
                Senha            = _encryptionService.EncryptSenha(senha, senhaChave),
                DtCriacao        = DateTime.Now,
                UsuarioCriacaoId = usuarioCriacaoId,
                PessoaId         = pessoaId,
                PerfilId         = perfilId,
                FlgMaster        = flgMaster
            };

            _usuarioRep.Add(usuario);
            _unitOfWork.Commit();

            //usuario.Senha = senha;

            var telefone = new Telefone
            {
                UsuarioCriacao = usuario,
                DtCriacao      = DateTime.Now,
                DddTelComl     = DddTelComl,
                TelefoneComl   = TelefoneComl,
                DddCel         = DddCel,
                Celular        = Celular,
                Ativo          = true,
                Contato        = Contato,
                UsuarioTel     = usuario,
                PessoaId       = usuario.PessoaId
            };

            _telefoneRep.Add(telefone);
            _unitOfWork.Commit();


            return(usuario);
        }