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(); } }
protected void Page_Load(object sender, EventArgs e) { try { ScriptManager sm = ScriptManager.GetCurrent(this); if (sm != null) { sm.Scripts.Add(new ScriptReference(ArquivoJS.UiAriaTabs)); sm.Scripts.Add(new ScriptReference(ArquivoJS.Tabs)); sm.Scripts.Add(new ScriptReference(ArquivoJS.MsgConfirmExclusao)); sm.Scripts.Add(new ScriptReference(ArquivoJS.MsgConfirmBtn)); sm.Scripts.Add(new ScriptReference(ArquivoJS.PastaScriptRaiz + "Telas/jsModuloSeguranca.js")); } UCUA1.Paginacao = ApplicationWEB._Paginacao; UCUA1.ContainerName = "divBuscaUA"; UCUA1.ReturnValues += UCUA1BuscaUA; UCUA1.AddParameters("ent_idVisible", "false"); UCUA1.AddParameters("ent_id", UCComboEntidadeUsuario._Combo.SelectedValue); UCPessoas1.Paginacao = ApplicationWEB._Paginacao; UCPessoas1.ContainerName = "divBuscaPessoa"; UCPessoas1.ReturnValues += UCPessoas1BuscaPessoa; if (!IsPostBack) { CarregarComboIntegracaoAD(); _CarregarComboDominios(); string ent_padrao = __SessionWEB.__UsuarioWEB.Usuario.ent_id.ToString(); if (!string.IsNullOrEmpty(ent_padrao)) { UCComboEntidadeUsuario._Combo.SelectedValue = ent_padrao; } UCComboEntidadeUsuario._ShowSelectMessage = true; UCComboEntidadeUsuario._Load(Guid.Empty, 1); UCComboEntidadeUsuario.Inicialize("Entidade *"); UCComboEntidadeUsuario._ValidationGroup = "Usuario"; if (__SessionWEB.__UsuarioWEB.Grupo.vis_id == SysVisaoID.Administracao) { UCComboEntidadeUsuario._Load(Guid.Empty, 0); } else { UCComboEntidadeUsuario._LoadBy_UsuarioGrupoUA(Guid.Empty, __SessionWEB.__UsuarioWEB.Grupo.gru_id, __SessionWEB.__UsuarioWEB.Usuario.usu_id, 0); } chkIntegracaoExterna.Checked = false; ddlIntegracaoExternaTipo.Visible = false; _chkBloqueado.Visible = false; if ((PreviousPage != null) && (PreviousPage.IsCrossPagePostBack)) { _LoadUsuario(PreviousPage.EditItem); Page.Form.DefaultFocus = _txtEmail.ClientID; } else { _chkSenhaAutomatica.Visible = true; _chkSenhaAutomatica.Checked = false; _txtEmail.Text = string.Empty; _txtSenha.Text = string.Empty; ManageUserLive live = new ManageUserLive(); VS_ExistsIntegracaoExterna = live.ExistsIntegracaoExterna(); _ckbUsuarioLive.Visible = VS_ExistsIntegracaoExterna; Page.Form.DefaultFocus = UCComboEntidadeUsuario._Combo.ClientID; this._btnSalvar.Visible = __SessionWEB.__UsuarioWEB.GrupoPermissao.grp_inserir; } _LoadGridGrupos(); } else { _txtSenha.Attributes.Add("value", _txtSenha.Text); _txtConfirmacao.Attributes.Add("value", _txtConfirmacao.Text); } if (__SessionWEB.__UsuarioWEB.Usuario.usu_id == _VS_usu_id) { string script = String.Format("SetConfirmDialogButton('{0}','{1}');", String.Concat("#", _btnSalvar.ClientID), "Deseja realmente alterar o usuário?<br /><br />Caso confirme você será redirecionado para a página de login."); Page.ClientScript.RegisterStartupScript(GetType(), _btnSalvar.ClientID, script, true); } } catch (Exception ex) { ApplicationWEB._GravaErro(ex); _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar carregar o sistema.", UtilBO.TipoMensagem.Erro); } Page.Form.DefaultButton = _btnSalvar.UniqueID; //Implementa onSelectedIndexChange do combo de entidade do usuário. UCComboEntidadeUsuario.OnSelectedIndexChange = UCComboEntidadeUsuario__IndexChanged; }
protected void _btnSalvar_Click(object sender, EventArgs e) { bool validado = true; try { validado = ValidarIntegracaoAD(); ManageUserLive live = new ManageUserLive(); if (_ckbUsuarioLive.Checked) { if (!live.IsContaEmail(_txtEmail.Text)) { validado = false; _lblMessage.Text = UtilBO.GetErroMessage("E-mail inválido para integrar usuário live.", UtilBO.TipoMensagem.Alerta); } else { if (!live.VerificarContaEmailExistente(new UserLive { email = _txtEmail.Text })) { validado = false; _lblMessage.Text = UtilBO.GetErroMessage("E-mail não encontrado no live para realizar integração.", UtilBO.TipoMensagem.Alerta); } } } else { if (live.IsContaEmail(_txtEmail.Text)) { validado = false; _lblMessage.Text = UtilBO.GetErroMessage("Integrar usuário live é obrigatório, o email " + _txtEmail.Text + " contém o domínio para integração com live.", UtilBO.TipoMensagem.Alerta); } } if (integracaoAD == SYS_UsuarioBO.eIntegracaoAD.IntegradoADReplicacaoSenha && !string.IsNullOrEmpty(_txtSenha.Text)) { string regTamanhoSenha = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.TAMANHO_SENHA_USUARIO); Regex regex = new Regex(regTamanhoSenha); if (!regex.IsMatch(_txtSenha.Text)) { string mensagemTamanho = SYS_MensagemSistemaBO.RetornaValor(SYS_MensagemSistemaChave.MeusDadosMensagemValidacaoComplexidadeSenhaTamanho); throw new CoreLibrary.Validation.Exceptions.ValidationException(string.IsNullOrEmpty(mensagemTamanho) ? String.Format("A senha deve conter {0}.", UtilBO.GetMessageTamanhoByRegex(regTamanhoSenha)) : mensagemTamanho); } regex = new Regex(SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.FORMATO_SENHA_USUARIO)); if (!regex.IsMatch(_txtSenha.Text)) { // Mensagem de validação do formato da senha. string mensagemFormato = SYS_MensagemSistemaBO.RetornaValor(SYS_MensagemSistemaChave.MeusDadosMensagemValidacaoComplexidadeSenhaFormato); throw new CoreLibrary.Validation.Exceptions.ValidationException(string.IsNullOrEmpty(mensagemFormato) ? "A senha deve conter pelo menos uma combinação de letras e números ou letras maiúsculas e minúsculas ou algum caracter especial (!, @, #, $, %, &) somados a letras e/ou números." : mensagemFormato); } } } catch (CoreLibrary.Validation.Exceptions.ValidationException err) { _lblMessage.Text = UtilBO.GetErroMessage(err.Message, UtilBO.TipoMensagem.Alerta); validado = false; } catch (Exception ex) { ApplicationWEB._GravaErro(ex); _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar salvar o usuário.", UtilBO.TipoMensagem.Erro); validado = false; } if (validado) { if (chkIntegracaoExterna.Checked && ddlIntegracaoExternaTipo.SelectedIndex == 0) { _lblMessage.Text = UtilBO.GetErroMessage("Realizar Integração por WebService Externo é obrigatório.", UtilBO.TipoMensagem.Alerta); } else { if ((integracaoAD == SYS_UsuarioBO.eIntegracaoAD.IntegradoAD) && ((_ddlDominios.SelectedIndex == 0) || (_ddlDominios.SelectedIndex == _VS_OutrosDominios && string.IsNullOrEmpty(_txtDominio.Text)))) { _lblMessage.Text = UtilBO.GetErroMessage("Domínio é obrigatório.", UtilBO.TipoMensagem.Alerta); } else { try { SYS_Usuario entity = new SYS_Usuario { ent_id = new Guid(UCComboEntidadeUsuario._Combo.SelectedValue) , usu_id = _VS_usu_id , usu_login = _txtLogin.Text , usu_email = _txtEmail.Text , usu_senha = string.IsNullOrEmpty(_txtSenha.Text) ? string.Empty : _txtSenha.Text , pes_id = string.IsNullOrEmpty(_txtPes_id.Value) ? Guid.Empty : new Guid(_txtPes_id.Value) , usu_criptografia = !string.IsNullOrEmpty(_txtSenha.Text) || string.IsNullOrEmpty(_txtCriptografia.Value) ? Convert.ToByte(eCriptografa.SHA512) : Convert.ToByte(_txtCriptografia.Value) , usu_situacao = 1 , usu_dataAlteracao = DateTime.Now , usu_dataCriacao = DateTime.Now , usu_dominio = (_ddlDominios.SelectedIndex == _VS_OutrosDominios) ? _txtDominio.Text : _ddlDominios.SelectedValue , usu_integracaoAD = (byte)integracaoAD , IsNew = (_VS_usu_id != Guid.Empty) ? false : true , usu_integracaoExterna = Convert.ToInt16(ddlIntegracaoExternaTipo.SelectedIndex.ToString()) }; if (_chkExpiraSenha.Checked) { entity.usu_situacao = 5; } if (_chkBloqueado.Checked) { entity.usu_situacao = 2; } if (SYS_UsuarioBO.Save(entity, _VS_Grupos, _VS_EntidadeUA, _chkSenhaAutomatica.Checked, _txtPessoa.Text, __SessionWEB.TituloGeral, ApplicationWEB._EmailHost, ApplicationWEB._EmailSuporte, null, entity.usu_integracaoAD == (byte)SYS_UsuarioBO.eIntegracaoAD.IntegradoADReplicacaoSenha, ApplicationWEB.EmailRemetente)) { if (_VS_usu_id == Guid.Empty) { _VS_usu_id = entity.usu_id; ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Insert, "usu_id: " + _VS_usu_id); __SessionWEB.PostMessages = UtilBO.GetErroMessage(String.Format("Usuário incluído com sucesso."), UtilBO.TipoMensagem.Sucesso); } else { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Update, "usu_id: " + _VS_usu_id); __SessionWEB.PostMessages = UtilBO.GetErroMessage(String.Format("Usuário alterado com sucesso."), UtilBO.TipoMensagem.Sucesso); } if (__SessionWEB.__UsuarioWEB.Usuario.usu_id == _VS_usu_id) { Response.Redirect(ApplicationWEB._DiretorioVirtual + ApplicationWEB._PaginaLogoff, false); } else { Response.Redirect(String.Concat(__SessionWEB._AreaAtual._Diretorio, "Usuario/Busca.aspx"), false); } } else { _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar salvar o usuário.", UtilBO.TipoMensagem.Erro); } } catch (CoreLibrary.Validation.Exceptions.ValidationException err) { _lblMessage.Text = UtilBO.GetErroMessage(err.Message, UtilBO.TipoMensagem.Alerta); } catch (ArgumentException err) { _lblMessage.Text = UtilBO.GetErroMessage(err.Message, UtilBO.TipoMensagem.Alerta); } catch (DuplicateNameException err) { _lblMessage.Text = UtilBO.GetErroMessage(err.Message, UtilBO.TipoMensagem.Alerta); } catch (Exception ex) { ApplicationWEB._GravaErro(ex); _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar salvar o usuário.", UtilBO.TipoMensagem.Erro); } } }// valida integracao } }
private void _LoadUsuario(Guid usu_id) { SYS_Usuario usuario = new SYS_Usuario(); try { _VS_usu_id = usu_id; usuario.usu_id = _VS_usu_id; SYS_UsuarioBO.GetEntity(usuario); UCComboEntidadeUsuario._Combo.SelectedValue = usuario.ent_id.ToString(); UCComboEntidadeUsuario._Combo.Enabled = false; ddlUsuarioAD.SelectedValue = usuario.usu_integracaoAD.ToString(); _txtCriptografia.Value = usuario.usu_criptografia.ToString(); _txtLogin.Text = usuario.usu_login; _txtEmail.Text = usuario.usu_email; if (!string.IsNullOrEmpty(usuario.usu_dominio)) { bool encontrou = false; foreach (ListItem item in _ddlDominios.Items) { if (item.Value == usuario.usu_dominio) { item.Selected = true; encontrou = true; } } //Caso não encontre o domínio na lista de disponíveis... if (!encontrou) { //Seta a opção outros. _ddlDominios.SelectedIndex = _VS_OutrosDominios; _TrataOutrosDominios(); _txtDominio.Text = usuario.usu_dominio; } } ConfiguraUsuarioAD(); if (usuario.usu_situacao == 5) { _chkExpiraSenha.Checked = true; } else if (usuario.usu_situacao == 2) { _chkBloqueado.Checked = true; } _chkBloqueado.Visible = true; //Carrega os dados da pessoa _CarregarPessoa(usuario.pes_id); _btnPessoa.Enabled = false; //VERIFICA SE PARÂMETRO DE LOGIN COM PROVIDER EXTERNO ESTÁ HABILITADO(TRUE = MOSTRA O CAMPO / FALSE = NÃO MOSTRA O CAMPO) if (SYS_ParametroBO.ParametroValorBooleano(SYS_ParametroBO.eChave.PERMITIR_LOGIN_COM_PROVIDER_EXTERNO)) { divContasExternas.Visible = true; //BUSCA O LOGIN PROVIDER DO USUARIO E CASO NÃO FOR NULO EXIBE NO TEXTBOX var logins = SYS_UsuarioLoginProviderBO.SelectBy_usu_id(usu_id); if (logins != null && logins.Count > 0) { this.rptContasExternas.Visible = true; this.lblInfoContaExterna.Visible = false; this.rptContasExternas.DataSource = logins; this.rptContasExternas.DataBind(); } else { this.rptContasExternas.Visible = false; this.lblInfoContaExterna.Visible = true; this.lblInfoContaExterna.Text = UtilBO.GetErroMessage("Usuário não possui contas vinculadas.", UtilBO.TipoMensagem.Informacao); } } //Carrega os grupos do usuário SYS_UsuarioBO.GetGruposUsuario(_VS_usu_id, _VS_Grupos, _VS_EntidadeUA); _rfvSenha.Visible = false; _rfvConfirmarSenha.Visible = false; ManageUserLive live = new ManageUserLive(); VS_ExistsIntegracaoExterna = live.ExistsIntegracaoExterna(); if (VS_ExistsIntegracaoExterna && !string.IsNullOrEmpty(usuario.usu_email)) { _ckbUsuarioLive.Visible = integracaoAD != SYS_UsuarioBO.eIntegracaoAD.IntegradoAD; if (live.IsContaEmail(usuario.usu_email)) { _ckbUsuarioLive.Checked = true; ConfiguraUsuarioLive(); } } else { _ckbUsuarioLive.Visible = false; _ckbUsuarioLive.Checked = false; } _lblSenha.Text = _VS_usu_id == Guid.Empty ? "Senha *" : "Senha"; _lblConfirmacao.Text = _VS_usu_id == Guid.Empty ? "Confirmar senha *" : "Confirmar senha"; if (usuario.usu_integracaoExterna > 0) { chkIntegracaoExterna.Checked = true; SYS_IntegracaoExternaTipoBO bo = new SYS_IntegracaoExternaTipoBO(); ddlIntegracaoExternaTipo.DataSource = bo.getAll(); ddlIntegracaoExternaTipo.DataBind(); // Não exibe opções de senha divOpcoesSenha.Visible = _rfvConfirmarSenha.IsValid = _rfvConfirmarSenha.SetFocusOnError = _rfvConfirmarSenha.Enabled = _rfvSenha.IsValid = _rfvSenha.SetFocusOnError = _rfvSenha.Enabled = revSenha.IsValid = revSenha.SetFocusOnError = revSenha.Enabled = revSenhaTamanho.IsValid = revSenhaTamanho.SetFocusOnError = revSenhaTamanho.Enabled = _cpvConfirmarSenha.IsValid = _cpvConfirmarSenha.SetFocusOnError = _cpvConfirmarSenha.Enabled = false; revSenhaTamanho.ValidationGroup = ""; _rfvConfirmarSenha.ValidationGroup = ""; _rfvSenha.ValidationGroup = ""; _cpvConfirmarSenha.ValidationGroup = ""; revSenha.ValidationGroup = ""; _btnPessoa.CausesValidation = false; ddlIntegracaoExternaTipo.Visible = true; SYS_IntegracaoExternaTipoBO ietBO = new SYS_IntegracaoExternaTipoBO(); DataTable dt = ietBO.getAll(); ddlIntegracaoExternaTipo.Items.Clear(); ddlIntegracaoExternaTipo.Items.Insert(0, "-- Selecione uma Integração Externa --"); foreach (DataRow iet in dt.Rows) { ddlIntegracaoExternaTipo.Items.Insert(Convert.ToUInt16(iet["iet_id"].ToString()), iet["iet_descricao"].ToString()); } ddlIntegracaoExternaTipo.SelectedIndex = usuario.usu_integracaoExterna; } else { chkIntegracaoExterna.Checked = false; } } catch { _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar carregar o usuário.", UtilBO.TipoMensagem.Erro); } }