public AdicionarAnexoEmUmaReuniaoResposta AdicionarAnexoEmUmaReuniao(AdicionarAnexoEmUmareuniaoRequisicao requisicao)
        {
            var resposta = new AdicionarAnexoEmUmaReuniaoResposta();
            try
            {
                var reuniao = _reuniaoRepositorio.ObterPor(requisicao.CodigoDaReuniao);
                var dataUpload = SystemTime.Now;

                var anexo = new Arquivo(requisicao.Descricao, requisicao.Nome, dataUpload);
                reuniao.AdicionarAnexo(anexo);

                var repositorioDeArquivos = new RepositorioDeArquivos();
                repositorioDeArquivos.ArmazenarArquivo(requisicao.Arquivo, requisicao.Nome, dataUpload);

                resposta.Anexo = anexo;

                _unitOfWork.Commit();
                resposta.Sucesso = true;
            }
            catch (RegraException regraException)
            {
                resposta.Erros = regraException.Erros;
            }

            return resposta;
        }
        public AdicionarAprovacaoResposta AdicionarAprovacao(AdicionarAprovacaoRequisicao requisicao)
        {
            var resposta = new AdicionarAprovacaoResposta();
            var repositorioDeArquivos = new RepositorioDeArquivos();
            var dataDeUpload = SystemTime.Now;
            try
            {
                var grupo = _grupoRepositorio.ObterPor(requisicao.CodigoDoGrupoResponsavel);
                var programa = _programaRepositorio.ObterPor(requisicao.CodigoDoPrograma);
                var anexo = new Arquivo(requisicao.Descricao, requisicao.NomeDoAnexo, dataDeUpload);
                var aprovacao = new Aprovacao
                                    {
                                        Anexo = anexo,
                                        Status = StatusDaAprovacao.Pendente,
                                        Tipo = requisicao.Tipo,
                                        GrupoResponsavel = grupo,
                                        Titulo = requisicao.Titulo,
                                        Programa = programa
                                    };

                _aprovacaoRepositorio.Adicionar(aprovacao);

                repositorioDeArquivos.ArmazenarArquivo(requisicao.Arquivo, requisicao.NomeDoAnexo, dataDeUpload);

                _unitOfWork.Commit();
                resposta.Aprovacao = aprovacao;
                resposta.Sucesso = true;
            }
            catch (RegraException regraException)
            {
                repositorioDeArquivos.RemoverArquivo(requisicao.NomeDoAnexo, dataDeUpload);
                resposta.Erros = regraException.Erros;
            }
            return resposta;
        }
        public TrocarFotoResposta TrocarFoto(TrocarFotoRequisicao requisicao)
        {
            var resposta = new TrocarFotoResposta();
            try
            {
                var pessoa = _pessoaRepositorio.ObterPor(requisicao.CodigoDaPessoa);
                var data = SystemTime.Now;
                var foto = new Arquivo(requisicao.Nome, requisicao.Nome, data);

                if (requisicao.Foto.Length < 263166)
                {
                    var repositorioDeArquivos = new RepositorioDeArquivos();
                    repositorioDeArquivos.ArmazenarArquivo(requisicao.Foto, requisicao.Nome, data);
                    pessoa.Foto = foto;
                    _unitOfWork.Commit();
                    resposta.Foto = foto;
                    resposta.Sucesso = true;
                }
            }
            catch (RegraException regraException)
            {
                resposta.Erros = regraException.Erros;
            }

            return resposta;
        }
        public AdicionarDocumentoEmUmaClinicaResposta AdicionarDocumentoEmUmaClinica(AdicionarDocumentoEmUmaClinicaRequisicao requisicao)
        {
            var resposta = new AdicionarDocumentoEmUmaClinicaResposta();
            try
            {
                var responsavel = _funcionarioRepositorio.ObterPor(requisicao.CodigoDoResponsavel);
                var clinica = _clinicaRepositorio.ObterPor(requisicao.CodigoDaClinica);
                var dataUpload = SystemTime.Now;

                var documento = new ClinicaDocumentos(responsavel, dataUpload, requisicao.TipoDocumento,
                                                      requisicao.Descricao, requisicao.Nome, requisicao.DataDeVencimento,
                                                      requisicao.StatusDocumento);
                documento.DataDeVencimento = requisicao.DataDeVencimento;
                clinica.AdicionarDocumento(documento);

                var repositorioDeArquivos = new RepositorioDeArquivos();
                repositorioDeArquivos.ArmazenarArquivo(requisicao.Documento, requisicao.Nome, dataUpload);

                resposta.Documento = documento;

                _unitOfWork.Commit();
                resposta.Sucesso = true;
            }
            catch (RegraException regraException)
            {
                resposta.Erros = regraException.Erros;
            }

            return resposta;
        }