예제 #1
0
        public static bool Save
        (
            PES_Pessoa entityPessoa
            , PES_PessoaDeficiencia entityPessoaDeficiencia
            , DataTable dtEndereco
            , DataTable dtContato
            , DataTable dtDocumento
            , PES_CertidaoCivil entityCertidaoCivil
            , Guid pai_idAntigo
            , Guid cid_idAntigo
            , StructColaboradorFiliacao PaiAntigo
            , StructColaboradorFiliacao MaeAntigo
            , Guid tes_idAntigo
            , Guid tde_idAntigo
            , RHU_Colaborador entityColaborador
            , DataTable dtCargoFuncao
            , DataTable dtCargoDisciplina
            , bool bSalvarUsuario
            , bool bSalvarLive
            , SYS_Usuario entityUsuario
            , bool bEnviaEmail
            , string sNomePortal
            , string sHost
            , string sEmailSuporte
            , Guid ent_idUsuario
            , ACA_Docente entityDocente
            , string[] arquivosPermitidos
            , int tamanhoMaximoKB
            , CFG_Arquivo entFoto
            , bool ExcluirImagemAtual
        )
        {
            TalkDBTransaction bancoCore   = new PES_PessoaDAO()._Banco.CopyThisInstance();
            TalkDBTransaction bancoGestao = new ACA_DocenteDAO()._Banco.CopyThisInstance();

            bancoCore.Open(IsolationLevel.ReadCommitted);
            bancoGestao.Open(IsolationLevel.ReadCommitted);

            try
            {
                //Limpa o cache do docente
                CacheManager.Factory.Remove(string.Format(ModelCache.DOCENTE_POR_ENTIDADE_PESSOA_MODEL_KEY, entityColaborador.ent_id, entityPessoa.pes_id));

                //Verifica se os dados da pessoa serão sempre salvos em maiúsculo.
                string sSalvarMaiusculo        = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.SALVAR_SEMPRE_MAIUSCULO);
                bool   Salvar_Sempre_Maiusculo = !string.IsNullOrEmpty(sSalvarMaiusculo) && Convert.ToBoolean(sSalvarMaiusculo);

                var y = from DataRow dr in dtCargoFuncao.Rows
                        where dr.RowState == DataRowState.Deleted
                        select dr;

                if (dtCargoFuncao.Rows.Count == 0 || y.Count() == dtCargoFuncao.Rows.Count)
                {
                    throw new ValidationException("É obrigatório o preenchimento de pelo menos um vínculo de trabalho do docente.");
                }

                string sPadraoUsuarioDocente = ACA_ParametroAcademicoBO.ParametroValorPorEntidade(eChaveAcademico.PAR_GRUPO_PERFIL_DOCENTE, ent_idUsuario);

                //Integraçao como o live
                UserLive entityUserLive = null;
                if (bSalvarLive)
                {
                    entityUserLive = new UserLive(eTipoUserLive.Docente);

                    //Cria o usuário docente para integraçao como o live
                    ManageUserLive live = new ManageUserLive();
                    entityUserLive.email = entityUsuario.usu_email;
                    entityUserLive.senha = entityUsuario.usu_senha;

                    //Caso seja alteração carrega as turma
                    //TODO: Fazer método específico para buscar apenas pelo doc_id.
                    DataTable dtTurmas = entityDocente.doc_id > 0 ?
                                         TUR_TurmaBO.GetSelectBy_Pesquisa_TodosTipos
                                             (Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, 0, 0, 0, 0, 0, 0, "", entityDocente.doc_id, false) : new DataTable();

                    //Obtendo CPF do docente
                    string tdo_id = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.TIPO_DOCUMENTACAO_CPF);

                    var x = from DataRow dr in dtDocumento.Rows
                            where dr.RowState != DataRowState.Deleted && dr["tdo_id"].ToString() == tdo_id
                            select dr["numero"].ToString();

                    //Carrega primeira matricula ativa associada ao cargo de docente do colaborador
                    var mat = from DataRow dr in dtCargoFuncao.Rows
                              where dr.RowState != DataRowState.Deleted && dr["situacao_id"].ToString() == "1"
                              select dr["coc_matricula"].ToString();

                    //Carrega os tipos de disciplinas
                    var tipo_dis = from DataRow dr in dtCargoDisciplina.Rows
                                   where dr.RowState != DataRowState.Deleted
                                   select dr["tds_id"].ToString();

                    DataTable dtTipoDisciplinas = tipo_dis.Count() > 0 ?
                                                  ACA_TipoDisciplinaBO.SelecionaTipoDisciplinaPorTipoDisciplina
                                                      (Convert.ToInt32(tipo_dis.First()), bancoGestao, ent_idUsuario) : new DataTable();

                    if (x.Count() > 0)
                    {
                        DadosUserDocente dadosDocente = new DadosUserDocente
                        {
                            nome = entityPessoa.pes_nome
                            ,
                            CPF = x.First()
                            ,
                            matricula = mat.Count() > 0 ? mat.First() : string.Empty
                            ,
                            turma = dtTurmas.Rows.Count > 0 ? dtTurmas.Rows[0]["tur_cod_desc_nome"].ToString() : string.Empty
                            ,
                            serie = dtTurmas.Rows.Count > 0 ? dtTurmas.Rows[0]["crp_descricao"].ToString() : string.Empty
                            ,
                            disciplina = dtTipoDisciplinas.Rows.Count > 0 ? dtTipoDisciplinas.Rows[0]["tds_nome"].ToString() : string.Empty
                        };
                        entityUserLive.dadosUserDocente = dadosDocente;
                    }
                    else
                    {
                        if (!live.VerificarContaEmailExistente(entityUserLive))
                        {
                            throw new ArgumentException("CPF é um documento obrigatório, para integração do docente com live.");
                        }
                    }
                }

                RHU_ColaboradorBO.Save(entityPessoa
                                       , entityPessoaDeficiencia
                                       , dtEndereco
                                       , dtContato
                                       , dtDocumento
                                       , entityCertidaoCivil
                                       , pai_idAntigo
                                       , cid_idAntigo
                                       , PaiAntigo
                                       , MaeAntigo
                                       , tes_idAntigo
                                       , tde_idAntigo
                                       , entityColaborador
                                       , dtCargoFuncao
                                       , dtCargoDisciplina
                                       , bSalvarUsuario
                                       , bSalvarLive
                                       , entityUsuario
                                       , entityUserLive
                                       , sPadraoUsuarioDocente
                                       , bEnviaEmail
                                       , sNomePortal
                                       , sHost
                                       , sEmailSuporte
                                       , ent_idUsuario
                                       , bancoCore
                                       , bancoGestao
                                       , arquivosPermitidos
                                       , tamanhoMaximoKB
                                       , entFoto
                                       , ExcluirImagemAtual);

                entityDocente.col_id = entityColaborador.col_id;

                if (entityDocente.Validate())
                {
                    Save(entityDocente, bancoGestao);
                }
                else
                {
                    throw new ValidationException(GestaoEscolarUtilBO.ErrosValidacao(entityDocente));
                }

                return(true);
            }
            catch (Exception err)
            {
                bancoGestao.Close(err);
                bancoCore.Close(err);

                throw;
            }
            finally
            {
                bancoGestao.Close();
                bancoCore.Close();
            }
        }
예제 #2
0
    /// <summary>
    /// Arruma a StructColaboradorFiliacao da mae, que vai retornar a estrutura com os dados necessários para salvar a pessoa no banco.
    /// </summary>
    public StructColaboradorFiliacao ArrumaStructMae()
    {
        if (ValidaCampoDocumento(false))
        {
            throw new ValidationException("Nome da mãe é obrigatório.");
        }

        StructColaboradorFiliacao colaborador = new StructColaboradorFiliacao();

        // se a textbox estiver vazia, nao há dados da mãe
        if (!string.IsNullOrEmpty(txtMae.Text))
        {
            PES_Pessoa entPessoa = new PES_Pessoa();
            List <PES_PessoaDocumento> lstDocumento = new List <PES_PessoaDocumento>();
            PES_PessoaDocumento        cpf          = new PES_PessoaDocumento
            {
                tdo_id = new Guid(SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.TIPO_DOCUMENTACAO_CPF))
            };
            PES_PessoaDocumento rg = new PES_PessoaDocumento
            {
                tdo_id = new Guid(SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.TIPO_DOCUMENTACAO_RG))
            };
            if (_VS_pes_idFiliacaoMae != Guid.Empty)
            {
                entPessoa.pes_id = _VS_pes_idFiliacaoMae;
                PES_PessoaBO.GetEntity(entPessoa);
            }
            else
            {
                entPessoa.IsNew = true;
                cpf.IsNew       = true;
                rg.IsNew        = true;
            }

            entPessoa.pes_nome     = txtMae.Text;
            entPessoa.pes_situacao = 1;

            // Adiciona dados do CPF
            if (!string.IsNullOrEmpty(txtCPFMae.Text))
            {
                if (!UtilBO._ValidaCPF(txtCPFMae.Text))
                {
                    throw new ValidationException("CPF da mãe é inválido.");
                }

                cpf.pes_id = _VS_pes_idFiliacaoMae;
                PES_PessoaDocumentoBO.GetEntity(cpf);
                cpf.psd_numero   = txtCPFMae.Text;
                cpf.psd_situacao = 1;
                lstDocumento.Add(cpf);
            }

            // Adiciona dados do Rg
            if (!string.IsNullOrEmpty(txtRGMae.Text))
            {
                rg.pes_id = _VS_pes_idFiliacaoMae;
                PES_PessoaDocumentoBO.GetEntity(rg);
                rg.psd_numero   = txtRGMae.Text;
                rg.psd_situacao = 1;
                lstDocumento.Add(rg);
            }

            colaborador.listaDocumentos = lstDocumento;
            colaborador.entPessoa       = entPessoa;
        }

        return(colaborador);
    }