public static bool Save ( SYS_Entidade entityEntidade , DataTable entityEntidadeEndereco , DataTable dtContatos , Guid ent_idSuperiorAntigo , Guid end_idAntigo , string caminho , string nomeLogoCliente , HttpPostedFile logoCliente , CoreLibrary.Data.Common.TalkDBTransaction banco ) /* public static bool Save * ( * SYS_Entidade entityEntidade * , END_Endereco entityEndereco * , SYS_EntidadeEndereco entityEntidadeEndereco * , DataTable dtContatos * , Guid ent_idSuperiorAntigo * , Guid end_idAntigo * , string caminho * , string nomeLogoCliente * , HttpPostedFile logoCliente * ,CoreLibrary.Data.Common.TalkDBTransaction banco * )*/ { SYS_EntidadeDAO entDAL = new SYS_EntidadeDAO(); if (banco == null) { entDAL._Banco.Open(IsolationLevel.ReadCommitted); } else { entDAL._Banco = banco; } try { //Salva dados na tabela SYS_Entidade if (entityEntidade.Validate()) { if (VerificaRazaoSocialExistente(entityEntidade)) { throw new DuplicateNameException("Já existe uma entidade cadastrada com esta razão social."); } if (!string.IsNullOrEmpty(entityEntidade.ent_cnpj.Trim())) { if (!UtilBO._ValidaCNPJ(entityEntidade.ent_cnpj)) { throw new ArgumentException("CNPJ inválido."); } if (VerificaCNPJExistente(entityEntidade)) { throw new DuplicateNameException("Já existe uma entidade cadastrada com este CNPJ."); } } if (!string.IsNullOrEmpty(entityEntidade.ent_urlAcesso)) { Regex reg = new Regex(@"^(http|https):\/\/([a-z]+)(\.[a-z]+)+$"); if (!reg.IsMatch(entityEntidade.ent_urlAcesso)) { throw new ArgumentException("URL de acesso inválido."); } } if (entDAL.Salvar(entityEntidade) && !string.IsNullOrEmpty(nomeLogoCliente) && logoCliente != null) { nomeLogoCliente = entityEntidade.ent_id + "_" + nomeLogoCliente; UtilBO.SaveThumbnailImage ( 1000 , caminho , nomeLogoCliente , logoCliente , 84 , 60 ); } } else { throw new CoreLibrary.Validation.Exceptions.ValidationException(entityEntidade.PropertiesErrorList[0].Message); } //TODO:[Gabriel] Multiplos endereços /* * * if (entityEntidadeEndereco != null) * { * //Salva dados na tabela SYS_EntidadeEndereco * if (entityEntidadeEndereco.Validate()) * { * SYS_EntidadeEnderecoDAO entendDAL = new SYS_EntidadeEnderecoDAO { _Banco = entDAL._Banco }; * entityEntidadeEndereco.ent_id = entityEntidade.ent_id; * entendDAL.Salvar(entityEntidadeEndereco); * } * else * { * throw new CoreLibrary.Validation.Exceptions.ValidationException(entityEntidadeEndereco.PropertiesErrorList[0].Message); * } * * if (entityEntidadeEndereco.IsNew) * { * if (entityEntidadeEndereco.end_id != Guid.Empty) * { * //Incrementa um na integridade do endereço * END_EnderecoDAO endDAL = new END_EnderecoDAO { _Banco = entDAL._Banco }; * endDAL.Update_IncrementaIntegridade(entityEntidadeEndereco.end_id); * } * } * else * { * if (end_idAntigo != entityEntidadeEndereco.end_id) * { * END_EnderecoDAO endDAL = new END_EnderecoDAO { _Banco = entDAL._Banco }; * * if (entityEntidadeEndereco.ene_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 (entityEntidadeEndereco.end_id != Guid.Empty) * endDAL.Update_IncrementaIntegridade(entityEntidadeEndereco.end_id); * } * } * else * { * if (entityEntidadeEndereco.ene_situacao == 3) * { * //Decrementa um na integridade do endereço atual * if (end_idAntigo != Guid.Empty) * { * END_EnderecoDAO endDAL = new END_EnderecoDAO { _Banco = entDAL._Banco }; * endDAL.Update_DecrementaIntegridade(entityEntidadeEndereco.end_id); * } * } * } * } * } */ //Salva dados na tabela SYS_EntidadeContato SYS_EntidadeContato entityContato = new SYS_EntidadeContato { ent_id = entityEntidade.ent_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.enc_contato = dtContatos.Rows[i]["contato"].ToString(); entityContato.enc_situacao = Convert.ToByte(1); entityContato.enc_id = new Guid(dtContatos.Rows[i]["id"].ToString()); entityContato.IsNew = true; SYS_EntidadeContatoBO.Save(entityContato, entDAL._Banco); //Incrementa um na integridade do tipo de contato SYS_TipoMeioContatoDAO tipoDAL = new SYS_TipoMeioContatoDAO { _Banco = entDAL._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.enc_contato = dtContatos.Rows[i]["contato"].ToString(); entityContato.enc_situacao = Convert.ToByte(1); entityContato.enc_id = new Guid(dtContatos.Rows[i]["id"].ToString()); entityContato.IsNew = false; SYS_EntidadeContatoBO.Save(entityContato, entDAL._Banco); } } else { entityContato.enc_id = (Guid)dtContatos.Rows[i]["id", DataRowVersion.Original]; entityContato.tmc_id = (Guid)dtContatos.Rows[i]["tmc_id", DataRowVersion.Original]; SYS_EntidadeContatoDAO entconDAL = new SYS_EntidadeContatoDAO { _Banco = entDAL._Banco }; entconDAL.Delete(entityContato); //Decrementa um na integridade do tipo de contato SYS_TipoMeioContatoDAO tipoDAL = new SYS_TipoMeioContatoDAO { _Banco = entDAL._Banco }; tipoDAL.Update_DecrementaIntegridade(entityContato.tmc_id); } } if (entityEntidade.IsNew) { //Incrementa um na integridade do tipo de entidade SYS_TipoEntidadeDAO tipoDAL = new SYS_TipoEntidadeDAO { _Banco = entDAL._Banco }; tipoDAL.Update_IncrementaIntegridade(entityEntidade.ten_id); //Incrementa um na integridade da entidade superior (se existir) if (entityEntidade.ent_idSuperior != Guid.Empty) { entDAL.Update_IncrementaIntegridade(entityEntidade.ent_idSuperior); } } else { if (ent_idSuperiorAntigo != entityEntidade.ent_idSuperior) { //Decrementa um na integridade da entidade superior anterior (se existia) if (ent_idSuperiorAntigo != Guid.Empty) { entDAL.Update_DecrementaIntegridade(ent_idSuperiorAntigo); } //Incrementa um na integridade da entidade superior atual (se existir) if (entityEntidade.ent_idSuperior != Guid.Empty) { entDAL.Update_IncrementaIntegridade(entityEntidade.ent_idSuperior); } } } // endereço SYS_EntidadeEndereco entityEndereco = new SYS_EntidadeEndereco { ent_id = entityEntidade.ent_id }; // ABRIR CONEXÃO SYS_EntidadeEnderecoDAO entidadeEnderecoDAO = new SYS_EntidadeEnderecoDAO(); entidadeEnderecoDAO._Banco = entDAL._Banco; for (int i = 0; i < entityEntidadeEndereco.Rows.Count; i++) { //if (entityEntidadeEndereco.Rows[i].RowState != DataRowState.Deleted) if (!Convert.ToBoolean(entityEntidadeEndereco.Rows[i]["excluido"].ToString())) { string end_id = entityEntidadeEndereco.Rows[i]["end_id"].ToString(); if ((String.IsNullOrEmpty(end_id)) || (end_id.Equals(Guid.Empty.ToString()))) { END_Endereco entityNovoEndereco = new END_Endereco { //[OLD]end_id = new Guid(dtEndereco.Rows[i]["end_id"].ToString()) end_cep = entityEntidadeEndereco.Rows[i]["end_cep"].ToString() , end_logradouro = entityEntidadeEndereco.Rows[i]["end_logradouro"].ToString() , end_distrito = entityEntidadeEndereco.Rows[i]["end_distrito"].ToString() , end_zona = entityEntidadeEndereco.Rows[i]["end_zona"].ToString() == "0" || string.IsNullOrEmpty(entityEntidadeEndereco.Rows[i]["end_zona"].ToString()) ? Convert.ToByte(0) : Convert.ToByte(entityEntidadeEndereco.Rows[i]["end_zona"].ToString()) , end_bairro = entityEntidadeEndereco.Rows[i]["end_bairro"].ToString() , cid_id = new Guid(entityEntidadeEndereco.Rows[i]["cid_id"].ToString()) , end_situacao = Convert.ToByte(1) }; //Inclui dados na tabela END_Endereco (se necessário) if (entityNovoEndereco.end_id == Guid.Empty) { entityEndereco.end_id = END_EnderecoBO.Save(entityNovoEndereco, Guid.Empty, entDAL._Banco); entityNovoEndereco.end_id = entityEndereco.end_id; } // entityEntidadeEndereco.Rows[i]["end_id"] = entityNovoEndereco.end_id; } string endRel_id = entityEntidadeEndereco.Rows[i]["endRel_id"].ToString(); if (entityEntidadeEndereco.Rows[i].RowState == DataRowState.Added || string.IsNullOrEmpty(endRel_id)) { //TRATA DECIMAL decimal latitude = string.IsNullOrEmpty(entityEntidadeEndereco.Rows[i]["latitude"].ToString()) ? 0 : decimal.Parse(entityEntidadeEndereco.Rows[i]["latitude"].ToString()); decimal longitude = string.IsNullOrEmpty(entityEntidadeEndereco.Rows[i]["longitude"].ToString()) ? 0 : decimal.Parse(entityEntidadeEndereco.Rows[i]["longitude"].ToString()); //ATRIBUI VALORES entityEndereco.ent_id = entityEntidade.ent_id; entityEndereco.end_id = new Guid(entityEntidadeEndereco.Rows[i]["end_id"].ToString()); entityEndereco.ene_numero = entityEntidadeEndereco.Rows[i]["numero"].ToString(); entityEndereco.ene_complemento = entityEntidadeEndereco.Rows[i]["complemento"].ToString(); entityEndereco.ene_situacao = Convert.ToByte(1); entityEndereco.ene_id = new Guid(entityEntidadeEndereco.Rows[i]["id"].ToString()); entityEndereco.IsNew = true; // entityEndereco.ene_enderecoPrincipal = string.IsNullOrEmpty(entityEntidadeEndereco.Rows[i]["enderecoprincipal"].ToString()) ? false : Convert.ToBoolean(entityEntidadeEndereco.Rows[i]["enderecoprincipal"]); entityEndereco.ene_latitude = latitude; entityEndereco.ene_longitude = longitude; // entidadeEnderecoDAO.Salvar(entityEndereco); } else if (entityEntidadeEndereco.Rows[i].RowState == DataRowState.Modified && !string.IsNullOrEmpty(endRel_id)) { //TRATA DECIMAL decimal latitude = string.IsNullOrEmpty(entityEntidadeEndereco.Rows[i]["latitude"].ToString()) ? 0 : decimal.Parse(entityEntidadeEndereco.Rows[i]["latitude"].ToString()); decimal longitude = string.IsNullOrEmpty(entityEntidadeEndereco.Rows[i]["longitude"].ToString()) ? 0 : decimal.Parse(entityEntidadeEndereco.Rows[i]["longitude"].ToString()); //ATRIBUI VALORES entityEndereco.ene_id = new Guid(entityEntidadeEndereco.Rows[i]["endRel_id"].ToString()); entityEndereco.ent_id = entityEntidade.ent_id; entityEndereco.end_id = new Guid(entityEntidadeEndereco.Rows[i]["end_id"].ToString()); // entityEndereco.ene_numero = entityEntidadeEndereco.Rows[i]["numero"].ToString(); entityEndereco.ene_complemento = entityEntidadeEndereco.Rows[i]["complemento"].ToString(); bool excluido = Convert.ToBoolean(entityEntidadeEndereco.Rows[i]["excluido"]); if (excluido) { entityEndereco.ene_situacao = Convert.ToByte(3); } else { entityEndereco.ene_situacao = Convert.ToByte(1); } entityEndereco.IsNew = false; // entityEndereco.ene_enderecoPrincipal = string.IsNullOrEmpty(entityEntidadeEndereco.Rows[i]["enderecoprincipal"].ToString()) ? false : Convert.ToBoolean(entityEntidadeEndereco.Rows[i]["enderecoprincipal"]); entityEndereco.ene_latitude = latitude; entityEndereco.ene_longitude = longitude; // entidadeEnderecoDAO.Salvar(entityEndereco); } } else { entityEndereco.ene_id = new Guid(entityEntidadeEndereco.Rows[i]["endRel_id", DataRowVersion.Original].ToString()); entityEndereco.end_id = new Guid(entityEntidadeEndereco.Rows[i]["end_id", DataRowVersion.Original].ToString()); entidadeEnderecoDAO.Delete(entityEndereco); } } return(true); } catch (Exception err) { if (banco == null) { entDAL._Banco.Close(err); } throw; } finally { if (banco == null) { entDAL._Banco.Close(); } } }