public static bool Save ( SYS_Modulo modulo , int SiteMapMenu , int SiteMapMenuAntigo , DataTable dtVisoes , DataTable dtSiteMap ) { SYS_ModuloDAO moduloDal = new SYS_ModuloDAO(); moduloDal._Banco.Open(IsolationLevel.ReadCommitted); try { if (modulo.Validate()) { moduloDal.Salvar(modulo); //Inserir SiteMap. for (int i = 0; i < dtSiteMap.Rows.Count; i++) { if (dtSiteMap.Rows[i].RowState == DataRowState.Added || dtSiteMap.Rows[i].RowState == DataRowState.Modified) { int msm_id = Convert.ToInt32(dtSiteMap.Rows[i]["msm_id"].ToString()); SYS_ModuloSiteMap entity = new SYS_ModuloSiteMap { sis_id = modulo.sis_id , mod_id = modulo.mod_id , msm_id = msm_id , msm_nome = dtSiteMap.Rows[i]["msm_nome"].ToString() , msm_url = dtSiteMap.Rows[i]["msm_url"].ToString() , msm_urlHelp = dtSiteMap.Rows[i]["msm_urlHelp"].ToString() , msm_descricao = dtSiteMap.Rows[i]["msm_descricao"].ToString() , msm_informacoes = dtSiteMap.Rows[i]["msm_informacoes"].ToString() , IsNew = dtSiteMap.Rows[i].RowState == DataRowState.Added }; SYS_ModuloSiteMapBO.Save(entity, moduloDal._Banco); if (SiteMapMenu == msm_id) { SiteMapMenu = entity.msm_id; } if (SiteMapMenuAntigo == msm_id) { SiteMapMenuAntigo = entity.msm_id; } } } for (int i = 0; i < dtVisoes.Rows.Count; i++) { if (dtVisoes.Rows[i].RowState == DataRowState.Added) { int vis_id = Convert.ToInt32(dtVisoes.Rows[i]["vis_id"].ToString()); int vmm_ordem = SYS_VisaoModuloMenuBO.Gerar_vmm_ordem(modulo.sis_id, modulo.mod_idPai, vis_id, moduloDal._Banco); //Inserir visão do módulo SYS_VisaoModulo visaoModulo = new SYS_VisaoModulo { sis_id = modulo.sis_id , mod_id = modulo.mod_id , vis_id = vis_id , IsNew = true }; SYS_VisaoModuloBO.Save(visaoModulo, moduloDal._Banco); if (SiteMapMenu > 0) { //Insere menu para a visão nova. SYS_VisaoModuloMenu visaoModuloMenu = new SYS_VisaoModuloMenu { sis_id = modulo.sis_id , mod_id = modulo.mod_id , msm_id = SiteMapMenu , vis_id = vis_id , vmm_ordem = vmm_ordem }; SYS_VisaoModuloMenuBO.Save(visaoModuloMenu, moduloDal._Banco); } //Inserir permissões para os grupos das visões selecionadas. SYS_GrupoPermissaoBO.InsertPermissao_Visoes(modulo.sis_id, vis_id, modulo.mod_id, moduloDal._Banco); } else if (dtVisoes.Rows[i].RowState == DataRowState.Deleted) { int vis_id = Convert.ToInt32(dtVisoes.Rows[i]["vis_id", DataRowVersion.Original].ToString()); if (SiteMapMenuAntigo > 0) { //Deleta menu da visão. SYS_VisaoModuloMenu visaoModuloMenu = new SYS_VisaoModuloMenu { sis_id = modulo.sis_id , mod_id = modulo.mod_id , msm_id = SiteMapMenuAntigo , vis_id = vis_id }; SYS_VisaoModuloMenuBO.Delete(visaoModuloMenu, moduloDal._Banco); } //Deletar visão do módulo SYS_VisaoModulo visaoModulo = new SYS_VisaoModulo { sis_id = modulo.sis_id , mod_id = modulo.mod_id , vis_id = vis_id }; SYS_VisaoModuloBO.Delete(visaoModulo, moduloDal._Banco); //Deletar permissões para os grupos das visões selecionadas. SYS_GrupoPermissaoBO.DeletePermissao_Visoes(modulo.sis_id, vis_id, modulo.mod_id, moduloDal._Banco); } else { //Caso tenha alterado o SiteMap do menu e nada feito na visão. if (SiteMapMenu != SiteMapMenuAntigo) { int vis_id = Convert.ToInt32(dtVisoes.Rows[i]["vis_id"].ToString()); int vmm_ordem = SYS_VisaoModuloMenuBO.Gerar_vmm_ordem(modulo.sis_id, modulo.mod_idPai, vis_id, moduloDal._Banco); if (SiteMapMenuAntigo > 0) { //Deleta o anterior pra cada visão selecionada. SYS_VisaoModuloMenu visaoModuloMenu = new SYS_VisaoModuloMenu { sis_id = modulo.sis_id , mod_id = modulo.mod_id , msm_id = SiteMapMenuAntigo , vis_id = vis_id }; SYS_VisaoModuloMenu visaoModuloMenuAntigo = SYS_VisaoModuloMenuBO.GetEntity(visaoModuloMenu); SYS_VisaoModuloMenuBO.Delete(visaoModuloMenu, moduloDal._Banco); vmm_ordem = visaoModuloMenuAntigo.vmm_ordem; } //Inclui o novo pra cada visão selecionada. if (SiteMapMenu > 0) { SYS_VisaoModuloMenu visaoModuloMenuNovo = new SYS_VisaoModuloMenu { sis_id = modulo.sis_id , mod_id = modulo.mod_id , msm_id = SiteMapMenu , vis_id = vis_id , vmm_ordem = vmm_ordem }; SYS_VisaoModuloMenuBO.Save(visaoModuloMenuNovo, moduloDal._Banco); } } } } } else { throw new CoreLibrary.Validation.Exceptions.ValidationException(modulo.PropertiesErrorList[0].Message); } //Deletar SiteMap. for (int i = 0; i < dtSiteMap.Rows.Count; i++) { if (dtSiteMap.Rows[i].RowState == DataRowState.Deleted) { int msm_id = Convert.ToInt32(dtSiteMap.Rows[i]["msm_id", DataRowVersion.Original].ToString()); //Deleta menu da visão. SYS_VisaoModuloMenu visaoModuloMenu = new SYS_VisaoModuloMenu { sis_id = modulo.sis_id , mod_id = modulo.mod_id , msm_id = msm_id }; SYS_VisaoModuloMenuBO.Delete(visaoModuloMenu, moduloDal._Banco); SYS_ModuloSiteMap entity = new SYS_ModuloSiteMap { sis_id = modulo.sis_id , mod_id = modulo.mod_id , msm_id = msm_id }; SYS_ModuloSiteMapBO.Delete(entity, moduloDal._Banco); } } return(true); } catch (Exception err) { moduloDal._Banco.Close(err); throw; } finally { moduloDal._Banco.Close(); } }
/// <summary> /// Recebe o valor do auto incremento e coloca na propriedade /// </summary> protected override bool ReceberAutoIncremento(QuerySelectStoredProcedure qs, SYS_VisaoModuloMenu entity) { return(true); }