コード例 #1
0
        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();
            }
        }
コード例 #2
0
 /// <summary>
 /// Recebe o valor do auto incremento e coloca na propriedade
 /// </summary>
 protected override bool ReceberAutoIncremento(QuerySelectStoredProcedure qs, SYS_VisaoModuloMenu entity)
 {
     return(true);
 }