Esempio n. 1
0
        /// <summary>
        /// Eliminar privilegios de rol.
        /// </summary>
        /// <param name="ROL_ID"></param>
        /// <param name="lprivilegios"></param>
        /// <param name="MODIFICADO_POR"></param>
        public void EliminarPrivilegios(int ROL_ID, List <int> lprivilegios, string MODIFICADO_POR)
        {
            try
            {
                using (var db = new colinasEntities())
                {
                    EntityKey k = new EntityKey("colinasEntities.roles", "ROL_ID", ROL_ID);

                    var r = db.GetObjectByKey(k);

                    rol role = (rol)r;

                    foreach (int priv_id in lprivilegios)
                    {
                        var p = db.GetObjectByKey(new EntityKey("colinasEntities.privilegios", "PRIV_ID", priv_id));

                        privilegio privilegioEntity = (privilegio)p;
                        role.privilegios.Remove(privilegioEntity);
                    }

                    role.MODIFICADO_POR     = MODIFICADO_POR;
                    role.FECHA_MODIFICACION = DateTime.Today;

                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                log.Fatal("Error fatal al eliminar privilegios.", ex);
                throw;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Elimina estados de nota de peso con su detalle. Elimina el privilegio y notificacion si existen.
        /// </summary>
        /// <param name="ESTADOS_NOTA_ID"></param>
        public void EliminarEstadoNotaDePeso(int ESTADOS_NOTA_ID)
        {
            try
            {
                using (var db = new colinasEntities())
                {
                    using (var scope1 = new System.Transactions.TransactionScope())
                    {
                        EntityKey k = new EntityKey("colinasEntities.estados_nota_de_peso", "ESTADOS_NOTA_ID", ESTADOS_NOTA_ID);

                        var esn = db.GetObjectByKey(k);

                        estado_nota_de_peso noteStatus = (estado_nota_de_peso)esn;

                        db.DeleteObject(noteStatus);

                        /*--------------------Eliminar privilegio--------------------*/
                        string PRIV_LLAVE = EstadoNotaDePesoLogic.PREFIJO_PRIVILEGIO + noteStatus.ESTADOS_NOTA_LLAVE;

                        var queryPrivilegio = from p in db.privilegios
                                              where p.PRIV_LLAVE == PRIV_LLAVE
                                              select p;

                        privilegio priv = (privilegio)queryPrivilegio.FirstOrDefault();

                        if (priv != null)
                        {
                            db.DeleteObject(priv);
                        }


                        /*--------------------Eliminar plantilla de notificacion--------------------*/
                        string PLANTILLAS_LLAVE = EstadoNotaDePesoLogic.PREFIJO_PLANTILLA + noteStatus.ESTADOS_NOTA_LLAVE;

                        db.plantillas_notificaciones.MergeOption = MergeOption.NoTracking;

                        Object    pl  = null;
                        EntityKey kpl = new EntityKey("colinasEntities.plantillas_notificaciones", "PLANTILLAS_LLAVE", PLANTILLAS_LLAVE);

                        if (db.TryGetObjectByKey(kpl, out pl))
                        {
                            plantilla_notificacion plNotif = (plantilla_notificacion)pl;

                            db.DeleteObject(plNotif);
                        }

                        db.SaveChanges();

                        scope1.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                log.Fatal("Error fatal al eliminar estado de nota de peso.", ex);
                throw;
            }
        }
        public Administrador(ref ConectorBaseDeDatos hacedor, ref Form panelInicial, privilegio privParam, ArchivoIni configParam)
        {
            InitializeComponent();

            Administrador panel = this;
            apariencia = new aparienciaFormulario(ref dataGridView1, configParam, ref panel);
            apariencia.setVariablesControlesMain(ref mskGramaje, ref mskPeso, ref lblEstado, ref txtEspesor, ref txtObservacion, ref cmbTipo, ref cmbCliente, ref informeTotalToolStripMenuItem, ref parteDiarioMaquinistaToolStripMenuItem, ref remitoToolStripMenuItem1, ref remitoToolStripMenuItem, ref cmbEstado);
            consultador = hacedor;
            contador_hoja = 0;
            refPanelInicial = panelInicial;
            priv = privParam;
            mskPeso.ValidatingType = typeof(double);
            mskGramaje.ValidatingType = typeof(double);
            this.ajustarResolucion();
            rotuloBobina = new administradorRotuloBobina();
            remito = new administradorRemito();
        }
Esempio n. 4
0
        public void cargarDatos()
        {
            int n = gw.Rows.Count;
            int indexNombre = gw.Columns["NOMBRE"].Index;
            int indexContr = gw.Columns["PASSWORD"].Index;
            int indexPriv = gw.Columns["PRIVILEGIO"].Index;

            for (int i = 0; i < n - 1; i++)
            {
                string nombreConsulta = gw[indexNombre, i].Value.ToString().ToUpper();

                if (nombreConsulta == nombre.ToUpper())
                {
                    string passConsulta = gw[indexContr, i].Value.ToString();
                    privilegio privConsulta = (privilegio)gw[indexPriv, i].Value;
                    pass = passConsulta; priv = privConsulta;
                    break;
                }
            }
        }
Esempio n. 5
0
        public void insertar(String nombre, List <funcion> lista)
        {
            rc = dm.GetrolCollection();
            List <rol> lu = rc.Cast <rol>().ToList();
            int        id;

            if (lu.Count == 0)
            {
                id = 1;
            }
            else
            {
                id = lu.Last().id + 1;
            }
            rol nRol = dm.Newrol(id, nombre, true);
            privilegioCollection pc = dm.GetprivilegioCollection();
            List <privilegio>    lp = pc.Cast <privilegio>().ToList();
            int idp;

            if (lp.Count == 0)
            {
                idp = 1;
            }
            else
            {
                idp = lp.Last().id + 1;
            }
            foreach (funcion f in lista)
            {
                privilegio nPriv = dm.Newprivilegio(idp, id, f.id, f, nRol);
                idp++;
            }
            //nRol.nombre = nombre;
            //nRol.id = id;
            //nRol.estado = true;

            dm.CommitAll();
        }
Esempio n. 6
0
        /// <summary>
        /// Actualiza estado de nota de peso con su detalle. Actualiza privilegio y notificacion.
        /// </summary>
        /// <param name="ESTADOS_NOTA_ID"></param>
        /// <param name="ESTADOS_NOTA_SIGUIENTE"></param>
        /// <param name="ESTADOS_NOTA_NOMBRE"></param>
        /// <param name="ESTADOS_NOTA_DESCRIPCION"></param>
        /// <param name="ESTADOS_NOTA_ES_CATACION"></param>
        /// <param name="ESTADOS_NOTA_ESTADO"></param>
        /// <param name="MODIFICADO_POR"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_FECHA"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_ESTADO"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_SOCIO_ID"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_INFO_SOCIO"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_DETALLE"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_TARA"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_DESCUENTOS"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_TOTAL"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN"></param>
        /// <param name="PLANTILLAS_MENSAJE"></param>
        public void ActualizarEstadoNotaDePeso
            (int ESTADOS_NOTA_ID,
            int?ESTADOS_NOTA_SIGUIENTE,
            string ESTADOS_NOTA_NOMBRE,
            string ESTADOS_NOTA_DESCRIPCION,
            bool ESTADOS_NOTA_ES_CATACION,
            bool ESTADOS_NOTA_ESTADO,
            string MODIFICADO_POR,
            bool ESTADOS_DETALLE_ENABLE_FECHA,
            int ESTADOS_DETALLE_ENABLE_ESTADO,
            int ESTADOS_DETALLE_ENABLE_SOCIO_ID,
            bool ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE,
            bool ESTADOS_DETALLE_SHOW_INFO_SOCIO,
            bool ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA,
            bool ESTADOS_DETALLE_ENABLE_DETALLE,
            bool ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS,
            bool ESTADOS_DETALLE_ENABLE_TARA,
            bool ESTADOS_DETALLE_SHOW_DESCUENTOS,
            bool ESTADOS_DETALLE_SHOW_TOTAL,
            bool ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN,
            bool ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN,
            string PLANTILLAS_MENSAJE)
        {
            try
            {
                using (var db = new colinasEntities())
                {
                    using (var scope1 = new System.Transactions.TransactionScope())
                    {
                        EntityKey k = new EntityKey("colinasEntities.estados_nota_de_peso", "ESTADOS_NOTA_ID", ESTADOS_NOTA_ID);

                        var esn = db.GetObjectByKey(k);

                        estado_nota_de_peso noteStatus = (estado_nota_de_peso)esn;

                        noteStatus.ESTADOS_NOTA_SIGUIENTE   = ESTADOS_NOTA_SIGUIENTE == 0 ? null : ESTADOS_NOTA_SIGUIENTE;
                        noteStatus.ESTADOS_NOTA_NOMBRE      = ESTADOS_NOTA_NOMBRE;
                        noteStatus.ESTADOS_NOTA_DESCRIPCION = ESTADOS_NOTA_DESCRIPCION;
                        noteStatus.ESTADOS_NOTA_ES_CATACION = ESTADOS_NOTA_ES_CATACION;
                        noteStatus.ESTADOS_NOTA_ESTADO      = ESTADOS_NOTA_ESTADO;
                        noteStatus.MODIFICADO_POR           = MODIFICADO_POR;
                        noteStatus.FECHA_MODIFICACION       = DateTime.Today;

                        /*--------------------Actualizar detalle--------------------*/
                        estado_detalle detalle = noteStatus.estados_detalles;
                        detalle.ESTADOS_DETALLE_ENABLE_FECHA              = ESTADOS_DETALLE_ENABLE_FECHA;
                        detalle.ESTADOS_DETALLE_ENABLE_ESTADO             = ESTADOS_DETALLE_ENABLE_ESTADO;
                        detalle.ESTADOS_DETALLE_ENABLE_SOCIO_ID           = ESTADOS_DETALLE_ENABLE_SOCIO_ID;
                        detalle.ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE = ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE;
                        detalle.ESTADOS_DETALLE_SHOW_INFO_SOCIO           = ESTADOS_DETALLE_SHOW_INFO_SOCIO;
                        detalle.ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA      = ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA;
                        detalle.ESTADOS_DETALLE_ENABLE_DETALLE            = ESTADOS_DETALLE_ENABLE_DETALLE;
                        detalle.ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS    = ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS;
                        detalle.ESTADOS_DETALLE_ENABLE_TARA          = ESTADOS_DETALLE_ENABLE_TARA;
                        detalle.ESTADOS_DETALLE_SHOW_DESCUENTOS      = ESTADOS_DETALLE_SHOW_DESCUENTOS;
                        detalle.ESTADOS_DETALLE_SHOW_TOTAL           = ESTADOS_DETALLE_SHOW_TOTAL;
                        detalle.ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN = ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN;
                        detalle.ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN  = ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN;


                        /*--------------------Actualizar privilegio--------------------*/
                        string PRIV_LLAVE = EstadoNotaDePesoLogic.PREFIJO_PRIVILEGIO + noteStatus.ESTADOS_NOTA_LLAVE;

                        var queryPrivilegio = from p in db.privilegios
                                              where p.PRIV_LLAVE == PRIV_LLAVE
                                              select p;

                        privilegio notePrivilege = (privilegio)queryPrivilegio.FirstOrDefault();

                        if (notePrivilege != null)
                        {
                            notePrivilege.PRIV_NOMBRE        = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                            notePrivilege.PRIV_DESCRIPCION   = "Acceso a nivel de datos. " + ESTADOS_NOTA_DESCRIPCION;
                            notePrivilege.MODIFICADO_POR     = MODIFICADO_POR;
                            notePrivilege.FECHA_MODIFICACION = DateTime.Today;
                        }


                        /*--------------------Actualizar plantilla de notificacion--------------------*/
                        string PLANTILLAS_LLAVE = EstadoNotaDePesoLogic.PREFIJO_PLANTILLA + noteStatus.ESTADOS_NOTA_LLAVE;

                        db.plantillas_notificaciones.MergeOption = MergeOption.NoTracking;

                        Object    pl  = null;
                        EntityKey kpl = new EntityKey("colinasEntities.plantillas_notificaciones", "PLANTILLAS_LLAVE", PLANTILLAS_LLAVE);

                        if (db.TryGetObjectByKey(kpl, out pl))
                        {
                            plantilla_notificacion noteTemplate = (plantilla_notificacion)pl;

                            noteTemplate.PLANTILLAS_NOMBRE  = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                            noteTemplate.PLANTILLAS_ASUNTO  = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                            noteTemplate.PLANTILLAS_MENSAJE = PLANTILLAS_MENSAJE;
                            noteTemplate.MODIFICADO_POR     = MODIFICADO_POR;
                            noteTemplate.FECHA_MODIFICACION = DateTime.Today;
                        }

                        db.SaveChanges();

                        scope1.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                log.Fatal("Error fatal al actualizar estado de nota de peso.", ex);
                throw;
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Inserta el estado de nota de peso con su detalle. Crea privilegio y notificacion para nota de peso.
        /// </summary>
        /// <param name="ESTADOS_NOTA_SIGUIENTE"></param>
        /// <param name="ESTADOS_NOTA_LLAVE"></param>
        /// <param name="ESTADOS_NOTA_NOMBRE"></param>
        /// <param name="ESTADOS_NOTA_DESCRIPCION"></param>
        /// <param name="ESTADOS_NOTA_ES_CATACION"></param>
        /// <param name="ESTADOS_NOTA_ESTADO"></param>
        /// <param name="CREADO_POR"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_FECHA"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_ESTADO"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_SOCIO_ID"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_INFO_SOCIO"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_DETALLE"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_TARA"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_DESCUENTOS"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_TOTAL"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN"></param>
        /// <param name="PLANTILLAS_MENSAJE"></param>
        public void InsertarEstadoNotaDePeso
            (int?ESTADOS_NOTA_SIGUIENTE,
            string ESTADOS_NOTA_LLAVE,
            string ESTADOS_NOTA_NOMBRE,
            string ESTADOS_NOTA_DESCRIPCION,
            bool ESTADOS_NOTA_ES_CATACION,
            bool ESTADOS_NOTA_ESTADO,
            string CREADO_POR,
            bool ESTADOS_DETALLE_ENABLE_FECHA,
            int ESTADOS_DETALLE_ENABLE_ESTADO,
            int ESTADOS_DETALLE_ENABLE_SOCIO_ID,
            bool ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE,
            bool ESTADOS_DETALLE_SHOW_INFO_SOCIO,
            bool ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA,
            bool ESTADOS_DETALLE_ENABLE_DETALLE,
            bool ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS,
            bool ESTADOS_DETALLE_ENABLE_TARA,
            bool ESTADOS_DETALLE_SHOW_DESCUENTOS,
            bool ESTADOS_DETALLE_SHOW_TOTAL,
            bool ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN,
            bool ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN,
            string PLANTILLAS_MENSAJE)
        {
            try
            {
                using (var db = new colinasEntities())
                {
                    using (var scope1 = new System.Transactions.TransactionScope())
                    {
                        estado_nota_de_peso noteStatus = new estado_nota_de_peso();

                        noteStatus.ESTADOS_NOTA_SIGUIENTE   = ESTADOS_NOTA_SIGUIENTE == 0 ? null : ESTADOS_NOTA_SIGUIENTE;
                        noteStatus.ESTADOS_NOTA_LLAVE       = ESTADOS_NOTA_LLAVE;
                        noteStatus.ESTADOS_NOTA_NOMBRE      = ESTADOS_NOTA_NOMBRE;
                        noteStatus.ESTADOS_NOTA_DESCRIPCION = ESTADOS_NOTA_DESCRIPCION;
                        noteStatus.ESTADOS_NOTA_ES_CATACION = ESTADOS_NOTA_ES_CATACION;
                        noteStatus.ESTADOS_NOTA_ESTADO      = ESTADOS_NOTA_ESTADO;
                        noteStatus.CREADO_POR         = noteStatus.MODIFICADO_POR = CREADO_POR;
                        noteStatus.FECHA_CREACION     = DateTime.Today;
                        noteStatus.FECHA_MODIFICACION = noteStatus.FECHA_CREACION;

                        db.estados_nota_de_peso.AddObject(noteStatus);

                        /*--------------------Crear detalle--------------------*/
                        estado_detalle detalle = new estado_detalle();
                        detalle.ESTADOS_NOTA_ID = noteStatus.ESTADOS_NOTA_ID;
                        detalle.ESTADOS_DETALLE_ENABLE_FECHA              = ESTADOS_DETALLE_ENABLE_FECHA;
                        detalle.ESTADOS_DETALLE_ENABLE_ESTADO             = ESTADOS_DETALLE_ENABLE_ESTADO;
                        detalle.ESTADOS_DETALLE_ENABLE_SOCIO_ID           = ESTADOS_DETALLE_ENABLE_SOCIO_ID;
                        detalle.ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE = ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE;
                        detalle.ESTADOS_DETALLE_SHOW_INFO_SOCIO           = ESTADOS_DETALLE_SHOW_INFO_SOCIO;
                        detalle.ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA      = ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA;
                        detalle.ESTADOS_DETALLE_ENABLE_DETALLE            = ESTADOS_DETALLE_ENABLE_DETALLE;
                        detalle.ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS    = ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS;
                        detalle.ESTADOS_DETALLE_ENABLE_TARA          = ESTADOS_DETALLE_ENABLE_TARA;
                        detalle.ESTADOS_DETALLE_SHOW_DESCUENTOS      = ESTADOS_DETALLE_SHOW_DESCUENTOS;
                        detalle.ESTADOS_DETALLE_SHOW_TOTAL           = ESTADOS_DETALLE_SHOW_TOTAL;
                        detalle.ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN = ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN;
                        detalle.ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN  = ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN;

                        db.estados_detalles.AddObject(detalle);

                        /*--------------------Crear privilegio--------------------*/
                        privilegio notePrivilege = new privilegio();

                        notePrivilege.PRIV_LLAVE         = EstadoNotaDePesoLogic.PREFIJO_PRIVILEGIO + ESTADOS_NOTA_LLAVE;
                        notePrivilege.PRIV_NOMBRE        = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                        notePrivilege.PRIV_DESCRIPCION   = "Acceso a nivel de datos. " + ESTADOS_NOTA_DESCRIPCION;
                        notePrivilege.CREADO_POR         = notePrivilege.MODIFICADO_POR = CREADO_POR;
                        notePrivilege.FECHA_CREACION     = DateTime.Today;
                        notePrivilege.FECHA_MODIFICACION = notePrivilege.FECHA_CREACION;

                        db.privilegios.AddObject(notePrivilege);

                        /*--------------------Crear plantilla de notificacion--------------------*/
                        plantilla_notificacion noteTemplate = new plantilla_notificacion();

                        noteTemplate.PLANTILLAS_LLAVE   = EstadoNotaDePesoLogic.PREFIJO_PLANTILLA + ESTADOS_NOTA_LLAVE;
                        noteTemplate.PLANTILLAS_NOMBRE  = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                        noteTemplate.PLANTILLAS_ASUNTO  = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                        noteTemplate.PLANTILLAS_MENSAJE = PLANTILLAS_MENSAJE;
                        noteTemplate.CREADO_POR         = noteTemplate.MODIFICADO_POR = CREADO_POR;
                        noteTemplate.FECHA_CREACION     = DateTime.Today;
                        noteTemplate.FECHA_MODIFICACION = noteTemplate.FECHA_CREACION;

                        db.plantillas_notificaciones.AddObject(noteTemplate);

                        db.SaveChanges();

                        scope1.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                log.Fatal("Error fatal al insertar estado de nota de peso.", ex);
                throw;
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Envia correos de privilegios nuevos
        /// </summary>
        /// <param name="ROL_ID"></param>
        /// <param name="PRIVS_ID"></param>
        /// <param name="Configuracion"></param>
        public static void EnviarCorreosPrivilegiosNuevos(int ROL_ID, List <string> PRIVS_ID, XmlDocument Configuracion)
        {
            try
            {
                string mailto = "";
                string nombre = "";

                string priv = "";

                string subject = "";
                string message = "";

                using (var db = new colinasEntities())
                {
                    EntityKey k = new EntityKey("colinasEntities.roles", "ROL_ID", ROL_ID);

                    var r = db.GetObjectByKey(k);

                    rol role = (rol)r;

                    foreach (string privRec in PRIVS_ID)
                    {
                        int PRIV_ID = Convert.ToInt32(privRec);

                        EntityKey k2 = new EntityKey("colinasEntities.privilegios", "PRIV_ID", PRIV_ID);

                        var p = db.GetObjectByKey(k2);

                        privilegio priv2 = (privilegio)p;

                        priv += priv2.PRIV_NOMBRE + ", ";
                    }

                    if (priv.Length > 2)
                    {
                        priv.Remove(priv.Length - 2);
                    }

                    EntityKey k3 = new EntityKey("colinasEntities.plantillas_notificaciones", "PLANTILLAS_LLAVE", "PRIVILEGIONUEVO");
                    var       pl = db.GetObjectByKey(k3);
                    plantilla_notificacion plantilla = (plantilla_notificacion)pl;

                    subject = plantilla.PLANTILLAS_ASUNTO;
                    message = plantilla.PLANTILLAS_MENSAJE;

                    foreach (usuario user in role.usuarios)
                    {
                        mailto = user.USR_CORREO;
                        nombre = user.USR_NOMBRE + " " + user.USR_APELLIDO;

                        message = message.Replace("{NOMBRE}", nombre);
                        message = message.Replace("{USUARIO}", user.USR_USERNAME);
                        message = message.Replace("{PRIVILEGIO}", priv);

                        EnviarCorreo(mailto, subject, message, Configuracion);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Fatal("Error fatal al enviar correo de privilegios nuevos.", ex);
                throw;
            }
        }