Пример #1
0
        /// <summary>
        /// Genera y asigna el codigo CITE correlativo correspondiente
        /// </summary>
        /// <param name="properties"></param>
        private void EventoGenerarCITE(SPItemEventProperties properties)
        {
            SPListItem itemActual    = properties.ListItem;
            SPUser     usuarioActual = properties.OpenWeb().SiteUsers[properties.UserLoginName];

            string tipoSalida = itemActual["Tipo salida"].ToString().Trim();

            List <string> arrayParametro =
                this.RecuperarValorParametroGlobal(PARAMETRO, tipoSalida, usuarioActual);

            string valorParametro = arrayParametro[1];

            string sinLadoIzq = valorParametro.Substring(valorParametro.IndexOf('{') + 1);
            int    numeroBase = Convert.ToInt16(sinLadoIzq.Remove(sinLadoIzq.IndexOf('}')));
            //string formatoBase = valorParametro.Remove(valorParametro.LastIndexOf('-') + 1);
            int numeroSiguiente = numeroBase + 1;

            #region Actualizar la columna CITE de la lista
            try
            {
                //itemActual["CITE"] = formatoBase + numeroSiguiente.ToString();
                itemActual["CITE"] = valorParametro.Replace("{" + numeroBase + "}",
                                                            numeroSiguiente.ToString());
            }
            catch
            {
                itemActual["Title"] = valorParametro.Replace("{" + numeroBase + "}",
                                                             numeroSiguiente.ToString());
            }

            using (DisabledItemEventsScope scope = new DisabledItemEventsScope())
            {
                itemActual.SystemUpdate();
            }
            #endregion

            #region Actualizar el valor del parametro correspondiente
            this.ActualizarParametroCITE(Convert.ToInt16(arrayParametro[0]),
                                         valorParametro.Replace("{" + numeroBase + "}",
                                                                "{" + numeroSiguiente.ToString() + "}"));
            #endregion
        }
Пример #2
0
        /// <summary>
        /// Actualiza la relacion automática hacia la lista Correspondencia de Entrada
        /// </summary>
        /// <param name="properties"></param>
        private void EventoActualizarAsociarCorrespondenciaEntrante(SPItemEventProperties properties)
        {
            object enRespuestaAAntes   = properties.ListItem["En_x0020_respuesta_x0020_a"];
            object enRespuestaADespues = properties.AfterProperties["En_x0020_respuesta_x0020_a"];

            if (((SPFieldLookupValueCollection)enRespuestaAAntes).Count == 0 &&
                string.IsNullOrEmpty(enRespuestaADespues.ToString())) //Si el campo "En respuesta a" esta vacio
            {
                return;
            }

            SPSite sitioAdm = null;
            SPWeb  webAdm   = null;

            try
            {
                string UrlFPC = ConfigurationManager.AppSettings["UrlFPC"];

                SPSecurity.RunWithElevatedPrivileges(delegate()
                {//Como usuario administrador
                    sitioAdm = new SPSite(UrlFPC);
                    webAdm   = sitioAdm.OpenWeb();
                });

                SPFieldLookupValueCollection enlacesSalidaAntes =
                    (SPFieldLookupValueCollection)enRespuestaAAntes;
                SPFieldLookupValueCollection enlacesSalidaDespues =
                    new SPFieldLookupValueCollection(enRespuestaADespues.ToString());

                SPListItem itemEntrada;
                SPFieldLookupValueCollection enlacesEntrada;
                SPFieldLookupValueCollection enlacesEntrada2;

                #region Definir la lista usada
                string listaCorreoUsada = "";
                if (string.Equals(webAdm.Lists[properties.ListId].Title.Trim(),
                                  CORREO_SALIDA_FUNDAPRO, StringComparison.CurrentCultureIgnoreCase))
                {
                    listaCorreoUsada = CORREO_ENTRADA_FUNDAPRO;
                }
                else if (string.Equals(webAdm.Lists[properties.ListId].Title.Trim(),
                                       CORREO_SALIDA_EDUCAPRO, StringComparison.CurrentCultureIgnoreCase))
                {
                    listaCorreoUsada = CORREO_ENTRADA_EDUCAPRO;
                }
                else if (string.Equals(webAdm.Lists[properties.ListId].Title.Trim(),
                                       CORREO_SALIDA_EDUCAPRO_CB, StringComparison.CurrentCultureIgnoreCase))
                {
                    listaCorreoUsada = CORREO_ENTRADA_EDUCAPRO_CB;
                }
                else if (string.Equals(webAdm.Lists[properties.ListId].Title.Trim(),
                                       CORREO_SALIDA_EDUCAPRO_SC, StringComparison.CurrentCultureIgnoreCase))
                {
                    listaCorreoUsada = CORREO_ENTRADA_EDUCAPRO_SC;
                }
                #endregion

                #region Eliminar relacion existente sobre este elemento
                foreach (SPFieldLookupValue enlaceSalidaAntes in enlacesSalidaAntes)
                {
                    itemEntrada = webAdm.Lists[listaCorreoUsada].Items.GetItemById(
                        enlaceSalidaAntes.LookupId);
                    enlacesEntrada  = (SPFieldLookupValueCollection)itemEntrada["Respuesta"];
                    enlacesEntrada2 = (SPFieldLookupValueCollection)itemEntrada["Respuesta"];

                    for (int i = 0; i < enlacesEntrada.Count; i++)
                    {
                        if (enlacesEntrada[i].LookupId == properties.ListItemId)
                        {
                            enlacesEntrada2.RemoveAt(i);
                            break;
                        }
                    }

                    itemEntrada["Respuesta"] = enlacesEntrada2;

                    using (DisabledItemEventsScope scope = new DisabledItemEventsScope())
                    {
                        itemEntrada.SystemUpdate();
                    }
                }
                #endregion

                #region Crear relacion sobre este elemento
                foreach (SPFieldLookupValue enlaceSalidaDespues in enlacesSalidaDespues)
                {
                    itemEntrada = webAdm.Lists[listaCorreoUsada].Items.GetItemById(
                        enlaceSalidaDespues.LookupId);
                    enlacesEntrada = (SPFieldLookupValueCollection)itemEntrada["Respuesta"];
                    SPFieldLookupValue enlaceEntrada = new SPFieldLookupValue(properties.ListItemId,
                                                                              properties.ListItem["CITE"].ToString());

                    if (!enlacesEntrada.Contains(enlaceEntrada))
                    {
                        enlacesEntrada.Add(enlaceEntrada);
                    }

                    itemEntrada["Respuesta"] = enlacesEntrada;

                    using (DisabledItemEventsScope scope = new DisabledItemEventsScope())
                    {
                        itemEntrada.SystemUpdate();
                    }
                }
                #endregion
            }
            finally
            {
                if (webAdm != null)
                {
                    webAdm.Dispose();
                }
                if (sitioAdm != null)
                {
                    sitioAdm.Dispose();
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Crea una relacion automática hacia la lista Correspondencia de Entrada
        /// </summary>
        /// <param name="properties"></param>
        private void EventoAsociarCorrespondenciaEntrante(SPItemEventProperties properties)
        {
            SPSite sitioAdm = null;
            SPWeb  webAdm   = null;

            try
            {
                string UrlFPC = ConfigurationManager.AppSettings["UrlFPC"];

                SPSecurity.RunWithElevatedPrivileges(delegate()
                {//Como usuario administrador
                    sitioAdm = new SPSite(UrlFPC);
                    webAdm   = sitioAdm.OpenWeb();
                });

                SPListItem itemSalida = properties.ListItem;
                SPListItem itemEntrada;
                SPFieldLookupValueCollection enlacesSalida =
                    (SPFieldLookupValueCollection)itemSalida["En respuesta a"];
                SPFieldLookupValueCollection enlacesEntrada;

                #region Definir la lista usada
                string listaCorreoUsada = "";
                if (string.Equals(webAdm.Lists[properties.ListId].Title.Trim(),
                                  CORREO_SALIDA_FUNDAPRO, StringComparison.CurrentCultureIgnoreCase))
                {
                    listaCorreoUsada = CORREO_ENTRADA_FUNDAPRO;
                }
                else if (string.Equals(webAdm.Lists[properties.ListId].Title.Trim(),
                                       CORREO_SALIDA_EDUCAPRO, StringComparison.CurrentCultureIgnoreCase))
                {
                    listaCorreoUsada = CORREO_ENTRADA_EDUCAPRO;
                }
                else if (string.Equals(webAdm.Lists[properties.ListId].Title.Trim(),
                                       CORREO_SALIDA_EDUCAPRO_CB, StringComparison.CurrentCultureIgnoreCase))
                {
                    listaCorreoUsada = CORREO_ENTRADA_EDUCAPRO_CB;
                }
                else if (string.Equals(webAdm.Lists[properties.ListId].Title.Trim(),
                                       CORREO_SALIDA_EDUCAPRO_SC, StringComparison.CurrentCultureIgnoreCase))
                {
                    listaCorreoUsada = CORREO_ENTRADA_EDUCAPRO_SC;
                }
                #endregion

                #region Crear relacion sobre este elemento
                foreach (SPFieldLookupValue enlaceSalida in enlacesSalida)
                {
                    itemEntrada = webAdm.Lists[listaCorreoUsada].Items.GetItemById(
                        enlaceSalida.LookupId);
                    enlacesEntrada = (SPFieldLookupValueCollection)itemEntrada["Respuesta"];

                    SPFieldLookupValue enlaceEntrada = new SPFieldLookupValue(itemSalida.ID,
                                                                              itemSalida["CITE"].ToString());

                    if (!enlacesEntrada.Contains(enlaceEntrada))
                    {
                        enlacesEntrada.Add(enlaceEntrada);
                    }

                    itemEntrada["Respuesta"] = enlacesEntrada;

                    using (DisabledItemEventsScope scope = new DisabledItemEventsScope())
                    {
                        itemEntrada.SystemUpdate();
                    }
                }
                #endregion
            }
            finally
            {
                if (webAdm != null)
                {
                    webAdm.Dispose();
                }
                if (sitioAdm != null)
                {
                    sitioAdm.Dispose();
                }
            }
        }