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(); } } }