public DTOHistoricoExtraCurricular ConsultarExtraCurricular(int idAtividadeExtraCurricular)
        {
            var resultado           = new DTOHistoricoExtraCurricular();
            var ativExtraCurricular = new BMHistoricoExtraCurricular().ObterPorID(idAtividadeExtraCurricular);

            //TODO: CARREGAR OS FORNECEDORES DINAMICAMENTE VIA AJAX para não ter problema de ter um fornecedor retornado no webservice que não esta aqui na hora
            if (ativExtraCurricular == null)
            {
                return(resultado);
            }
            resultado.ID        = ativExtraCurricular.ID;
            resultado.IdUsuario = ativExtraCurricular.Usuario.ID;
            resultado.NomeSolucaoExtraCurricular = ativExtraCurricular.SolucaoEducacionalExtraCurricular;
            resultado.TextoAtividade             = ativExtraCurricular.TextoAtividade;
            resultado.CargaHoraria        = ativExtraCurricular.CargaHoraria;
            resultado.DataFimAtividade    = ativExtraCurricular.DataFimAtividade.HasValue ? ativExtraCurricular.DataFimAtividade.Value.ToString("dd/MM/yyyy") : "";
            resultado.DataInicioAtividade = ativExtraCurricular.DataInicioAtividade.HasValue ? ativExtraCurricular.DataInicioAtividade.Value.ToString("dd/MM/yyyy") : "";
            resultado.NomeInstituicao     = ativExtraCurricular.Instituicao;
            if (ativExtraCurricular.FileServer == null)
            {
                return(resultado);
            }
            resultado.NomeArquivoComprovacao = ativExtraCurricular.FileServer.NomeDoArquivoNoServidor;
            resultado.TipoArquivoComprovacao = ativExtraCurricular.FileServer.TipoArquivo;
            resultado.NomeArquivoOriginal    = ativExtraCurricular.FileServer.NomeDoArquivoOriginal;
            if (ativExtraCurricular.Fornecedor != null && ativExtraCurricular.Fornecedor.ID != 0)
            {
                resultado.IdFornecedor = ativExtraCurricular.Fornecedor.ID;
            }
            return(resultado);
        }
 public void RemoverHistoricoExtraCurricular(DTOHistoricoExtraCurricular pHistoricoExtraCurricular, AuthenticationRequest autenticacao)
 {
     try
     {
         if (pHistoricoExtraCurricular.ID == 0)
         {
             throw new AcademicoException("Atividade Extra Curricular Inválida.");
         }
         var bmHistoricoExtraCurricular = new BMHistoricoExtraCurricular();
         var historico = bmHistoricoExtraCurricular.ObterPorID(pHistoricoExtraCurricular.ID);
         if (historico != null)
         {
             bmHistoricoExtraCurricular.Excluir(historico);
         }
     }
     catch (Exception ex)
     {
         ErroUtil.Instancia.TratarErro(ex);
     }
 }
        public void InserirHistoricoExtraCurricular(DTOHistoricoExtraCurricular pHistoricoExtraCurricular, AuthenticationRequest autenticacao)
        {
            try
            {
                // Caso seja cadastro e o arquivo não esteja informado, retorna o erro de validação.
                if ((pHistoricoExtraCurricular.ID == 0 &&
                     string.IsNullOrEmpty(pHistoricoExtraCurricular.CaminhoArquivoParticipacao)))
                {
                    throw new AcademicoException("O arquivo anexo é obrigatório");
                }

                /*
                 * TODO: Atualmente o usuário do IIS não está permitindo a verficação do arquivo no file server,
                 * investigar o porque do file exists não estar funcionando mesmo com o arquivo estando correto no servidor.
                 *
                 * Verifica inclusão do arquivo.
                 * string caminho = string.Concat(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro, @"\", pHistoricoExtraCurricular.CaminhoArquivoParticipacao);
                 *
                 * if (pHistoricoExtraCurricular.ID == 0 && !File.Exists(caminho))
                 * {
                 *  throw new AcademicoException(caminho);
                 * }
                 */

                var historico = pHistoricoExtraCurricular.ID > 0
                    ? new BMHistoricoExtraCurricular().ObterPorID(pHistoricoExtraCurricular.ID)
                    : new HistoricoExtraCurricular();

                historico.TextoAtividade      = pHistoricoExtraCurricular.TextoAtividade;
                historico.Usuario             = new BMUsuario().ObterPorId(pHistoricoExtraCurricular.IdUsuario);
                historico.CargaHoraria        = pHistoricoExtraCurricular.CargaHoraria;
                historico.DataFimAtividade    = Convert.ToDateTime(pHistoricoExtraCurricular.DataFimAtividade);
                historico.DataInicioAtividade = Convert.ToDateTime(pHistoricoExtraCurricular.DataInicioAtividade);
                historico.SolucaoEducacionalExtraCurricular = pHistoricoExtraCurricular.NomeSolucaoExtraCurricular;
                historico.Auditoria   = new Auditoria(autenticacao.Login);
                historico.Instituicao = pHistoricoExtraCurricular.NomeInstituicao;
                if (pHistoricoExtraCurricular.IdFornecedor.HasValue && pHistoricoExtraCurricular.IdFornecedor.Value != 0)
                {
                    var manterFornecedor = new ManterFornecedor();
                    var fornecedor       = manterFornecedor.ObterFornecedorPorID(pHistoricoExtraCurricular.IdFornecedor.Value);
                    historico.Fornecedor = fornecedor;
                }
                else
                {
                    historico.Fornecedor = null;
                }
                if (!string.IsNullOrEmpty(pHistoricoExtraCurricular.CaminhoArquivoParticipacao))
                {
                    var fs = new FileServer
                    {
                        NomeDoArquivoNoServidor = pHistoricoExtraCurricular.CaminhoArquivoParticipacao,
                        Auditoria             = new Auditoria(autenticacao.Login),
                        TipoArquivo           = pHistoricoExtraCurricular.TipoArquivoComprovacao,
                        NomeDoArquivoOriginal = pHistoricoExtraCurricular.NomeArquivoComprovacao,
                        MediaServer           = true
                    };

                    new BMFileServer().Salvar(fs);
                    historico.FileServer = fs;
                }

                new BMHistoricoExtraCurricular().Salvar(historico);
            }
            catch (Exception ex)
            {
                // Caso a exceção seja violação da chave que não permite atividades com mesmo nome,
                // do mesmo usuário e com a mesma data de início, retorna mensagem de erro amigável.
                var sqlException = ex.InnerException as SqlException;
                if (sqlException != null && sqlException.Number == 2627)
                {
                    throw new AcademicoException(
                              "Você já possui uma atividade extracurricular com este mesmo nome e com a mesma data de início. Altere os dados abaixo ou vá na listagem do seu histórico acadêmico e altere a atividade existente.");
                }

                ErroUtil.Instancia.TratarErro(ex);
            }
        }