public Usuario Registrar(UsuarioModelo usuario)
		{
			var transacaoAbertaAqui = false;

			try
			{
				transacaoAbertaAqui = _unidadeDeTrabalho.IniciarTransacao();

				var usuarioNovo = new Usuario(usuario.Nome, usuario.Email);

				usuarioNovo.AtribuirSenha(usuario.Senha, usuario.ConfirmacaoDaSenha);
				usuarioNovo.Validar();

				usuarioNovo.Valido = false; // Todos os usuários precisam confirmar seu cadastro para poderem acessar o sistema.

				var repositorioDeUsuario = _unidadeDeTrabalho.ObterRepositorio<Usuario>();

				repositorioDeUsuario.Incluir(usuarioNovo);

				_unidadeDeTrabalho.Salvar();

				return usuarioNovo;

			}
			catch (Exception ex)
			{
				_unidadeDeTrabalho.DescartarTransacao(transacaoAbertaAqui);

				EmailHelper.EnviarEmail("*****@*****.**", "Erro", ex.GetBaseException().ToString());

				throw new Exception("Erro ao tentar registrar este usuário.");

			}
			finally
			{
				_unidadeDeTrabalho.EfetivarTransacao(transacaoAbertaAqui);
			}

		}
		public Usuario Autenticar(UsuarioModelo usuario)
		{
			var transacaoAbertaAqui = false;

			try
			{
				transacaoAbertaAqui = _unidadeDeTrabalho.IniciarTransacao();

				var repositorioDeUsuario = _unidadeDeTrabalho.ObterRepositorio<Usuario>();

				var usuarioAutenticado = repositorioDeUsuario.ObterPor(u => u.Email == usuario.Email).FirstOrDefault();

				if (usuarioAutenticado != null)
				{
					usuarioAutenticado.VerificarSenha(usuario.Senha);

					return usuarioAutenticado;

				}

			}
			catch (Exception ex)
			{
				_unidadeDeTrabalho.DescartarTransacao(transacaoAbertaAqui);

				EmailHelper.EnviarEmail("*****@*****.**", "Erro", ex.GetBaseException().ToString());

				throw new Exception("Erro ao tentar autenticar este usuário.");

			}
			finally
			{
				_unidadeDeTrabalho.EfetivarTransacao(transacaoAbertaAqui);
			}

			return null;

		}
		public HttpResponseMessage Post(UsuarioModelo usuario)
		{
			if (usuario == null)
				return Request.CreateResponse(HttpStatusCode.BadRequest);

			try
			{
				var novoUsuario = _usuarioAplicacao.Registrar(new UsuarioModelo
				{
					Nome = usuario.Nome,
					Email = usuario.Email,
					Senha = usuario.Senha,
					ConfirmacaoDaSenha = usuario.ConfirmacaoDaSenha
				});

				return Request.CreateResponse(HttpStatusCode.Created, novoUsuario);

			}
			catch (Exception ex)
			{
				return Request.CreateResponse(HttpStatusCode.InternalServerError, "Falha ao incluir tipo de inspeção");
			}

		}