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); } } }
/// <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); } } }
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) { } }