private void CriePastaUsuario(Usuario usuario)
        {
            try
            {
                if (usuario.IsTransient())
                {
                    throw new Exception("Usuario nao deve ser transiente.");
                }

                var configuracao = _configuracaoRepository.GetAll().Single();
                if (string.IsNullOrWhiteSpace(configuracao.PastaRaiz))
                {
                    throw new Exception("Pasta raiz nao configurada.");
                }

                if (!Directory.Exists(configuracao.PastaRaiz))
                {
                    throw new Exception("A pasta raiz nao existe.");
                }

                string path = Path.Combine(configuracao.PastaRaiz, usuario.NomeUsuario);

                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                    ConfigurePermissaoDePastaUsuario(path, usuario.NomeUsuario, true);
                }
            }
            catch
            {
                //nao foi possivel criar a pasta do usuario
            }
        }
        public void UpdateConfiguracaoServidorEmail(ConfiguracaoServidorEmailDTO configuracaoServidorEmailDTO)
        {
            try
            {
                if (configuracaoServidorEmailDTO == null)
                {
                    throw new ArgumentNullException("configuracaoServidorEmailDTO.");
                }

                ConfiguracaoServidorEmail persistido;

                var lista = _configuracaoServidorEmailRepository.GetAll().ToList();

                if (lista.Count == 0)
                {
                    GetConfiguracaoServidorEmail();
                    persistido = _configuracaoServidorEmailRepository.GetAll().Single();
                }
                else if (lista.Count == 1)
                {
                    persistido = lista.Single();
                }
                else
                {
                    throw new Exception("Existe mais de uma ConfiguracaoServidorEmail quando deveria existir só uma.");
                }

                string senha = persistido.Senha;
                if (!string.IsNullOrWhiteSpace(configuracaoServidorEmailDTO.Senha))
                {
                    senha = configuracaoServidorEmailDTO.Senha;
                }

                var corrente = ConfiguracaoServidorEmailFactory.CreateConfiguracaoServidorEmail(
                    configuracaoServidorEmailDTO.UtilizarEnvioDeEmail,
                    configuracaoServidorEmailDTO.Conta,
                    senha,
                    configuracaoServidorEmailDTO.Smtp,
                    configuracaoServidorEmailDTO.Porta,
                    configuracaoServidorEmailDTO.Ssl,
                    configuracaoServidorEmailDTO.PastaRaiz);

                corrente.Id = persistido.Id;
                AlterarConfiguracaoServidorEmail(persistido, corrente);
            }
            catch (Exception ex)
            {
                throw ManipuladorDeExcecao.TrateExcecao(ex);
            }
        }