/// <summary> /// Salva no banco os dados do item passado por parâmetro, retorna o item inserido. /// </summary> /// <param name="tra_idPrincipal">ID do tipo de responsável</param> /// <param name="entAluno">Aluno</param> /// <param name="item">Item a ser inserido</param> /// <param name="tra_idProprio">Id padrão do tipo de responsável "O próprio"</param> /// <param name="bancoCore">Transação do banco do Core</param> /// <param name="tra_idMae">Id padrão do tipo de responsável "Mãe"</param> /// <param name="tra_idPai">Id padrão do tipo de responsável "Pai"</param> /// <param name="bancoGestao">Transação do banco do Gestão</param> /// <param name="tdo_idCPF">ID padrão do tipo de documento CPF</param> /// <param name="tdo_idRG">ID padrão do tipo de documento RG</param> /// <param name="tdo_idNis">ID padrão do tipo de documento NIS</param> /// <param name="pes_idMae">ref - id da Mãe do aluno</param> /// <param name="pes_idPai">ref - id do Pai do aluno</param> /// <param name="salvarMaiusculo">Indica se os nomes devem ser salvos em maiúsculos</param> /// <param name="ListValidacoesDoc"></param> /// <param name="ListSalvar">Lista de responsaveis que estao sendo salvos, para nao considerar o mesmo documento</param> /// <param name="ent_id">Id da entidade do usuário logado.</param> /// <returns>Os dados inseridos</returns> private static StructCadastro SalvarResponsavel ( Int32 tra_idPrincipal , ACA_Aluno entAluno , StructCadastro item , int tra_idProprio , TalkDBTransaction bancoCore , int tra_idMae , int tra_idPai , TalkDBTransaction bancoGestao , Guid tdo_idCPF , Guid tdo_idRG , Guid tdo_idNis , ref Guid pes_idMae , ref Guid pes_idPai , bool salvarMaiusculo , ref List <string> ListValidacoesDoc , List <StructCadastro> ListSalvar , Guid ent_id ) { // Salvar os responsáveis. ACA_AlunoResponsavel entResp = item.entAlunoResp; PES_Pessoa entPessoa = item.entPessoa; List <PES_PessoaDocumento> lisDocResp; entResp.alu_id = entAluno.alu_id; if (entResp.tra_id == tra_idProprio) { // Se for o próprio, seta o id da Pessoa = o Id da pessoa do aluno. entResp.pes_id = entAluno.pes_id; // Salvar a integridade da pessoa. if (entResp.IsNew) { PES_PessoaBO.IncrementaIntegridade(entAluno.pes_id, bancoCore); } } else { if ((salvarMaiusculo) && (!String.IsNullOrEmpty(entPessoa.pes_nome))) { entPessoa.pes_nome = entPessoa.pes_nome.ToUpper(); } // Só salva a pessoa se o nome estiver preenchido. if (!String.IsNullOrEmpty(entPessoa.pes_nome)) { // Faz a verificação caso exista a pessoa com o CPF passado por parâmetro. Guid responsavel = Valida_Responsavel_CPF(item.listPessoaDoc, entResp.tra_id, ref ListValidacoesDoc, ent_id, entPessoa.pes_id, ListSalvar); if (responsavel == new Guid()) { // Se não existir, salva a entidade pessoa. PES_PessoaBO.Save(entPessoa, bancoCore); } else { entPessoa.pes_id = responsavel; entPessoa.IsNew = false; #region Atualiza - Entidade Pessoa (Cria uma entidade auxiliar para atualizar apenas o nome) //Atualiza apenas o nome do responsável, recebendo todas as informações ja cadastradas PES_Pessoa pesAux = new PES_Pessoa { pes_id = entPessoa.pes_id }; PES_PessoaBO.GetEntity(pesAux); pesAux.pes_nome = entPessoa.pes_nome; //// movimentado os valores por que esses campos não estavam sendo gravados pesAux.pes_dataNascimento = entPessoa.pes_dataNascimento; pesAux.pes_estadoCivil = entPessoa.pes_estadoCivil; pesAux.tes_id = entPessoa.tes_id; //// entPessoa = pesAux; #endregion Atualiza - Entidade Pessoa (Cria uma entidade auxiliar para atualizar apenas o nome) // Se for matricula if (entAluno.IsNew) { #region Atualiza - Entidade Aluno Responsavel (Caso existir a informações referente a profissão e situação) //Faz verificação se existe as informações referente a profissão e situação do responsável byte situacao_responsavel; string profissao_responsavel; RetornaAlunoResponsavel_Situacao_Profissao(entPessoa.pes_id, out situacao_responsavel, out profissao_responsavel); if (situacao_responsavel == Convert.ToByte(ACA_AlunoResponsavelSituacao.Falecido)) { entResp.alr_situacao = Convert.ToByte(ACA_AlunoResponsavelSituacao.Falecido); } else { entResp.alr_situacao = Convert.ToByte(ACA_AlunoResponsavelSituacao.Ativo); } entResp.alr_profissao = profissao_responsavel; #endregion Atualiza - Entidade Aluno Responsavel (Caso existir a informações referente a profissão e situação) } else { // Caso já exista o responsável, será atualizado os campos: situção (Quando for falecido = 4) e o campo profissão. AtualizaResponsavel_Profissao_Situacao(entPessoa.pes_id, entResp.alr_profissao, entResp.alr_empresa, entResp.alr_situacao, bancoGestao); } PES_PessoaBO.Save(entPessoa, bancoCore); } } else { entPessoa.pes_id = Guid.Empty; } if ((entPessoa.IsNew) || (entResp.IsNew)) { PES_PessoaBO.IncrementaIntegridade(entPessoa.pes_id, bancoCore); } entResp.pes_id = entPessoa.pes_id; // Seta o Id da mãe e do Pai para alterar na pessoa do aluno. if (entResp.tra_id == tra_idMae) { pes_idMae = entPessoa.pes_id; } else if (entResp.tra_id == tra_idPai) { pes_idPai = entPessoa.pes_id; } } // Seta responsável principal. entResp.alr_principal = (entResp.tra_id == tra_idPrincipal); Save(entResp, bancoGestao); if (entResp.tra_id != tra_idProprio) { // Salva os documentos dos responsáveis lisDocResp = SalvaDocumentoResponsavel( item.listPessoaDoc , entResp.pes_id , tra_idProprio , entResp.tra_id , tdo_idCPF , tdo_idRG , tdo_idNis , bancoCore , ref ListValidacoesDoc); } else { lisDocResp = new List <PES_PessoaDocumento>(); } // Retorna item inserido. return(new StructCadastro { entAlunoResp = entResp, entPessoa = entPessoa, listPessoaDoc = lisDocResp }); }
/// <summary> /// Salva os responsáveis do aluno, e o pai e a mãe na filiação do aluno. /// </summary> /// <param name="listaResponsavel">Lista da estrutura do cadastro</param> /// <param name="entAluno">Aluno</param> /// <param name="bancoGestao">Transação do Gestão</param> /// <param name="bancoCore">Transação do Core</param> /// <param name="tra_idPrincipal">Id do tipo de responsável principal</param> /// <param name="salvarMaiusculo">Indica se os nomes devem ser salvos em maiúsculos</param> /// <param name="entPessoaAluno">Pessoa referente ao aluno - seta o id do Pai e da Mãe</param> /// <param name="obrigatorioTipoResponsavel">Validar se foi informado o Id do tipo de responsável principal.</param> /// <param name="ent_id">Id da entidade do usuário logado.</param> public static void SalvarResponsaveisAluno ( List <StructCadastro> listaResponsavel, ACA_Aluno entAluno, TalkDBTransaction bancoGestao, TalkDBTransaction bancoCore, Int32 tra_idPrincipal, bool salvarMaiusculo, ref PES_Pessoa entPessoaAluno, bool obrigatorioTipoResponsavel, Guid ent_id ) { List <StructCadastro> listCadastrados = new List <StructCadastro>(); List <StructCadastro> listaInseridos = new List <StructCadastro>(); Guid pes_idMae = Guid.Empty; Guid pes_idPai = Guid.Empty; if (tra_idPrincipal <= 0 && obrigatorioTipoResponsavel) { throw new ValidationException("É necessário informar o responsável do aluno."); } if (listaResponsavel.Count == 0) { throw new ValidationException("Responsável é obrigatório."); } if (!entAluno.IsNew) { // Guardar os responsáveis que já tinham sido cadastrados. listCadastrados = RetornaResponsaveisAluno(entAluno.alu_id, null); } // Buscando ids dos tipos de responsável dos parâmetros. Int32 tra_idMae = TipoResponsavelAlunoParametro.tra_idMae(ent_id); Int32 tra_idPai = TipoResponsavelAlunoParametro.tra_idPai(ent_id); Int32 tra_idProprio = TipoResponsavelAlunoParametro.tra_idProprio(ent_id); // ID do tipo de documento CPF. string docPadraoCPF = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.TIPO_DOCUMENTACAO_CPF); Guid tdo_idCPF = String.IsNullOrEmpty(docPadraoCPF) ? Guid.Empty : new Guid(docPadraoCPF); // ID do tipo de documento RG. string docPadraoRG = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.TIPO_DOCUMENTACAO_RG); Guid tdo_idRG = String.IsNullOrEmpty(docPadraoRG) ? Guid.Empty : new Guid(docPadraoRG); // ID do tipo de documento NIS. Guid tdo_idNis = ACA_ParametroAcademicoBO.ParametroValorGuidPorEntidade(eChaveAcademico.TIPO_DOCUMENTACAO_NIS, ent_id); List <string> ListValidacoesDoc = new List <string>(); foreach (StructCadastro resp in listaResponsavel) { //Responsáveis com o mesmo numero de documento foreach (PES_PessoaDocumento psd in resp.listPessoaDoc) { if (listaResponsavel.Any(p => p.entAlunoResp.pes_id != resp.entAlunoResp.pes_id && p.listPessoaDoc.Any(d => d.psd_numero == psd.psd_numero)) && !ListValidacoesDoc.Contains("Há mais de um responsável com o mesmo número de documento.")) { ListValidacoesDoc.Add("Há mais de um responsável com o mesmo número de documento."); } } // Responável tem data de nascimento maior que a data atual. if (resp.entPessoa.pes_dataNascimento > DateTime.Now) { if (resp.entAlunoResp.tra_id == TipoResponsavelAlunoParametro.tra_idMae(ent_id)) { ListValidacoesDoc.Add("A data de nascimento da mãe não pode ser maior que a data atual."); } if (resp.entAlunoResp.tra_id == TipoResponsavelAlunoParametro.tra_idPai(ent_id)) { ListValidacoesDoc.Add("A data de nascimento do pai não pode ser maior que a data atual."); } } // Responsavel do aluno é falecido e mora com ele -- erro if (resp.entAlunoResp.alr_moraComAluno && resp.entAlunoResp.alr_situacao == Convert.ToByte(ACA_AlunoResponsavelSituacao.Falecido)) { ListValidacoesDoc.Add("Responsável do aluno não pode morar com o aluno e ser falecido."); } // Responsavel tem data de nascimento mais nova que a do aluno if (resp.entPessoa.pes_dataNascimento > entPessoaAluno.pes_dataNascimento) { if (resp.entAlunoResp.tra_id == TipoResponsavelAlunoParametro.tra_idMae(ent_id)) { ListValidacoesDoc.Add("A data de nascimento da mãe não pode ser maior que a data de nascimento do aluno."); } if (resp.entAlunoResp.tra_id == TipoResponsavelAlunoParametro.tra_idPai(ent_id)) { ListValidacoesDoc.Add("A data de nascimento do pai não pode ser maior que a data de nascimento do aluno."); } } //Valida código NIS do aluno int index = resp.listPessoaDoc.FindIndex(p => p.tdo_id == tdo_idNis); if (index >= 0 && !(string.IsNullOrEmpty(resp.listPessoaDoc[index].psd_numero))) { string TipoPessoa; if (resp.entAlunoResp.tra_id == tra_idMae) { TipoPessoa = "A mãe"; } else if (resp.entAlunoResp.tra_id == tra_idPai) { TipoPessoa = "O pai"; } else { TipoPessoa = "O responsável"; } if (ACA_AlunoBO.NISInvalido(resp.listPessoaDoc[index].psd_numero)) { ListValidacoesDoc.Add(TipoPessoa + " possui o número do NIS inválido."); } } // Adiciona na lista dos dados inseridos. listaInseridos.Add( SalvarResponsavel(tra_idPrincipal, entAluno, resp, tra_idProprio, bancoCore, tra_idMae, tra_idPai, bancoGestao, tdo_idCPF, tdo_idRG, tdo_idNis, ref pes_idMae, ref pes_idPai, salvarMaiusculo, ref ListValidacoesDoc, listaResponsavel, ent_id)); } // Se não foi inserido nenhum item na lista como principal. if (!listaInseridos.Exists(p => p.entAlunoResp.alr_principal) && obrigatorioTipoResponsavel) { ListValidacoesDoc.Add("É necessário informar o responsável do aluno."); } if (ListValidacoesDoc.Count > 0) { throw new ValidationException(string.Join("<BR/>", ListValidacoesDoc.ToArray())); } // Salva na pessoa do aluno os Ids do pai e da mãe. entPessoaAluno = new PES_Pessoa { pes_id = entAluno.pes_id }; PES_PessoaBO.GetEntity(entPessoaAluno, bancoCore); // Se mudou a mãe. if (entPessoaAluno.pes_idFiliacaoMae != pes_idMae) { entPessoaAluno.pes_idFiliacaoMae = pes_idMae; PES_PessoaBO.Save(entPessoaAluno, bancoCore); } // Se mudou o pai. if (entPessoaAluno.pes_idFiliacaoPai != pes_idPai) { entPessoaAluno.pes_idFiliacaoPai = pes_idPai; PES_PessoaBO.Save(entPessoaAluno, bancoCore); } // Percorrer os itens que existiam antes, para excluir os que não tem mais. foreach (StructCadastro item in listCadastrados) { if (item.entPessoa.pes_id == entAluno.pes_id) { continue; } VerifcaItemCadastrado(listaInseridos, bancoCore, bancoGestao, item, tra_idProprio); } }
/// <summary> /// Método utilizado via Web API para alteração de Usuários /// </summary> /// <param name="data">Parametros de entrada: Id Entidade, Id Grupo, ID Usuario, Nome, /// CPF, Data de nascimento, E-mail, Senha</param> /// <param name="entityUsuarioAPI">Usuário da API usado para gravar log de ação</param> public static void Update(UsuarioEntradaDTO data, CFG_UsuarioAPI entityUsuarioAPI) { #region [ Validação de campos obrigatórios ] if (data.ent_id == Guid.Empty || string.IsNullOrWhiteSpace(data.usu_login)) { throw new ValidationException("Id da entidade e login do usuário são obrigatórios."); } #endregion SYS_Usuario entity = new SYS_Usuario { ent_id = data.ent_id , usu_login = data.usu_login }; SYS_UsuarioBO.GetSelectBy_ent_id_usu_login(entity); PES_Pessoa entityPessoa = null; if (!entity.IsNew) { //Validação de usuário padrão do sistema if (entity.usu_situacao == (byte)SYS_UsuarioBO.eSituacao.Padrao_Sistema) { throw new ValidationException("Não é possível alterar dados do usuário padrão do sistema."); } //Se o usuário recuperado não possuir pessoa, pula os passos de update de Pessoa if (entity.pes_id != Guid.Empty) { #region [Pessoa] entityPessoa = new PES_Pessoa { pes_id = entity.pes_id }; PES_PessoaBO.GetEntity(entityPessoa); if (!string.IsNullOrWhiteSpace(data.nome) && entityPessoa.pes_nome.ToLower() != data.nome.ToLower()) { entityPessoa.pes_nome = data.nome; } if (data.dataNascimento != new DateTime() && entityPessoa.pes_dataNascimento != data.dataNascimento) { entityPessoa.pes_dataNascimento = data.dataNascimento; } if (data.sexo == 1 || data.sexo == 2) { entityPessoa.pes_sexo = data.sexo; } entityPessoa.pes_dataAlteracao = DateTime.Now; #region [Validações CPF] Guid?tdo_id = null; bool criarCPF = false; //Recupera os documentos da pessoa DataTable documentosPessoa = PES_PessoaDocumentoBO.GetSelect(entityPessoa.pes_id, false, 1, 1); //Se CPF existir, realiza validações if (!string.IsNullOrWhiteSpace(data.CPF)) { if (UtilBO._ValidaCPF(data.CPF)) { //Recupera o tipo de documento CPF string tipoDocCPF = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.TIPO_DOCUMENTACAO_CPF); if (!string.IsNullOrEmpty(tipoDocCPF)) { tdo_id = Guid.Parse(tipoDocCPF); criarCPF = true; } } else { throw new ValidationException("CPF inválido."); } if (documentosPessoa.Rows.Count > 0) { //Recupera o indice da linha que contém o documento do tipo CPF var indiceRowCPF = documentosPessoa.AsEnumerable() .Select((row, index) => new { row, index }) .Where(item => item.row.Field <Guid>("tdo_id") == tdo_id) .Select(item => item.index).ToArray(); //Se a pessoa possui um documento do tipo CPF, verifica se precisa alterar if (indiceRowCPF.Count() > 0) { if (documentosPessoa.Rows[indiceRowCPF[0]]["numero"].ToString() != data.CPF) { documentosPessoa.Rows[indiceRowCPF[0]]["numero"] = data.CPF; } } else { //Pessoa ainda não possue CPF, nesse caso cria usando o datatable recuperado DataRow rowDoc = documentosPessoa.NewRow(); rowDoc["tdo_id"] = tdo_id; rowDoc["unf_idEmissao"] = Guid.Empty.ToString(); rowDoc["unf_idAntigo"] = Guid.Empty.ToString(); rowDoc["numero"] = data.CPF; rowDoc["dataemissao"] = string.Empty; rowDoc["orgaoemissao"] = string.Empty; rowDoc["info"] = string.Empty; documentosPessoa.Rows.Add(rowDoc); } criarCPF = false; } if (criarCPF) { if (tdo_id != null) { //Cria o datatable na estrutura necessária com o CPF enviado documentosPessoa = RetornaDocumento(data.CPF); } } } #endregion PES_PessoaDeficiencia entityPessoaDeficiencia = new PES_PessoaDeficiencia { pes_id = Guid.Empty, tde_id = Guid.Empty, IsNew = true }; PES_PessoaBO.Save(entityPessoa , entityPessoaDeficiencia , new DataTable() //dtEndereco , new DataTable() //dtContato , documentosPessoa //dtDocumento , new DataTable() //dtCertidao , Guid.Empty //pai_idAntigo , Guid.Empty //cid_idAntigo , Guid.Empty //pes_idPaiAntigo , Guid.Empty //pes_idMaeAntigo , Guid.Empty //tes_idAntigo , Guid.Empty //tde_idAntigo , null //arquivosPermitidos , 0 //tamanhoMaximoKB , null //entFoto , false //ExcluirImagemAtual ); #endregion } #region [Usuário] //entity.usu_login = data.usu_login; if (!string.IsNullOrWhiteSpace(data.email) && entity.usu_email != data.email) { entity.usu_email = data.email; } //Se não vier senha, seta a senha da entidade como vazia para o método do sistema //não encriptar novamente o que já estava encriptado if (string.IsNullOrWhiteSpace(data.senha)) { entity.usu_senha = string.Empty; } else { entity.usu_senha = data.senha; } if (entityPessoa != null) { entity.pes_id = entityPessoa.pes_id; } entity.usu_criptografia = Convert.ToByte(eCriptografa.TripleDES); entity.usu_dataAlteracao = DateTime.Now; SortedDictionary <Guid, SYS_UsuarioBO.TmpGrupos> grupos = new SortedDictionary <Guid, SYS_UsuarioBO.TmpGrupos>(); SortedDictionary <Guid, List <SYS_UsuarioBO.TmpEntidadeUA> > entidadeUA = new SortedDictionary <Guid, List <SYS_UsuarioBO.TmpEntidadeUA> >(); //Se vier grupos cria a lista com base nesses grupos if (data.gru_id.Count() > 0) { foreach (Guid gruId in data.gru_id) { SYS_UsuarioBO.AddTmpGrupo(gruId, grupos, 1); } } else { //Senão, recupera os grupos do usuário para enviar ao método salvar SYS_UsuarioBO.GetGruposUsuario(entity.usu_id, grupos, entidadeUA); } SYS_UsuarioBO.Save(entity, grupos, entidadeUA, false, data.nome, string.Empty, string.Empty, string.Empty, null); #endregion } else { throw new ValidationException("Usuário não existe."); } #region [ Log de ação] LOG_UsuarioAPIBO.Save ( new LOG_UsuarioAPI { usu_id = entity.usu_id , uap_id = entityUsuarioAPI.uap_id , lua_dataHora = DateTime.Now , lua_acao = (byte)LOG_UsuarioAPIBO.eAcao.AlteracaoUsuario } ); #endregion }
/// <summary> /// Método utilizado via Web API para criação de Usuários /// OBSERVACAO: Este metodo faz uma busca por nome, data de nascimento e CPF /// para tentar vincular uma pessoa já existente com estes dados ao usuario /// que esta sendo criado, sendo que apenas nome e data de nascimento são requeridos. /// </summary> /// <param name="data">Parametros de entrada: Id Entidade, Id Grupo, ID Usuario, Nome, /// CPF, Data de nascimento, E-mail, Senha</param> /// <param name="entityUsuarioAPI">Usuário da API usado para gravar log de ação</param> public static void Create(UsuarioEntradaDTO data, CFG_UsuarioAPI entityUsuarioAPI) { #region [ Validação de campos obrigatórios ] if (data.ent_id == Guid.Empty) { throw new ValidationException("Id da entidade é obrigatório."); } if (string.IsNullOrWhiteSpace(data.usu_login)) { throw new ValidationException("Login do usuário é obrigatório."); } if (data.gru_id.Count() == 0) { throw new ValidationException("Ao menos um grupo deve ser informado."); } if (data.dataNascimento == new DateTime()) { throw new ValidationException("Data de nascimento é obrigatória."); } if (data.sexo != null && data.sexo > 2) { throw new ValidationException("Para o sexo informe: 1 - masculino ou 2 - feminino"); } #endregion SYS_Usuario entity = new SYS_Usuario { ent_id = data.ent_id , usu_login = data.usu_login }; SYS_UsuarioBO.GetSelectBy_ent_id_usu_login(entity); // Verifica se o id do usuário enviado existe na base de dados. if (entity.IsNew) { Guid? tdo_id = null; bool savePessoaReturn = false; PES_Pessoa entityPessoa = null; //Se não for informado nome e data de nascimento não cria a pessoa if (!string.IsNullOrWhiteSpace(data.nome) && data.dataNascimento != null) { #region [Validações CPF] //Se CPF existir, realiza validações if (!string.IsNullOrWhiteSpace(data.CPF)) { if (UtilBO._ValidaCPF(data.CPF)) { //Recupera o tipo de documento CPF, utilizado para recuperar a pessoa string tipoDocCPF = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.TIPO_DOCUMENTACAO_CPF); if (!string.IsNullOrEmpty(tipoDocCPF)) { tdo_id = Guid.Parse(tipoDocCPF); } } else { throw new ValidationException("CPF inválido."); } } #endregion //Recupera a pessoa entityPessoa = PES_PessoaBO.SelecionaPorNomeNascimentoDocumento(data.nome, data.dataNascimento, tdo_id, data.CPF); //Se pessoa não existir, faz o cadastro com as informações básicas if (entityPessoa.pes_id == Guid.Empty) { #region [Cria Pessoa] //Adiciona valores na entidade de pessoa entityPessoa.pes_id = Guid.Empty; entityPessoa.pes_nome = data.nome; entityPessoa.pes_sexo = data.sexo; entityPessoa.pes_nome_abreviado = string.Empty; entityPessoa.pai_idNacionalidade = Guid.Empty; entityPessoa.pes_naturalizado = false; entityPessoa.cid_idNaturalidade = Guid.Empty; entityPessoa.pes_dataNascimento = (String.IsNullOrEmpty(data.dataNascimento.ToString()) ? new DateTime() : Convert.ToDateTime(data.dataNascimento.ToString())); entityPessoa.pes_racaCor = Convert.ToByte(null); entityPessoa.pes_idFiliacaoPai = Guid.Empty; entityPessoa.pes_idFiliacaoMae = Guid.Empty; entityPessoa.tes_id = Guid.Empty; entityPessoa.pes_estadoCivil = Convert.ToByte(null); entityPessoa.pes_situacao = 1; PES_PessoaDeficiencia entityPessoaDeficiencia = new PES_PessoaDeficiencia { pes_id = Guid.Empty, tde_id = Guid.Empty, IsNew = true }; savePessoaReturn = PES_PessoaBO.Save(entityPessoa , entityPessoaDeficiencia , new DataTable() //dtEndereco , new DataTable() //dtContato , RetornaDocumento(data.CPF) //dtDocumento , new DataTable() //dtCertidao , Guid.Empty //pai_idAntigo , Guid.Empty //cid_idAntigo , Guid.Empty //pes_idPaiAntigo , Guid.Empty //pes_idMaeAntigo , Guid.Empty //tes_idAntigo , Guid.Empty //tde_idAntigo , null //arquivosPermitidos , 0 //tamanhoMaximoKB , null //entFoto , false //ExcluirImagemAtual ); #endregion } } #region [ Cria usuário ] entity.ent_id = data.ent_id; entity.usu_id = Guid.Empty; entity.usu_login = data.usu_login; entity.usu_email = string.IsNullOrEmpty(data.email) ? string.Empty : data.email; entity.usu_senha = string.IsNullOrEmpty(data.senha) ? string.Empty : data.senha; //Se foi recuperado ou criado uma pessoa, vincula o pes_id if (entityPessoa != null) { entity.pes_id = entityPessoa.pes_id; } entity.usu_criptografia = Convert.ToByte(eCriptografa.TripleDES); entity.usu_situacao = 1; entity.usu_dataAlteracao = DateTime.Now; entity.usu_dataCriacao = DateTime.Now; entity.usu_dominio = string.Empty; entity.usu_integracaoAD = (byte)SYS_UsuarioBO.eIntegracaoAD.NaoIntegrado; entity.IsNew = true; SortedDictionary <Guid, SYS_UsuarioBO.TmpGrupos> grupos = new SortedDictionary <Guid, SYS_UsuarioBO.TmpGrupos>(); foreach (Guid gruId in data.gru_id) { SYS_UsuarioBO.AddTmpGrupo(gruId, grupos, 1); } SortedDictionary <Guid, List <SYS_UsuarioBO.TmpEntidadeUA> > entidadeUA = new SortedDictionary <Guid, List <SYS_UsuarioBO.TmpEntidadeUA> >(); SYS_UsuarioBO.Save(entity, grupos, entidadeUA, false, data.nome, string.Empty, string.Empty, string.Empty, null); #endregion } else { throw new ValidationException("Usuário já existe."); } #region [ Log de ação] LOG_UsuarioAPIBO.Save ( new LOG_UsuarioAPI { usu_id = entity.usu_id , uap_id = entityUsuarioAPI.uap_id , lua_dataHora = DateTime.Now , lua_acao = (byte)LOG_UsuarioAPIBO.eAcao.CriacaoUsuario } ); #endregion }
/// <summary> /// Insere e altera uma pessoa /// </summary> private void _Salvar() { try { string msgErro; bool mensagemEmBranco = String.IsNullOrEmpty(_lblMessage.Text.Trim()); if (mensagemEmBranco && !UCGridContato1.SalvaConteudoGrid(out msgErro)) { UCGridContato1._MensagemErro.Visible = false; _lblMessage.Text = msgErro; txtSelectedTab.Value = "2"; return; } if (mensagemEmBranco && !UCGridCertidaoCivil1.AtualizaViewState(out msgErro)) { _lblMessage.Text = msgErro; txtSelectedTab.Value = "3"; return; } if (!UCGridDocumento1.ValidaConteudoGrid(out msgErro)) { UCGridDocumento1._MensagemErro.Visible = false; _lblMessage.Text = UtilBO.GetErroMessage(msgErro, UtilBO.TipoMensagem.Alerta); txtSelectedTab.Value = "3"; return; } //Adiciona valores na entidade de pessoa PES_Pessoa entityPessoa = new PES_Pessoa { pes_id = UCCadastroPessoa1._VS_pes_id , pes_nome = UCCadastroPessoa1._txtNome.Text , pes_nome_abreviado = UCCadastroPessoa1._txtNomeAbreviado.Text , pes_nomeSocial = UCCadastroPessoa1._txtNomeSocial.Text , pai_idNacionalidade = UCCadastroPessoa1._ComboNacionalidade.SelectedValue == "-1" ? Guid.Empty : new Guid(UCCadastroPessoa1._ComboNacionalidade.SelectedValue) , pes_naturalizado = UCCadastroPessoa1._chkNaturalizado.Checked , cid_idNaturalidade = UCCadastroPessoa1._VS_cid_id , pes_dataNascimento = (String.IsNullOrEmpty(UCCadastroPessoa1._txtDataNasc.Text.Trim()) ? new DateTime() : Convert.ToDateTime(UCCadastroPessoa1._txtDataNasc.Text.Trim())) , pes_racaCor = UCCadastroPessoa1._ComboRacaCor.SelectedValue == "-1" ? Convert.ToByte(null) : Convert.ToByte(UCCadastroPessoa1._ComboRacaCor.SelectedValue) , pes_sexo = UCCadastroPessoa1._ComboSexo.SelectedValue == "-1" ? Convert.ToByte(null) : Convert.ToByte(UCCadastroPessoa1._ComboSexo.SelectedValue) , pes_idFiliacaoPai = UCCadastroPessoa1._VS_pes_idFiliacaoPai , pes_idFiliacaoMae = UCCadastroPessoa1._VS_pes_idFiliacaoMae , tes_id = new Guid(UCCadastroPessoa1._ComboEscolaridade.SelectedValue) , pes_estadoCivil = UCCadastroPessoa1._ComboEstadoCivil.SelectedValue == "-1" ? Convert.ToByte(null) : Convert.ToByte(UCCadastroPessoa1._ComboEstadoCivil.SelectedValue) , pes_situacao = 1 , IsNew = (UCCadastroPessoa1._VS_pes_id != Guid.Empty) ? false : true }; PES_PessoaDeficiencia entityPessoaDeficiencia = new PES_PessoaDeficiencia { pes_id = _VS_pes_id , tde_id = new Guid(UCCadastroPessoa1._ComboTipoDeficiencia.SelectedValue) , IsNew = true }; CFG_Arquivo entArquivo = null; //armazema a imagem na entidade de pessoa if (!string.IsNullOrEmpty(UCCadastroPessoa1._iptFoto.PostedFile.FileName)) { string tam = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.TAMANHO_MAX_FOTO_PESSOA); if (!string.IsNullOrEmpty(tam)) { if (UCCadastroPessoa1._iptFoto.PostedFile.ContentLength > Convert.ToInt32(tam) * 1000) { throw new ArgumentException("Foto é maior que o tamanho máximo permitido."); } } if (UCCadastroPessoa1._iptFoto.PostedFile.FileName.Substring(UCCadastroPessoa1._iptFoto.PostedFile.FileName.Length - 3, 3).ToUpper() != "JPG") { throw new ArgumentException("Foto tem que estar no formato \".jpg\"."); } entArquivo = CFG_ArquivoBO.CriarEntidadeArquivo(UCCadastroPessoa1._iptFoto.PostedFile); if (_VS_arq_idAntigo > 0) { // Se já existia foto e vai ser alterada, muda só o conteúdo. entArquivo.arq_id = _VS_arq_idAntigo; entArquivo.IsNew = false; } } if (_VS_arq_idAntigo > 0) { entityPessoa.arq_idFoto = _VS_arq_idAntigo; } //Chama método salvar da pessoa /* [OLD] if (PES_PessoaBO.Save(entityPessoa * , entityPessoaDeficiencia * , UCEnderecos1._VS_enderecos * , UCGridContato1._VS_contatos * , UCGridDocumento1.RetornaDocumentoSave() * , UCGridCertidaoCivil1._VS_certidoes * , _VS_pai_idAntigo * , _VS_cid_idAntigo * , _VS_pes_idPaiAntigo * , _VS_pes_idMaeAntigo * , _VS_tes_idAntigo * , _VS_tde_idAntigo * , ApplicationWEB.TipoImagensPermitidas * , ApplicationWEB.TamanhoMaximoArquivo * , entArquivo * , UCCadastroPessoa1._chbExcluirImagem.Checked * ) * )*/ END_Endereco entityEndereco = new END_Endereco(); string msg; DataTable dtEndereco; bool cadastraEndereco = UCEnderecos1.RetornaEnderecoCadastrado(out dtEndereco, out msg); if (PES_PessoaBO.Save(entityPessoa , entityPessoaDeficiencia , dtEndereco , UCGridContato1._VS_contatos , UCGridDocumento1.RetornaDocumentoSave() , UCGridCertidaoCivil1._VS_certidoes , _VS_pai_idAntigo , _VS_cid_idAntigo , _VS_pes_idPaiAntigo , _VS_pes_idMaeAntigo , _VS_tes_idAntigo , _VS_tde_idAntigo , ApplicationWEB.TipoImagensPermitidas , ApplicationWEB.TamanhoMaximoArquivo , entArquivo , UCCadastroPessoa1._chbExcluirImagem.Checked ) ) { if (_VS_pes_id == Guid.Empty) { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Insert, "pes_id: " + entityPessoa.pes_id); __SessionWEB.PostMessages = UtilBO.GetErroMessage(String.Format("Pessoa incluída com sucesso."), UtilBO.TipoMensagem.Sucesso); } else { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Update, "pes_id: " + entityPessoa.pes_id); __SessionWEB.PostMessages = UtilBO.GetErroMessage(String.Format("Pessoa alterada com sucesso."), UtilBO.TipoMensagem.Sucesso); } Response.Redirect(__SessionWEB._AreaAtual._Diretorio + "ManutencaoPessoa/Busca.aspx", false); } else { _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar salvar a pessoa.", UtilBO.TipoMensagem.Erro); } } catch (CoreLibrary.Validation.Exceptions.ValidationException ex) { _lblMessage.Text = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta); } catch (ArgumentException ex) { _lblMessage.Text = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta); } catch (DuplicateNameException ex) { _lblMessage.Text = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta); } catch (Exception ex) { ApplicationWEB._GravaErro(ex); _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar salvar a pessoa.", UtilBO.TipoMensagem.Erro); } }
public static bool Salvar(RelatorioPreenchimentoAluno relatorio, List <CLS_AlunoDeficienciaDetalhe> lstDeficienciaDetalhe, bool permiteAlterarRacaCor, byte racaCor, List <CLS_RelatorioPreenchimentoAcoesRealizadas> lstAcoesRealizadas) { CLS_RelatorioPreenchimentoDAO dao = new CLS_RelatorioPreenchimentoDAO(); dao._Banco.Open(IsolationLevel.ReadCommitted); PES_PessoaDAO daoCore = new PES_PessoaDAO(); daoCore._Banco.Open(IsolationLevel.ReadCommitted); try { bool retorno = true; if (permiteAlterarRacaCor) { ACA_Aluno alu = new ACA_Aluno { alu_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.alu_id }; ACA_AlunoBO.GetEntity(alu); PES_Pessoa pes = new PES_Pessoa { pes_id = alu.pes_id }; PES_PessoaBO.GetEntity(pes); pes.pes_racaCor = racaCor; PES_PessoaBO.Save(pes, daoCore._Banco); } List <CLS_AlunoDeficienciaDetalhe> lstDeficienciaDetalheBanco = (from sAlunoDeficiencia alunoDeficiencia in CLS_AlunoDeficienciaDetalheBO.SelecionaPorAluno(relatorio.entityPreenchimentoAlunoTurmaDisciplina.alu_id) from sAlunoDeficienciaDetalhe alunoDeficienciaDetalhe in alunoDeficiencia.lstDeficienciaDetalhe select new CLS_AlunoDeficienciaDetalhe { alu_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.alu_id , tde_id = alunoDeficiencia.tde_id , dfd_id = alunoDeficienciaDetalhe.dfd_id }).ToList(); if (lstDeficienciaDetalheBanco.Any()) { lstDeficienciaDetalheBanco.ForEach(p => CLS_AlunoDeficienciaDetalheBO.Delete(p, dao._Banco)); } if (relatorio.entityRelatorioPreenchimento.reap_id > 0) { CLS_QuestionarioConteudoPreenchimentoBO.ExcluiPorReapId(relatorio.entityRelatorioPreenchimento.reap_id, dao._Banco); CLS_QuestionarioRespostaPreenchimentoBO.ExcluiPorReapId(relatorio.entityRelatorioPreenchimento.reap_id, dao._Banco); } retorno &= Save(relatorio.entityRelatorioPreenchimento, dao._Banco); relatorio.entityPreenchimentoAlunoTurmaDisciplina.reap_id = relatorio.entityRelatorioPreenchimento.reap_id; retorno &= CLS_RelatorioPreenchimentoAlunoTurmaDisciplinaBO.Save(relatorio.entityPreenchimentoAlunoTurmaDisciplina, dao._Banco); relatorio.lstQuestionarioConteudoPreenchimento.ForEach ( p => { p.reap_id = relatorio.entityRelatorioPreenchimento.reap_id; retorno &= CLS_QuestionarioConteudoPreenchimentoBO.Save(p, dao._Banco); } ); relatorio.lstQuestionarioRespostaPreenchimento.ForEach ( p => { p.reap_id = relatorio.entityRelatorioPreenchimento.reap_id; retorno &= CLS_QuestionarioRespostaPreenchimentoBO.Save(p, dao._Banco); } ); lstDeficienciaDetalhe.ForEach ( p => { retorno &= CLS_AlunoDeficienciaDetalheBO.Save(p, dao._Banco); } ); lstAcoesRealizadas.ForEach ( p => { if (p.rpa_situacao == (byte)CLS_RelatorioPreenchimentoAcoesRealizadasSituacao.Excluido) { retorno &= CLS_RelatorioPreenchimentoAcoesRealizadasBO.Delete(p, dao._Banco); } else { p.reap_id = relatorio.entityRelatorioPreenchimento.reap_id; retorno &= CLS_RelatorioPreenchimentoAcoesRealizadasBO.Save(p, dao._Banco); } } ); CLS_RelatorioAtendimento relatorioAtendimento = CLS_RelatorioAtendimentoBO.GetEntity(new CLS_RelatorioAtendimento { rea_id = relatorio.entityRelatorioPreenchimento.rea_id }); ACA_CalendarioAnual calendario = ACA_CalendarioAnualBO.SelecionaPorTurma(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tur_id); List <MTR_MatriculaTurma> matriculasAno = MTR_MatriculaTurmaBO.GetSelectMatriculasAlunoAno(relatorio.entityPreenchimentoAlunoTurmaDisciplina.alu_id, calendario.cal_ano); matriculasAno.ForEach(p => CLS_RelatorioPreenchimentoAlunoTurmaDisciplinaBO.LimpaCache_AlunoPreenchimentoPorPeriodoDisciplina(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id, p.tur_id)); if (relatorioAtendimento.rea_gerarPendenciaFechamento && ACA_FormatoAvaliacaoBO.CarregarPorTur(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tur_id, dao._Banco).fav_fechamentoAutomatico) { List <AlunoFechamentoPendencia> FilaProcessamento = new List <AlunoFechamentoPendencia>(); if (relatorioAtendimento.rea_tipo == (byte)CLS_RelatorioAtendimentoTipo.RP && relatorio.entityPreenchimentoAlunoTurmaDisciplina.tud_id > 0) { if (relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id > 0) { FilaProcessamento.Add( new AlunoFechamentoPendencia { tud_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.tud_id , tpc_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id , afp_frequencia = true , afp_nota = true , afp_processado = 2 }); } else { FilaProcessamento.AddRange(ACA_CalendarioPeriodoBO.SelecionaPor_Calendario(calendario.cal_id, GestaoEscolarUtilBO.MinutosCacheLongo) .Select(p => new AlunoFechamentoPendencia { tud_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.tud_id, tpc_id = p.tpc_id, afp_frequencia = true, afp_nota = false, afp_processado = 2 }).ToList()); } } else { if (relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id > 0) { FilaProcessamento.AddRange(TUR_TurmaDisciplinaBO.GetSelectBy_Turma(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tur_id, dao._Banco, GestaoEscolarUtilBO.MinutosCacheLongo) .Select(p => new AlunoFechamentoPendencia { tud_id = p.tud_id , tpc_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id , afp_frequencia = true , afp_nota = true , afp_processado = 2 }).ToList()); } else { var periodos = ACA_CalendarioPeriodoBO.SelecionaPor_Calendario(calendario.cal_id, GestaoEscolarUtilBO.MinutosCacheLongo); FilaProcessamento.AddRange(TUR_TurmaDisciplinaBO.GetSelectBy_Turma(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tur_id, dao._Banco, GestaoEscolarUtilBO.MinutosCacheLongo) .SelectMany ( tud => periodos.Select ( tpc => new AlunoFechamentoPendencia { tud_id = tud.tud_id , tpc_id = tpc.tpc_id , afp_frequencia = true , afp_nota = true , afp_processado = 2 } ).ToList() )); } } if (FilaProcessamento.Any()) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaPendencias(FilaProcessamento, dao._Banco); } } return(retorno); } catch (Exception ex) { dao._Banco.Close(ex); daoCore._Banco.Close(ex); throw; } finally { if (dao._Banco.ConnectionIsOpen) { dao._Banco.Close(); } if (daoCore._Banco.ConnectionIsOpen) { daoCore._Banco.Close(); } } }