public bool EditarRolYResponsabilidades(Rol rol, List <Responsabilidades> responsabilidad, List <RendicionDeCuentas> rendicionDeCuenta, int[] responsaEliminadas,
                                                int[] rendiciEliminadas, int Pk_Id_Empresa, EDInformacionAuditoria edInfoauditoria)
        {
            SG_SSTContext dbaud = new SG_SSTContext();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    rol.Fk_Id_Empresa   = Pk_Id_Empresa;
                    db.Entry(rol).State = EntityState.Modified;
                    foreach (var item in responsabilidad)
                    {
                        if (item.Pk_Id_Responsabilidades != 0)
                        {
                            /*inicio auditoria*/
                            if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaLiderazgoGerencial)
                            {
                                Responsabilidades resaudi = dbaud.Tbl_Responsabilidades.Find(item.Pk_Id_Responsabilidades);
                                db.Tbl_AuditoriaLiderazgoGerencialSistema.Add(auditoriaSistema.ObtenerAuditoriaLiderazgoGerencial(edInfoauditoria,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Acciones.MODIFICACION,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Modulos.Liderazgo_Gerencial,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.SubModulos.Roles_y_Responsabilidades_SST,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Opciones.ModificarResponsabilidad,
                                                                                                                                  resaudi.ToString()));
                            }
                            /*fin auditoria*/
                            db.Entry(item).State = EntityState.Modified;
                        }
                        else
                        {
                            ResponsabilidadesPorRol responsabilidadesPorRoles = new ResponsabilidadesPorRol();
                            db.Tbl_Responsabilidades.Add(item);
                            /*inicio auditoria*/
                            if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaLiderazgoGerencial)
                            {
                                db.Tbl_AuditoriaLiderazgoGerencialSistema.Add(auditoriaSistema.ObtenerAuditoriaLiderazgoGerencial(edInfoauditoria,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Acciones.CREACION,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Modulos.Liderazgo_Gerencial,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.SubModulos.Roles_y_Responsabilidades_SST,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Opciones.CrearResponsabilidad,
                                                                                                                                  item.ToString()));
                            }
                            /*fin auditoria*/
                            responsabilidadesPorRoles.Fk_Id_Rol = rol.Pk_Id_Rol;
                            responsabilidadesPorRoles.Fk_Id_Responsabilidades = item.Pk_Id_Responsabilidades;
                            db.Tbl_Responsabilidades_Por_Rol.Add(responsabilidadesPorRoles);
                            db.SaveChanges();
                        }
                    }
                    foreach (var item in rendicionDeCuenta)
                    {
                        if (item.Pk_Id_RendicionDeCuentas != 0)
                        {
                            /*inicio auditoria*/
                            if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaLiderazgoGerencial)
                            {
                                RendicionDeCuentas rescuentaaudi = dbaud.Tbl_RendicionDeCuentas.Find(item.Pk_Id_RendicionDeCuentas);
                                db.Tbl_AuditoriaLiderazgoGerencialSistema.Add(auditoriaSistema.ObtenerAuditoriaLiderazgoGerencial(edInfoauditoria,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Acciones.MODIFICACION,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Modulos.Liderazgo_Gerencial,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.SubModulos.Roles_y_Responsabilidades_SST,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Opciones.ModificarRendicionDeCuenta,
                                                                                                                                  rescuentaaudi.ToString()));
                            }
                            /*fin auditoria*/
                            db.Entry(item).State = EntityState.Modified;
                        }
                        else
                        {
                            db.Tbl_RendicionDeCuentas.Add(item);
                            /*inicio auditoria*/
                            if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaLiderazgoGerencial)
                            {
                                db.Tbl_AuditoriaLiderazgoGerencialSistema.Add(auditoriaSistema.ObtenerAuditoriaLiderazgoGerencial(edInfoauditoria,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Acciones.CREACION,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Modulos.Liderazgo_Gerencial,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.SubModulos.Roles_y_Responsabilidades_SST,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Opciones.CrearRendicionDeCuenta,
                                                                                                                                  item.ToString()));
                            }
                            /*fin auditoria*/
                            RendicionDeCuentasPorRol rendicionDeCuentasPorRol = new RendicionDeCuentasPorRol();
                            rendicionDeCuentasPorRol.Fk_Id_Rol = rol.Pk_Id_Rol;
                            rendicionDeCuentasPorRol.Fk_Id_RendicionDeCuentas = item.Pk_Id_RendicionDeCuentas;
                            db.Tbl_Rendicion_Cuenta_Por_Rol.Add(rendicionDeCuentasPorRol);
                            db.SaveChanges();
                        }
                    }
                    if (responsaEliminadas != null)
                    {
                        foreach (var item in responsaEliminadas)
                        {
                            Responsabilidades respon = db.Tbl_Responsabilidades.Find(item);
                            /*inicio auditoria*/
                            if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaLiderazgoGerencial)
                            {
                                db.Tbl_AuditoriaLiderazgoGerencialSistema.Add(auditoriaSistema.ObtenerAuditoriaLiderazgoGerencial(edInfoauditoria,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Acciones.ELIMINACION,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Modulos.Liderazgo_Gerencial,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.SubModulos.Roles_y_Responsabilidades_SST,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Opciones.EliminarResponsabilidad,
                                                                                                                                  respon.ToString()));
                            }
                            /*fin auditoria*/
                            db.Tbl_Responsabilidades.Remove(respon);
                        }
                    }
                    if (rendiciEliminadas != null)
                    {
                        foreach (var item in rendiciEliminadas)
                        {
                            RendicionDeCuentas rendi = db.Tbl_RendicionDeCuentas.Find(item);
                            /*inicio auditoria*/
                            if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaLiderazgoGerencial)
                            {
                                db.Tbl_AuditoriaLiderazgoGerencialSistema.Add(auditoriaSistema.ObtenerAuditoriaLiderazgoGerencial(edInfoauditoria,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Acciones.MODIFICACION,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Modulos.Liderazgo_Gerencial,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.SubModulos.Roles_y_Responsabilidades_SST,
                                                                                                                                  Enumeraciones.EnumAuditoriaSistema.Opciones.EliminarRendicionDeCuenta,
                                                                                                                                  item.ToString()));
                            }
                            /*fin auditoria*/
                            db.Tbl_RendicionDeCuentas.Remove(rendi);
                        }
                    }
                    db.SaveChanges();
                    transaction.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    //RegistroInformacion.EnviarError<Rol>(ex.Message);
                    transaction.Rollback();
                    return(false);
                }
            }
        }
        public bool CrearRolYResponsabilidadesPreestablecidos(int id)
        {
            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    List <Rol> roles = new List <Rol>();
                    roles = db.Tbl_Rol
                            .Include(r => r.ResponsabilidadesPorRoles)
                            .Include(z => z.RendicionDeCuentasPorRoles)
                            .Where(x => x.Fk_Id_Empresa.Equals(null)).ToList();
                    foreach (var adr in roles)
                    {
                        Rol rol = new Rol();
                        List <Responsabilidades>  respons = new List <Responsabilidades>();
                        List <RendicionDeCuentas> rendic  = new List <RendicionDeCuentas>();
                        ResponsabilidadesPorRol   responsabilidadesPorRol  = new ResponsabilidadesPorRol();
                        RendicionDeCuentasPorRol  rendicionDeCuentasPorRol = new RendicionDeCuentasPorRol();
                        rol.ResponsabilidadesPorRoles  = new List <ResponsabilidadesPorRol>();
                        rol.RendicionDeCuentasPorRoles = new List <RendicionDeCuentasPorRol>();
                        rol.Descripcion   = adr.Descripcion;
                        rol.Fk_Id_Empresa = id;
                        List <ResponsabilidadesPorRol>  ResponsabilidPorRol = new List <ResponsabilidadesPorRol>();
                        List <RendicionDeCuentasPorRol> RendicionPorRol     = new List <RendicionDeCuentasPorRol>();
                        ResponsabilidPorRol = adr.ResponsabilidadesPorRoles.ToList();
                        RendicionPorRol     = adr.RendicionDeCuentasPorRoles.ToList();

                        foreach (var rpr in ResponsabilidPorRol)
                        {
                            Responsabilidades resp = new Responsabilidades();
                            resp.ResponsabilidadesPorRoles = new List <ResponsabilidadesPorRol>();
                            ResponsabilidadesPorRol rxrol = new ResponsabilidadesPorRol();
                            resp.Descripcion = rpr.Responsabilidades.Descripcion;
                            rxrol.Rol        = rol;
                            resp.ResponsabilidadesPorRoles.Add(rxrol);
                            respons.Add(resp);
                        }
                        db.Tbl_Responsabilidades.AddRange(respons);
                        foreach (var rcpr in RendicionPorRol)
                        {
                            RendicionDeCuentas rend = new RendicionDeCuentas();
                            rend.RendicionDeCuentasPorRoles = new List <RendicionDeCuentasPorRol>();
                            RendicionDeCuentasPorRol rdxrol = new RendicionDeCuentasPorRol();
                            rend.Descripcion = rcpr.RendicionDeCuentas.Descripcion;
                            rdxrol.Rol       = rol;
                            rend.RendicionDeCuentasPorRoles.Add(rdxrol);
                            rendic.Add(rend);
                        }
                        db.Tbl_RendicionDeCuentas.AddRange(rendic);
                    }
                    db.SaveChanges();
                    transaction.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    //RegistroInformacion.EnviarError<Rol>(ex.Message);
                    transaction.Rollback();
                    return(false);
                }
            }
        }
Exemple #3
0
 /// <summary>
 /// Registra la información de una nueva empresa, sus roles, sede principal,
 /// responsabilidades y rendición de cuentas
 /// </summary>
 /// <param name="empresa"></param>
 /// <returns></returns>
 public EDEmpresas GuardarEmpresaYSusRelaciones(EDEmpresas empresa)
 {
     using (SG_SSTContext context = new SG_SSTContext())
     {
         using (var Transaction = context.Database.BeginTransaction())
         {
             try
             {
                 //se registra en base de datos la nueva empresa
                 Empresa empre = new Empresa()
                 {
                     Pk_Id_Empresa  = empresa.Id_Empresa,
                     Nit_Empresa    = empresa.Nit_Empresa,
                     Tipo_Documento = empresa.Tipo_Documento,
                     Identificacion_Representante = empresa.Identificacion_Representante,
                     Razon_Social          = empresa.Razon_Social,
                     Direccion             = empresa.Direccion,
                     Telefono              = empresa.Telefono,
                     Fax                   = empresa.Fax,
                     Riesgo                = empresa.Riesgo,
                     Total_Empleados       = empresa.Total_Empleados,
                     ID_Seccional          = empresa.IdSeccional,
                     ID_Sector_Economico   = empresa.IdSectorEconomico,
                     Email                 = empresa.Email == null ? "" : empresa.Email.ToLower(),
                     Sitio_Web             = empresa.SitioWeb,
                     Codigo_Actividad      = empresa.Codigo_Actividad,
                     Fecha_Vigencia_Actual = empresa.Fecha_Vigencia_Actual,
                     Flg_Estado            = empresa.Flg_Estado,
                     Zona                  = empresa.Zona,
                     Descripcion_Actividad = empresa.Descripcion_Actividad
                 };
                 context.Tbl_Empresa.Add(empre);
                 context.SaveChanges();
                 //se obtienen los roles base asociados a la empresa.
                 var listaRoles = context.Tbl_RolesBase.Select(r => r).ToList();
                 //var nombreParametro = Enumeraciones.EnumAdministracionUsuarios.ParametrosSistemaPorNombre.RolesBaseEmpresa;
                 //var rolesEmpresa = context.Tbl_ParametrosSistema.Where(ps => ps.NombreParametro.Equals(nombreParametro)).Select(ps => ps.Valor).FirstOrDefault();
                 //se obtienen los roles base que deben estar asociados a una nueva empresa
                 //var roles = (from rol in context.Tbl_Rol
                 //             join rc in context.Tbl_Responsabilidades_Por_Rol on rol.Pk_Id_Rol equals rc.Fk_Id_Rol
                 //             join rcr in context.Tbl_Rendicion_Cuenta_Por_Rol on rol.Pk_Id_Rol equals rcr.Fk_Id_Rol
                 //             group rol by new { rol.Descripcion } into grpRol
                 //             select new
                 //             {
                 //                 NombreRol = grpRol.Key.Descripcion,
                 //             }).ToList();
                 if (listaRoles != null && listaRoles.Count > 0)
                 {
                     //para cada rol base obtenido se registran las responsabilidades
                     //y las rendiciones de cuentas asociadas a cada rol
                     foreach (var rol in listaRoles)
                     {
                         //var rolRespoRenCuent = context.Tbl_Rol.Where(r => r.Descripcion.Equals(rol)).FirstOrDefault();
                         //se obtiene el listado de responsabilidades asociadas a cada rol
                         var responsRol = (from rsp in context.Tbl_ResponsabilidadesBase
                                           join rspr in context.Tbl_Roles_Por_ResponsabilidadesBase on rsp.Pk_Id_ResponsabilidadesBase equals rspr.Fk_Id_ResponsabilidadesBase
                                           where rspr.Fk_Id_RolesBase == rol.Pk_Id_RolesBase
                                           select rsp).ToList();
                         //se obtiene el listado de rendición de cuentas asociadas a cada rol
                         var rendCuentasRol = (from rc in context.Tbl_RendicionDeCuentasBase
                                               join rcr in context.Tbl_Roles_Por_RendicionDeCuentasBase on rc.Pk_Id_RendicionDeCuentasBase equals rcr.Fk_Id_RendicionDeCuentasBase
                                               where rcr.Fk_Id_RolesBase == rol.Pk_Id_RolesBase
                                               select rc).ToList();
                         var nuevoRol = new Rol()
                         {
                             Descripcion   = rol.Descripcion,
                             Fk_Id_Empresa = empre.Pk_Id_Empresa
                         };
                         context.Tbl_Rol.Add(nuevoRol);
                         context.SaveChanges();
                         List <Responsabilidades> respons = new List <Responsabilidades>();
                         foreach (var rpr in responsRol)
                         {
                             var resp = new Responsabilidades();
                             resp.ResponsabilidadesPorRoles = new List <ResponsabilidadesPorRol>();
                             ResponsabilidadesPorRol rxrol = new ResponsabilidadesPorRol();
                             resp.Descripcion = rpr.Descripcion;
                             rxrol.Rol        = nuevoRol;
                             resp.ResponsabilidadesPorRoles.Add(rxrol);
                             respons.Add(resp);
                         }
                         context.Tbl_Responsabilidades.AddRange(respons);
                         List <RendicionDeCuentas> rendic = new List <RendicionDeCuentas>();
                         foreach (var rcpr in rendCuentasRol)
                         {
                             RendicionDeCuentas rend = new RendicionDeCuentas();
                             rend.RendicionDeCuentasPorRoles = new List <RendicionDeCuentasPorRol>();
                             RendicionDeCuentasPorRol rdxrol = new RendicionDeCuentasPorRol();
                             rend.Descripcion = rcpr.Descripcion;
                             rdxrol.Rol       = nuevoRol;
                             rend.RendicionDeCuentasPorRoles.Add(rdxrol);
                             rendic.Add(rend);
                         }
                         context.Tbl_RendicionDeCuentas.AddRange(rendic);
                     }
                     context.SaveChanges();
                 }
                 //se registra en base de datos la nueva sede principal
                 Sede nuevaSede = new Sede()
                 {
                     Fk_Id_Empresa  = empre.Pk_Id_Empresa,
                     Nombre_Sede    = "Principal",
                     Direccion_Sede = empre.Direccion,
                     Sector         = "Urbano"
                 };
                 context.Tbl_Sede.Add(nuevaSede);
                 context.SaveChanges();
                 //se consulta y se guarda la relación de la sede principal con el municipio
                 var codMunicipio    = empresa.Municipio.CodigoMunicipio;
                 var codDepartamento = empresa.Departamento.Codigo_Departamento;
                 var idMunicipio     = (from m in context.Tbl_Municipio
                                        join d in context.Tbl_Departamento on m.Fk_Nombre_Departamento equals d.Pk_Id_Departamento
                                        where m.Codigo_Municipio.Equals(codMunicipio) &&
                                        d.Codigo_Departamento.Equals(codDepartamento)
                                        select m.Pk_Id_Municipio).FirstOrDefault();
                 SedeMunicipio nuevaSedeMun = new SedeMunicipio()
                 {
                     Fk_id_Sede      = nuevaSede.Pk_Id_Sede,
                     Fk_Id_Municipio = idMunicipio
                 };
                 context.Tbl_SedeMunicipio.Add(nuevaSedeMun);
                 //se guarda la relación de la cede con su centro de trabajo
                 //(Actividad económica)
                 CentroTrabajo nuevoCentTrab = new CentroTrabajo
                 {
                     Fk_Id_Sede            = nuevaSede.Pk_Id_Sede,
                     ID_Centro             = 1,
                     Numero_Trabajadores   = 0,
                     Codigo_Actividad      = empre.Codigo_Actividad,
                     Descripcion_Actividad = empre.Descripcion_Actividad
                 };
                 context.Tbl_Centro_de_Trabajo.Add(nuevoCentTrab);
                 context.SaveChanges();
                 Transaction.Commit();
                 empresa.Id_Empresa = empre.Pk_Id_Empresa;
             }
             catch (Exception e)
             {
                 Transaction.Rollback();
                 return(empresa);
             }
         }
     }
     return(empresa);
 }
        public bool GuardarRolYResponsabilidades(Rol DescripRol, List <Responsabilidades> responsabilidad, List <RendicionDeCuentas> rendicion,
                                                 int Pk_Id_Empresa, EDInformacionAuditoria edInfoauditoria)
        {
            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    Rol rol = new Rol();
                    List <Responsabilidades>  respons = new List <Responsabilidades>();
                    List <RendicionDeCuentas> rendic  = new List <RendicionDeCuentas>();
                    ResponsabilidadesPorRol   responsabilidadesPorRol  = new ResponsabilidadesPorRol();
                    RendicionDeCuentasPorRol  rendicionDeCuentasPorRol = new RendicionDeCuentasPorRol();
                    rol.ResponsabilidadesPorRoles  = new List <ResponsabilidadesPorRol>();
                    rol.RendicionDeCuentasPorRoles = new List <RendicionDeCuentasPorRol>();
                    rol.Descripcion   = DescripRol.Descripcion.ToUpper();
                    rol.Fk_Id_Empresa = Pk_Id_Empresa;

                    foreach (var rpr in responsabilidad)
                    {
                        Responsabilidades resp = new Responsabilidades();
                        resp.ResponsabilidadesPorRoles = new List <ResponsabilidadesPorRol>();
                        ResponsabilidadesPorRol rxrol = new ResponsabilidadesPorRol();
                        rxrol.Rol = rol;
                        resp.ResponsabilidadesPorRoles.Add(rxrol);
                        resp.Descripcion = rpr.Descripcion;

                        respons.Add(resp);
                    }

                    foreach (var rendpr in rendicion)
                    {
                        RendicionDeCuentas rend = new RendicionDeCuentas();
                        rend.RendicionDeCuentasPorRoles = new List <RendicionDeCuentasPorRol>();
                        RendicionDeCuentasPorRol rendxrol = new RendicionDeCuentasPorRol();
                        rendxrol.Rol = rol;
                        rend.RendicionDeCuentasPorRoles.Add(rendxrol);
                        rend.Descripcion = rendpr.Descripcion;
                        rendic.Add(rend);
                    }

                    db.Tbl_Responsabilidades.AddRange(respons);
                    db.Tbl_RendicionDeCuentas.AddRange(rendic);
                    /*inicio auditoria*/
                    if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaLiderazgoGerencial)
                    {
                        db.Tbl_AuditoriaLiderazgoGerencialSistema.Add(auditoriaSistema.ObtenerAuditoriaLiderazgoGerencial(edInfoauditoria,
                                                                                                                          Enumeraciones.EnumAuditoriaSistema.Acciones.CREACION,
                                                                                                                          Enumeraciones.EnumAuditoriaSistema.Modulos.Liderazgo_Gerencial,
                                                                                                                          Enumeraciones.EnumAuditoriaSistema.SubModulos.Roles_y_Responsabilidades_SST,
                                                                                                                          Enumeraciones.EnumAuditoriaSistema.Opciones.CrearRol,
                                                                                                                          rol.ToString()));
                    }
                    /*fin auditoria*/
                    //db.Tbl_Rol.Add(rol);
                    db.SaveChanges();
                    transaction.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    //RegistroInformacion.EnviarError<Rol>(ex.Message);
                    transaction.Rollback();
                    return(false);
                }
            }
        }
Exemple #5
0
        public void GuardarRolesParaNuevaEmpresa()
        {
            try
            {
                using (SG_SSTContext context = new SG_SSTContext())
                {
                    using (var tx = context.Database.BeginTransaction())
                    {
                        try
                        {
                            var roles = (from rol in context.Tbl_Rol
                                         join rc in context.Tbl_Responsabilidades_Por_Rol on rol.Pk_Id_Rol equals rc.Fk_Id_Rol
                                         join rcr in context.Tbl_Rendicion_Cuenta_Por_Rol on rol.Pk_Id_Rol equals rcr.Fk_Id_Rol
                                         group rol by new { rol.Descripcion } into grpRol
                                         select new
                            {
                                NombreRol = grpRol.Key.Descripcion,
                            }).ToList();
                            if (roles != null && roles.Count > 0)
                            {
                                foreach (var rol in roles)
                                {
                                    var rolRespoRenCuent = context.Tbl_Rol.Where(r => r.Descripcion.Equals(rol.NombreRol)).FirstOrDefault();
                                    var responsRol       = (from rsp in context.Tbl_Responsabilidades
                                                            join rspr in context.Tbl_Responsabilidades_Por_Rol on rsp.Pk_Id_Responsabilidades equals rspr.Fk_Id_Responsabilidades
                                                            where rspr.Fk_Id_Rol == rolRespoRenCuent.Pk_Id_Rol
                                                            select rsp).ToList();

                                    var rendCuentasRol = (from rc in context.Tbl_RendicionDeCuentas
                                                          join rcr in context.Tbl_Rendicion_Cuenta_Por_Rol on rc.Pk_Id_RendicionDeCuentas equals rcr.Fk_Id_RendicionDeCuentas
                                                          where rcr.Fk_Id_Rol == rolRespoRenCuent.Pk_Id_Rol
                                                          select rc).ToList();
                                    var nuevoRol = new Rol()
                                    {
                                        Descripcion   = rol.NombreRol,
                                        Fk_Id_Empresa = null
                                    };
                                    context.Tbl_Rol.Add(nuevoRol);
                                    context.SaveChanges();
                                    List <Responsabilidades> respons = new List <Responsabilidades>();
                                    foreach (var rpr in responsRol)
                                    {
                                        var resp = new Responsabilidades();
                                        resp.ResponsabilidadesPorRoles = new List <ResponsabilidadesPorRol>();
                                        ResponsabilidadesPorRol rxrol = new ResponsabilidadesPorRol();
                                        resp.Descripcion = rpr.Descripcion;
                                        rxrol.Rol        = nuevoRol;
                                        resp.ResponsabilidadesPorRoles.Add(rxrol);
                                        respons.Add(resp);
                                    }
                                    context.Tbl_Responsabilidades.AddRange(respons);
                                    List <RendicionDeCuentas> rendic = new List <RendicionDeCuentas>();
                                    foreach (var rcpr in rendCuentasRol)
                                    {
                                        RendicionDeCuentas rend = new RendicionDeCuentas();
                                        rend.RendicionDeCuentasPorRoles = new List <RendicionDeCuentasPorRol>();
                                        RendicionDeCuentasPorRol rdxrol = new RendicionDeCuentasPorRol();
                                        rend.Descripcion = rcpr.Descripcion;
                                        rdxrol.Rol       = nuevoRol;
                                        rend.RendicionDeCuentasPorRoles.Add(rdxrol);
                                        rendic.Add(rend);
                                    }
                                    context.Tbl_RendicionDeCuentas.AddRange(rendic);
                                }
                                tx.Commit();
                            }
                        }
                        catch (Exception ex)
                        {
                            tx.Rollback();
                        }
                    }
                }
            }
            catch (Exception ex)
            { }
        }