예제 #1
0
        /// <summary>
        /// Selecionar as entidades filhas (subentidades)
        /// </summary>
        /// <param name="entidadeId">Id da entidade</param>
        /// <returns>Lista de entidades</returns>
        public DataTable SelecionarEntidadesFilhas(Guid entidadeId)
        {
            SYS_EntidadeDAO dao = new SYS_EntidadeDAO();
            DataTable       dt  = dao.SelecionarEntidadesFilhas(entidadeId);

            return(dt);
        }
예제 #2
0
        public static List <SYS_Entidade> SelecionarTodasLigadasPorSistemas()
        {
            SYS_EntidadeDAO dao = new SYS_EntidadeDAO();

            List <SYS_Entidade> lista = dao.SelecionarTodasLigadasPorSistemas();

            return(lista);
        }
예제 #3
0
        public static List <SYS_Entidade> SelecionarPorIdGrupo(Guid entidadeId, Guid grupoId)
        {
            SYS_EntidadeDAO dao = new SYS_EntidadeDAO();

            List <SYS_Entidade> lista = dao.SelecionarPorIdGrupo(entidadeId, grupoId);

            return(lista);
        }
예제 #4
0
        public new static bool Save
        (
            RHU_Funcao entity
        )
        {
            RHU_FuncaoDAO funDao = new RHU_FuncaoDAO();

            funDao._Banco.Open(IsolationLevel.ReadCommitted);

            SYS_EntidadeDAO entDao = new SYS_EntidadeDAO();

            entDao._Banco.Open(IsolationLevel.ReadCommitted);

            try
            {
                if (entity.Validate())
                {
                    if (VerificaNomeExistente(entity))
                    {
                        throw new DuplicateNameException("Já existe uma função cadastrada com este nome.");
                    }

                    if (VerificaCodigoExistente(entity))
                    {
                        throw new DuplicateNameException("Já existe uma função cadastrada com este código.");
                    }

                    //Salva o cargo
                    funDao.Salvar(entity);

                    if (entity.IsNew)
                    {
                        //Incrementa um na integridade da entidade
                        entDao.Update_IncrementaIntegridade(entity.ent_id);
                    }
                }
                else
                {
                    throw new ValidationException(entity.PropertiesErrorList[0].Message);
                }

                return(true);
            }
            catch (Exception err)
            {
                funDao._Banco.Close(err);
                entDao._Banco.Close(err);

                throw;
            }
            finally
            {
                funDao._Banco.Close();
                entDao._Banco.Close();
            }
        }
예제 #5
0
        public new static bool Delete
        (
            RHU_Funcao entity
        )
        {
            RHU_FuncaoDAO dao = new RHU_FuncaoDAO();

            dao._Banco.Open(IsolationLevel.ReadCommitted);

            SYS_EntidadeDAO entDao = new SYS_EntidadeDAO();

            entDao._Banco.Open(IsolationLevel.ReadCommitted);

            try
            {
                //Verifica se a função pode ser deletada
                if (GestaoEscolarUtilBO.VerificarIntegridade("fun_id", entity.fun_id.ToString(), "RHU_Funcao", dao._Banco))
                {
                    throw new ValidationException("Não é possível excluir a função pois possui outros registros ligados a ela.");
                }

                //Decrementa um na integridade da entidade
                entDao.Update_DecrementaIntegridade(entity.ent_id);

                //Deleta logicamente a função
                dao.Delete(entity);

                return(true);
            }
            catch (Exception err)
            {
                dao._Banco.Close(err);
                entDao._Banco.Close(err);

                throw;
            }
            finally
            {
                dao._Banco.Close();
                entDao._Banco.Close();
            }
        }
예제 #6
0
        public static bool Salvar
        (
            int tad_id,
            Guid uad_idSuperior,
            int esc_id,
            List <ACA_ArquivoArea> listDocumentos
        )
        {
            //Inicio do processo de Registro no BD.
            ACA_ArquivoAreaDAO dao = new ACA_ArquivoAreaDAO();

            //Abertura de BEGIN TRAN para Salvar Documentos.
            dao._Banco.Open(IsolationLevel.ReadCommitted);

            SYS_EntidadeDAO entDao = new SYS_EntidadeDAO();

            entDao._Banco.Open(IsolationLevel.ReadCommitted);

            try
            {
                List <ACA_ArquivoArea> listaBanco;
                using (DataTable dtBanco = GetSelectBy_Id_Dre_Escola(tad_id, esc_id, uad_idSuperior, -1, true, false, dao._Banco))
                {
                    listaBanco = dtBanco.Rows.Count > 0 ?
                                 dtBanco.Rows.Cast <DataRow>().Select(p => dao.DataRowToEntity(p, new ACA_ArquivoArea())).ToList() :
                                 new List <ACA_ArquivoArea>();
                }

                foreach (ACA_ArquivoArea entityArquivoArea in listDocumentos)
                {
                    ACA_ArquivoAreaBO.Save(entityArquivoArea, dao._Banco);

                    if (entityArquivoArea.arq_id > 0)
                    {
                        SYS_Arquivo arq = new SYS_Arquivo {
                            arq_id = entityArquivoArea.arq_id
                        };
                        SYS_ArquivoBO.GetEntity(arq, dao._Banco);
                        arq.arq_situacao = (byte)SYS_ArquivoSituacao.Ativo;
                        SYS_ArquivoBO.Save(arq, dao._Banco);
                    }
                }

                bool teste = listaBanco.Where(p => !listDocumentos.Exists(q => q.aar_id == p.aar_id && q.tad_id == p.tad_id))
                             .ToList()
                             .Aggregate(true, (deletou, doc) => deletou & Delete(doc, dao._Banco));

                return(true);
            }
            catch (Exception err)
            {
                //Roolback da transação
                dao._Banco.Close(err);
                entDao._Banco.Close(err);
                throw;
            }
            finally
            {
                //Fechamento da transação
                if (dao._Banco.ConnectionIsOpen)
                {
                    dao._Banco.Close();
                }

                if (entDao._Banco.ConnectionIsOpen)
                {
                    entDao._Banco.Close();
                }
            }
        }
        public new static bool Delete
        (
            SYS_UnidadeAdministrativa entity
            , TalkDBTransaction banco
        )
        {
            SYS_UnidadeAdministrativaDAO dal = new SYS_UnidadeAdministrativaDAO();

            if (banco == null)
            {
                dal._Banco.Open(IsolationLevel.ReadCommitted);
            }
            else
            {
                dal._Banco = banco;
            }

            try
            {
                //Verifica se a unidade administrativa pode ser deletada
                if (dal.Select_Integridade(entity.ent_id, entity.uad_id) > 0)
                {
                    throw new CoreLibrary.Validation.Exceptions.ValidationException("Não é possível excluir a unidade administrativa pois possui outros registros ligados a ela.");
                }

                //Decrementa um na integridade do endereço (se necessário)
                SYS_UnidadeAdministrativaEnderecoDAO uadendDal = new SYS_UnidadeAdministrativaEnderecoDAO {
                    _Banco = dal._Banco
                };

                SYS_UnidadeAdministrativaEndereco entityUnidadeAdministrativaEndereco = new SYS_UnidadeAdministrativaEndereco {
                    ent_id = entity.ent_id, uad_id = entity.uad_id, uae_id = uadendDal.SelectBy_ent_id_uad_id_top_one(entity.ent_id, entity.uad_id)
                };

                uadendDal.Carregar(entityUnidadeAdministrativaEndereco);

                if (entityUnidadeAdministrativaEndereco.uae_situacao != 3)
                {
                    END_EnderecoDAO endDal = new END_EnderecoDAO {
                        _Banco = dal._Banco
                    };
                    endDal.Update_DecrementaIntegridade(entityUnidadeAdministrativaEndereco.end_id);
                }

                //Decrementa um na integridade de cada tipo de contato da unidade administrativa
                SYS_UnidadeAdministrativaContatoDAO uadconDal = new SYS_UnidadeAdministrativaContatoDAO {
                    _Banco = dal._Banco
                };
                SYS_TipoMeioContatoDAO conDal = new SYS_TipoMeioContatoDAO {
                    _Banco = dal._Banco
                };

                DataTable dt = uadconDal.SelectBy_ent_id(entity.ent_id, entity.uad_id, false, 1, 1, out totalRecords);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    conDal.Update_DecrementaIntegridade(new Guid(dt.Rows[i]["tmc_id"].ToString()));
                }

                //Decrementa um na integridade da entidade
                SYS_EntidadeDAO entDal = new SYS_EntidadeDAO {
                    _Banco = dal._Banco
                };
                entDal.Update_DecrementaIntegridade(entity.ent_id);

                //Decrementa um na integridade do tipo de unidade administrativa
                SYS_TipoUnidadeAdministrativaDAO tipoDAL = new SYS_TipoUnidadeAdministrativaDAO {
                    _Banco = dal._Banco
                };
                tipoDAL.Update_DecrementaIntegridade(entity.tua_id);

                //Decrementa um na integridade da unidade administrativa superior (se existir)
                if (entity.uad_idSuperior != Guid.Empty)
                {
                    dal.Update_DecrementaIntegridade(entity.ent_id, entity.uad_idSuperior);
                }

                //Deleta logicamente a unidade administrativa
                dal.Delete(entity);

                return(true);
            }
            catch (Exception err)
            {
                if (banco == null)
                {
                    dal._Banco.Close(err);
                }

                throw;
            }
            finally
            {
                if (banco == null)
                {
                    dal._Banco.Close();
                }
            }
        }
        public static bool Save
        (
            SYS_UnidadeAdministrativa entityUnidadeAdministrativa
            , List <END_Endereco> ltEntityEndereco
            , List <SYS_UnidadeAdministrativaEndereco> ltEntityUnidadeAdministrativaEndereco
            , DataTable dtContatos
            , Guid uad_idSuperiorAntigo
            , Guid end_idAntigo
            , TalkDBTransaction banco
        )
        {
            SYS_UnidadeAdministrativaDAO uadDAL = new SYS_UnidadeAdministrativaDAO();

            if (banco == null)
            {
                uadDAL._Banco.Open(IsolationLevel.ReadCommitted);
            }
            else
            {
                uadDAL._Banco = banco;
            }

            try
            {
                if (ltEntityEndereco.Count > 0)
                {
                    for (int i = 0; i < ltEntityEndereco.Count; i++)
                    {
                        // Inclui dados na tabela END_Endereco (se necessário)
                        // if (ltEntityEndereco[i].IsNew)
                        string end_situacao = ltEntityEndereco[i].end_situacao.ToString();
                        if (!end_situacao.Equals("3"))
                        {
                            ltEntityEndereco[i].end_id = END_EnderecoBO.Save(ltEntityEndereco[i], Guid.Empty, uadDAL._Banco);
                            ltEntityUnidadeAdministrativaEndereco[i].end_id = ltEntityEndereco[i].end_id;
                        }
                    }
                }

                // Salva dados na tabela SYS_UnidadeAdministrativa
                if (entityUnidadeAdministrativa.Validate())
                {
                    Func <Guid, Guid, bool> VerificaUASuperior = (x, y) => x != Guid.Empty && y != Guid.Empty && x.Equals(y);

                    //VERIFICA SE O USUÁRIO ESTÁ TENTANDO VINCULA A MESMA UNIDADE ADMINISTRATIVA COMO SUPERIOR
                    if (VerificaUASuperior(entityUnidadeAdministrativa.uad_id, entityUnidadeAdministrativa.uad_idSuperior))
                    {
                        throw new CoreLibrary.Validation.Exceptions.ValidationException("Não é possível vincular a mesma unidade administrativa como superior.");
                    }
                    else if (VerificaNomeExistente(entityUnidadeAdministrativa))
                    {
                        throw new DuplicateNameException("Já existe uma unidade administrativa cadastrada com este nome.");
                    }

                    uadDAL.Salvar(entityUnidadeAdministrativa);
                }
                else
                {
                    throw new ValidationException(entityUnidadeAdministrativa.PropertiesErrorList[0].Message);
                }

                if (ltEntityUnidadeAdministrativaEndereco.Count > 0)
                {
                    for (int i = 0; i < ltEntityUnidadeAdministrativaEndereco.Count; i++)
                    {
                        // Salva dados na tabela SYS_UnidadeAdministrativaEndereco
                        if (ltEntityUnidadeAdministrativaEndereco[i].Validate())
                        {
                            /* SYS_UnidadeAdministrativaEnderecoDAO uaendDAL = new SYS_UnidadeAdministrativaEnderecoDAO { _Banco = uadDAL._Banco };
                             * ltEntityUnidadeAdministrativaEndereco[i].uad_id = entityUnidadeAdministrativa.uad_id;
                             * uaendDAL.Salvar(ltEntityUnidadeAdministrativaEndereco[i]);*/


                            SYS_UnidadeAdministrativaEnderecoDAO uaendDAL = new SYS_UnidadeAdministrativaEnderecoDAO {
                                _Banco = uadDAL._Banco
                            };
                            //Se for Delete
                            string end_situacao = ltEntityEndereco[i].end_situacao.ToString();
                            if (end_situacao.Equals("3"))
                            {
                                uaendDAL.Delete(ltEntityUnidadeAdministrativaEndereco[i]);
                            }
                            else
                            {// Se for Update ou Save
                                // Salva dados na tabela SYS_UnidadeAdministrativaEndereco
                                ltEntityUnidadeAdministrativaEndereco[i].uad_id = entityUnidadeAdministrativa.uad_id;
                                uaendDAL.Salvar(ltEntityUnidadeAdministrativaEndereco[i]);
                            }
                        }
                        else
                        {
                            throw new ValidationException(ltEntityUnidadeAdministrativaEndereco[i].PropertiesErrorList[0].Message);
                        }

                        if (ltEntityUnidadeAdministrativaEndereco[i].IsNew)
                        {
                            if (ltEntityUnidadeAdministrativaEndereco[i].end_id != Guid.Empty)
                            {
                                // Incrementa um na integridade do endereço
                                END_EnderecoDAO endDAL = new END_EnderecoDAO {
                                    _Banco = uadDAL._Banco
                                };
                                endDAL.Update_IncrementaIntegridade(ltEntityUnidadeAdministrativaEndereco[i].end_id);
                            }
                        }
                        else
                        {
                            if (end_idAntigo != ltEntityUnidadeAdministrativaEndereco[i].end_id)
                            {
                                END_EnderecoDAO endDAL = new END_EnderecoDAO {
                                    _Banco = uadDAL._Banco
                                };

                                if (ltEntityUnidadeAdministrativaEndereco[i].uae_situacao != 3)
                                {
                                    // Decrementa um na integridade do endereço antigo (se existia)
                                    if (end_idAntigo != Guid.Empty)
                                    {
                                        endDAL.Update_DecrementaIntegridade(end_idAntigo);
                                    }

                                    // Incrementa um na integridade do endereço atual (se existir)
                                    if (ltEntityUnidadeAdministrativaEndereco[i].end_id != Guid.Empty)
                                    {
                                        endDAL.Update_IncrementaIntegridade(ltEntityUnidadeAdministrativaEndereco[i].end_id);
                                    }
                                }
                            }
                            else
                            {
                                if (ltEntityUnidadeAdministrativaEndereco[i].uae_situacao == 3)
                                {
                                    // Decrementa um na integridade do endereço atual
                                    if (end_idAntigo != Guid.Empty)
                                    {
                                        END_EnderecoDAO endDAL = new END_EnderecoDAO {
                                            _Banco = uadDAL._Banco
                                        };
                                        endDAL.Update_DecrementaIntegridade(ltEntityUnidadeAdministrativaEndereco[i].end_id);
                                    }
                                }
                            }
                        }
                    }
                }

                // Salva dados na tabela SYS_UnidadeAdministrativaContato
                SYS_UnidadeAdministrativaContato entityContato = new SYS_UnidadeAdministrativaContato
                {
                    ent_id = entityUnidadeAdministrativa.ent_id
                    ,
                    uad_id = entityUnidadeAdministrativa.uad_id
                };

                for (int i = 0; i < dtContatos.Rows.Count; i++)
                {
                    if (dtContatos.Rows[i].RowState != DataRowState.Deleted)
                    {
                        if (dtContatos.Rows[i].RowState == DataRowState.Added)
                        {
                            entityContato.tmc_id       = new Guid(dtContatos.Rows[i]["tmc_id"].ToString());
                            entityContato.uac_contato  = dtContatos.Rows[i]["contato"].ToString();
                            entityContato.uac_situacao = Convert.ToByte(1);
                            entityContato.uac_id       = new Guid(dtContatos.Rows[i]["id"].ToString());
                            entityContato.IsNew        = true;
                            SYS_UnidadeAdministrativaContatoBO.Save(entityContato, uadDAL._Banco);

                            // Incrementa um na integridade do tipo de contato
                            SYS_TipoMeioContatoDAO tipoDAL = new SYS_TipoMeioContatoDAO {
                                _Banco = uadDAL._Banco
                            };
                            tipoDAL.Update_IncrementaIntegridade(entityContato.tmc_id);
                        }
                        else if (dtContatos.Rows[i].RowState == DataRowState.Modified)
                        {
                            entityContato.tmc_id       = new Guid(dtContatos.Rows[i]["tmc_id"].ToString());
                            entityContato.uac_contato  = dtContatos.Rows[i]["contato"].ToString();
                            entityContato.uac_situacao = Convert.ToByte(1);
                            entityContato.uac_id       = new Guid(dtContatos.Rows[i]["id"].ToString());
                            entityContato.IsNew        = false;
                            SYS_UnidadeAdministrativaContatoBO.Save(entityContato, uadDAL._Banco);
                        }
                    }
                    else
                    {
                        entityContato.uac_id = (Guid)dtContatos.Rows[i]["id", DataRowVersion.Original];
                        entityContato.tmc_id = (Guid)dtContatos.Rows[i]["tmc_id", DataRowVersion.Original];
                        SYS_UnidadeAdministrativaContatoDAO uadconDAL = new SYS_UnidadeAdministrativaContatoDAO {
                            _Banco = uadDAL._Banco
                        };
                        uadconDAL.Delete(entityContato);

                        //Decrementa um na integridade do tipo de contato
                        SYS_TipoMeioContatoDAO tipoDAL = new SYS_TipoMeioContatoDAO {
                            _Banco = uadDAL._Banco
                        };
                        tipoDAL.Update_DecrementaIntegridade(entityContato.tmc_id);
                    }
                }

                if (entityUnidadeAdministrativa.IsNew)
                {
                    // Incrementa um na integridade da entidade
                    SYS_EntidadeDAO entDAL = new SYS_EntidadeDAO {
                        _Banco = uadDAL._Banco
                    };
                    entDAL.Update_IncrementaIntegridade(entityUnidadeAdministrativa.ent_id);

                    // Incrementa um na integridade do tipo de unidade administrativa
                    SYS_TipoUnidadeAdministrativaDAO tipoDAL = new SYS_TipoUnidadeAdministrativaDAO {
                        _Banco = uadDAL._Banco
                    };
                    tipoDAL.Update_IncrementaIntegridade(entityUnidadeAdministrativa.tua_id);

                    // Incrementa um na integridade da unidade administrativa superior (se existir)
                    if (entityUnidadeAdministrativa.uad_idSuperior != Guid.Empty)
                    {
                        uadDAL.Update_IncrementaIntegridade(entityUnidadeAdministrativa.ent_id, entityUnidadeAdministrativa.uad_idSuperior);
                    }
                }
                else
                {
                    if (uad_idSuperiorAntigo != entityUnidadeAdministrativa.uad_idSuperior)
                    {
                        // Decrementa um na integridade da unidade administrativa superior anterior (se existia)
                        if (uad_idSuperiorAntigo != Guid.Empty)
                        {
                            uadDAL.Update_DecrementaIntegridade(entityUnidadeAdministrativa.ent_id, uad_idSuperiorAntigo);
                        }

                        // Incrementa um na integridade da unidade administrativa superior atual (se existir)
                        if (entityUnidadeAdministrativa.uad_idSuperior != Guid.Empty)
                        {
                            uadDAL.Update_IncrementaIntegridade(entityUnidadeAdministrativa.ent_id, entityUnidadeAdministrativa.uad_idSuperior);
                        }
                    }
                }

                return(true);
            }
            catch (Exception err)
            {
                if (banco == null)
                {
                    uadDAL._Banco.Close(err);
                }

                throw;
            }
            finally
            {
                if (banco == null)
                {
                    uadDAL._Banco.Close();
                }
            }
        }
예제 #9
0
        public static bool Save(RHU_Cargo entity, List <RHU_CargoDisciplina> list)
        {
            SYS_EntidadeDAO entDao = new SYS_EntidadeDAO();

            entDao._Banco.Open(IsolationLevel.ReadCommitted);

            TalkDBTransaction banco = new RHU_CargoDAO()._Banco.CopyThisInstance();

            banco.Open(IsolationLevel.ReadCommitted);

            try
            {
                if (!entity.Validate())
                {
                    throw new ValidationException(entity.PropertiesErrorList[0].Message);
                }

                if (VerificaNomeExistente(entity, banco))
                {
                    throw new DuplicateNameException("Já existe um cargo cadastrado com este nome.");
                }

                if (!string.IsNullOrEmpty(entity.crg_codigo) && VerificaCodigoExistente(entity, banco))
                {
                    throw new DuplicateNameException("Já existe um cargo cadastrado com este código.");
                }

                if (entity.crg_cargoDocente)
                {
                    if (entity.crg_maxAulaDia <= 0)
                    {
                        throw new ArgumentException("Máximo de aulas por dia deve ser maior do que 0.");
                    }
                    if (entity.crg_maxAulaDia > 24)
                    {
                        throw new ArgumentException("Máximo de aulas por dia não pode ser maior do que 24.");
                    }
                    if (entity.crg_maxAulaSemana <= 0)
                    {
                        throw new ArgumentException("Máximo de aulas por semana deve ser maior do que 0.");
                    }
                    if (entity.crg_maxAulaSemana > 168)
                    {
                        throw new ArgumentException("Máximo de aulas por semana não pode ser maior do que 168.");
                    }
                }

                // Salva o cargo.
                Save(entity, banco);

                if (entity.IsNew)
                {
                    // Incrementa um na integridade da entidade.
                    entDao.Update_IncrementaIntegridade(entity.ent_id);
                }

                // Exclui as disciplinas do cargo.
                RHU_CargoDisciplina entityDelete = new RHU_CargoDisciplina {
                    crg_id = entity.crg_id
                };
                RHU_CargoDisciplinaBO.DeleteByCargo(entityDelete, banco);

                // Salva as disciplinas do cargo.
                foreach (RHU_CargoDisciplina entityDis in list)
                {
                    entityDis.crg_id = entity.crg_id;
                    RHU_CargoDisciplinaBO.Save(entityDis, banco);
                }

                return(true);
            }
            catch (Exception ex)
            {
                entDao._Banco.Close(ex);
                banco.Close(ex);
                throw;
            }
            finally
            {
                if (entDao._Banco.ConnectionIsOpen)
                {
                    entDao._Banco.Close();
                }

                if (banco.ConnectionIsOpen)
                {
                    banco.Close();
                }
            }
        }