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 ExcluirTreinamentoResposta ExcluirTreinamento(ExcluirTreinamentoRequisicao requisicao)
        {
            var resposta = new ExcluirTreinamentoResposta();

            try
            {
                var treinamento = _treinamentoRepositorio.ObterPor(requisicao.CodigoDoTreinamento);
                var repositorioDeArquivos = new RepositorioDeArquivos();

                foreach (var anexo in treinamento.Anexos)
                {
                    repositorioDeArquivos.RemoverArquivo(anexo.Nome, anexo.DataDeUpload);
                }

                _treinamentoRepositorio.Remover(treinamento);
                _unitOfWork.Commit();
                resposta.Sucesso = true;
            }
            catch (RegraException regraException)
            {
                resposta.Erros = regraException.Erros;
            }
            return resposta;
        }
 public ExcluirAtaDaReuniaoResposta ExcluirAtaDaReuniao(ExcluirAtaDaReuniaoRequisicao requisicao)
 {
     var resposta = new ExcluirAtaDaReuniaoResposta();
     try
     {
         var reuniao = _reuniaoRepositorio.ObterPor(requisicao.CodigoDaReuniao);
         var ata = _reuniaoRepositorio.ObterAtaDaReuniao(requisicao.CodigoDaReuniao, requisicao.CodigoDaAta);
         reuniao.RemoverAta(ata);
         var repositorioDeArquivo = new RepositorioDeArquivos();
         foreach (var anexo in ata.Anexos)
         {
             repositorioDeArquivo.RemoverArquivo(anexo.Nome, anexo.DataDeUpload);
         }
         _unitOfWork.Commit();
         resposta.CodigoDaAta = ata.Codigo;
         resposta.Sucesso = true;
     }
     catch (RegraException regraException)
     {
         resposta.Erros = regraException.Erros;
     }
     return resposta;
 }
 public ExcluirAnexoDaReuniaoResposta ExcluirAnexoDaReuniao(ExcluirAnexoDaReuniaoRequisicao requisicao)
 {
     var resposta = new ExcluirAnexoDaReuniaoResposta();
     try
     {
         var reuniao = _reuniaoRepositorio.ObterPor(requisicao.CodigoDaReuniao);
         var arquivo = reuniao.Anexos.SingleOrDefault(it => it.Codigo == requisicao.CodigoDoAnexo);
         reuniao.RemoverAnexo(arquivo);
         if (arquivo != null)
         {
             var repositorioDeArquivos = new RepositorioDeArquivos();
             repositorioDeArquivos.RemoverArquivo(arquivo.Nome, arquivo.DataDeUpload);
             resposta.CodigoDoAnexo = arquivo.Codigo;
         }
         _unitOfWork.Commit();
         resposta.Sucesso = true;
     }
     catch (RegraException regraException)
     {
         resposta.Erros = regraException.Erros;
     }
     return resposta;
 }
 public ExcluirDocumentoDaClinicaResposta ExcluirDocumentoDaClinica(ExcluirDocumentoDaClinicaRequisicao requisicao)
 {
     var resposta = new ExcluirDocumentoDaClinicaResposta();
     try
     {
         var clinica = _clinicaRepositorio.ObterPor(requisicao.CodigoDaClinica);
         var documento = clinica.Documentos.SingleOrDefault(it => it.Codigo == requisicao.CodigoDoDocumento);
         clinica.RemoverDocumento(documento);
         if (documento != null)
         {
             var repositorioDeArquivos = new RepositorioDeArquivos();
             repositorioDeArquivos.RemoverArquivo(documento.Nome, documento.DataDeUpload);
             resposta.CodigoDoDocumento = documento.Codigo;
         }
         _unitOfWork.Commit();
         resposta.Sucesso = true;
     }
     catch (RegraException regraException)
     {
         resposta.Erros = regraException.Erros;
     }
     return resposta;
 }
        /// <summary>
        /// Excluir Clinica
        /// </summary>
        /// <param name="requisicao"></param>
        /// <returns></returns>
        public ExcluirClinicaResposta ExcluirClinica(ExcluirClinicaRequisicao requisicao)
        {
            var resposta = new ExcluirClinicaResposta();

            try
            {
                var clinica = _clinicaRepositorio.ObterPor(requisicao.CodigoDaClinica);
                var repositorioDeArquivos = new RepositorioDeArquivos();
                if (clinica.Documentos != null)
                {
                    foreach (var documento in clinica.Documentos)
                    {
                        repositorioDeArquivos.RemoverArquivo(documento.Nome, documento.DataDeUpload);
                    }
                }

                _clinicaRepositorio.Remover(clinica);
                _unitOfWork.Commit();
                resposta.Sucesso = true;
            }
            catch (RegraException regraException)
            {
                resposta.Erros = regraException.Erros;
            }
            return resposta;
        }
        public ExcluirAprovacaoResposta ExcluirAprovacao(ExcluirAprovacaoRequisicao requisicao)
        {
            var resposta = new ExcluirAprovacaoResposta();
            try
            {
                var aprovacao = _aprovacaoRepositorio.ObterPor(requisicao.CodigoDaAprovacao);
                var anexo = aprovacao.Anexo;
                _aprovacaoRepositorio.Remover(aprovacao);
                var repositorioDeArquivos = new RepositorioDeArquivos();
                repositorioDeArquivos.RemoverArquivo(anexo.Nome, anexo.DataDeUpload);
                _unitOfWork.Commit();
                resposta.Sucesso = true;
            }
            catch (RegraException regraException)
            {
                resposta.Erros = regraException.Erros;
            }

            return resposta;
        }