예제 #1
0
        public bool EnviarMensaje(TransferenciaMensajes mensajes)
        {
            BandejaNotificacionesDAO dao = new BandejaNotificacionesDAO();
            DocumentosAdjuntosDao daoDocumentosAdjuntos = new DocumentosAdjuntosDao();

            var tipoDocumental = new tipoDocumentalDao().obtenerTipoLogiaDocumental("500001");
            List<tblBandejaNotificaciones> listaInsertMensajes = new List<tblBandejaNotificaciones>();
            var enviarA = mensajes.destinatarios;
            List<tbl_usuarios> ListaUsuarios = new List<tbl_usuarios>();
            tbl_usuarios idOrigen = new tbl_usuarios();
            DaoUsuario daoUsuarios = new DaoUsuario();
            bool adjunto = mensajes.archivos.Count() > 0 ? true : false;
            var fechaEnvio = DateTime.Now;
            idOrigen = daoUsuarios.obtenerIdentficadorUnicoUsuario(mensajes.Origen.tipoIdentificacion, mensajes.Origen.NumeroIdentificacion);
            string Destinos = string.Empty;
            string usuarioOrigen = mensajes.NombreEnvia;
            foreach (var data in enviarA)
            {
                var usuario = daoUsuarios.obtenerIdentficadorUnicoUsuario(data.tipoIdentificacion, data.NumeroIdentificacion);
                Destinos = PrefijoEnumTIPO_IDENTIFICACION.EnumToTIPO_IDENTIFICACION(Convert.ToInt32( usuario.tipoIdentificacion)) + usuario.numeroIdentificacion + ",";

                ListaUsuarios.Add(usuario);

            }
            if (Destinos.EndsWith(","))
            {
                Destinos = Destinos.Substring(0, Destinos.Length - 1);
            }

            foreach (var data in ListaUsuarios)
            {

                listaInsertMensajes.Add(new tblBandejaNotificaciones()
                {
                    idBandejaNotificacionPadre = null,
                    userIdAplicacionDestino = data.userIdApplicacion,
                    NombreEnvia = mensajes.NombreEnvia,
                    userIdAplicacionOrigen = idOrigen.userIdApplicacion,
                    Destinatarios =Destinos,
                    fechaEnvio = fechaEnvio,
                    Mensaje = mensajes.Mensaje,
                    Asunto = mensajes.Asunto,
                    Estado = 1,
                    tamanio = "",// mensaje.tamanio
                    Adjunto = adjunto,

                });

            }

            var resultadoInsertarMensaje = dao.EnviarMensaje(listaInsertMensajes);
            #region Guardar Documentos En las carpetas de los usuarios
            var fileControl = new Uniandes.FileControl.FileControl(Int32.Parse("MaxFileSize".GetFromAppCfg()));

            List<tbl_metadataArchivos> listaMetadatos = new List<tbl_metadataArchivos>();

            MetadataArchivoDao daoMetadata = new MetadataArchivoDao();
            CarpetaPersonalDao daoCarpetaPersonal = new CarpetaPersonalDao();
            foreach (var usuarios in ListaUsuarios)
            {
                var idCarpeta = daoCarpetaPersonal.obtenerIdCarpeta(usuarios.userIdApplicacion, "ADJUNTOS");
                listaMetadatos = new List<tbl_metadataArchivos>();
                foreach (var archivos in mensajes.archivos)
                {

                    fileControl.CopyStringByteFileToRepositorio(usuarios.repositorioKey, @"" + usuarios.carpetaUsuarioInicial + "/Adjuntos", archivos.Contenido, archivos.NombreArchivo);
                    string ext = System.IO.Path.GetExtension(archivos.NombreArchivo).ToLower();
                    listaMetadatos.Add(new tbl_metadataArchivos()
                    {
                        idDMtadataArchivo =  Guid.NewGuid(),
                        autor = usuarioOrigen,
                        userIdApplicacion = usuarios.userIdApplicacion,
                        extension = ext,
                        nombre_generado = archivos.NombreArchivo,
                        fecha_Cargue = Convert.ToDateTime(archivos.FechaCargueArchivo),
                        fecha_modificacion = Convert.ToDateTime(archivos.FechaCargueArchivo),
                        idTipoDocumento = tipoDocumental,
                        tamanio = "",
                        nombre = archivos.NombreArchivo,
                        idCarpetaPersonal = idCarpeta
                    });

                }

               var resultadoGuardardatos = daoMetadata.RegistrarListaMetadataArchivo(listaMetadatos);

               List<tblDocumentosAdjuntos> almacenarAdjuntos = new List<tblDocumentosAdjuntos>();

               var idMensaje = listaInsertMensajes.Where(x => x.userIdAplicacionDestino == usuarios.userIdApplicacion).First().idBandejaNotificaciones;

               foreach (var lista in listaMetadatos) {

                   almacenarAdjuntos.Add(new tblDocumentosAdjuntos() {
                    idDMetadaArchivo = lista.idDMtadataArchivo,
                    idBandejaNotificaciones = idMensaje
                   });

               }
               daoDocumentosAdjuntos.RegistrarListaMetadataArchivo(almacenarAdjuntos);
            }

            #endregion
            return true;
        }
예제 #2
0
    public static object EnviarMensaje(List<usuariosMensajes> usuarios, string Asunto, string cuerpoMensaje, string FILENAMES)
    {
        try
        {
            #region Envio Mensajes

            ServicioIntermediario.ServicioIntermediarioClient servicioMensajeriaExterno = new ServicioIntermediario.ServicioIntermediarioClient();

            ServicioIntermediario.TransferenciaMensajes MensajeOtroOperadore = new ServicioIntermediario.TransferenciaMensajes();

            List<ServicioIntermediario.ListaDestinatarios> destinosExternos = new List<ServicioIntermediario.ListaDestinatarios>();

            ServicioIntermediario.ListaDestinatarios OrigenExtenos = new ServicioIntermediario.ListaDestinatarios();

            TransferenciaMensajes MENSAJE = new TransferenciaMensajes();
            List<ListaDestinatarios> destino = new List<ListaDestinatarios>();
            List<ServicioIntermediario.Archivo> archivosEnviarExterno = new List<ServicioIntermediario.Archivo>();

            var idTipo = (int)SessionHelper.GetSessionData("TIPO_IDENTIFICACION_ENVIO");
            var numero = (string)SessionHelper.GetSessionData("NUMERO_IDENTIFICACION_ENVIO");

            #region Validacion Usuarios Externos Internos
            /**
             *recorremos toda lista validando los usuarios que son del sistema y los que no
             */
            foreach (var data in usuarios)
            {

                if (data.mismo)
                {
                    destino.Add(new ListaDestinatarios()
                    {

                        NumeroIdentificacion = data.numeroIdentificacion,
                        tipoIdentificacion = data.idTIpoIdentificacion
                    });
                }
                {

                    destinosExternos.Add(new ServicioIntermediario.ListaDestinatarios()
                    {

                        NumeroIdentificacion = data.numeroIdentificacion,
                        tipoIdentificacion = data.idTIpoIdentificacion
                    });

                }
            }
            #endregion

            List<Archivo> archivosEnviar = new List<Archivo>();
            List<string> archivos = FILENAMES.Split(',').Where(x => string.IsNullOrWhiteSpace(x) == false).ToList();
            var fileControl = new FileControl(Int32.Parse("MaxFileSize".GetFromAppCfg()));
            DateTime FechaEnvio = DateTime.Now;
            byte[] datosArchivo = null;
            foreach (string nombreArchivo in archivos)
            {
                datosArchivo = fileControl.GetFileFromAntivirus(REPOSITORY, nombreArchivo);
                string DatosArchivoString = Convert.ToBase64String(datosArchivo);
                archivosEnviar.Add(new Archivo()
                {
                    Contenido = DatosArchivoString,
                    FechaCargueArchivo = FechaEnvio,
                    FechaExpedicionArchivo = FechaEnvio,
                    FechaVigencia = FechaEnvio,
                    NombreArchivo = nombreArchivo,
                    ArchivoExpedidoPor = "",

                });
            }

            var usuario = (UsuarioOperador)SessionHelper.GetSessionData("USUARIO");

            ListaDestinatarios origien = new ListaDestinatarios();
            origien.tipoIdentificacion = usuario.tipoIdentificacion.Value;
            origien.NumeroIdentificacion = usuario.numeroIdentificacion;

            if (destinosExternos.Count() > 0)
            {

                foreach (var data in archivosEnviar)
                {
                    archivosEnviarExterno.Add(new ServicioIntermediario.Archivo()
                    {
                        Contenido = data.Contenido,
                        FechaCargueArchivo = data.FechaCargueArchivo,
                        FechaExpedicionArchivo = data.FechaExpedicionArchivo,
                        FechaVigencia = data.FechaVigencia,
                        NombreArchivo = data.NombreArchivo,
                        ArchivoExpedidoPor = "",

                    });

                }
                OrigenExtenos.tipoIdentificacion = usuario.tipoIdentificacion.Value;
                OrigenExtenos.NumeroIdentificacion = usuario.numeroIdentificacion;

                MensajeOtroOperadore.archivos = archivosEnviarExterno.ToArray();

                MensajeOtroOperadore.Asunto = Asunto;
                MensajeOtroOperadore.Mensaje = cuerpoMensaje;
                MensajeOtroOperadore.destinatarios = destinosExternos.ToArray();
                MensajeOtroOperadore.Origen = OrigenExtenos;
                MensajeOtroOperadore.NombreEnvia = usuario.Nombres + " " + usuario.Apellidos;

                try {

                    var resultado = servicioMensajeriaExterno.RecibirMensajes(MensajeOtroOperadore);
                }
                catch (Exception ex) {

                }

            }
            MENSAJE.archivo = archivosEnviar;
            MENSAJE.Asunto = Asunto;
            MENSAJE.Mensaje = cuerpoMensaje;
            MENSAJE.destinatarios = destino;
            MENSAJE.Origen = origien;
            MENSAJE.NombreEnvia = usuario.Nombres + " " + usuario.Apellidos;

            GestorMensajeria gestor = new GestorMensajeria();

            var resultadoEnvio = gestor.EnviarMensaje(MENSAJE);

            if (resultadoEnvio)
            {
                return new
                {
                    OK = "OK",
                    mensaje = "Se ha enviado el mensaje a los destinatarios Correctamente."
                };
            }
            else
            {
                return new
                {
                    OK = "fallo",
                    mensaje = "Ha ocurrido un error inesperado por favor intentelo mas tarde."
                };

            }
            #endregion

        }
        catch (Exception ex)
        {
            AppLog.Write(" Error obteniendo la informacion Inicial. ", AppLog.LogMessageType.Error, ex, "OperadorCarpeta");
            return new
            {
                OK = "error",
                mensaje = "Ha ocurrido un error inesperado por favor intentelo mas tarde."
            };

        }
    }
    public void crearSOAP(Operador.Entity.TransferenciaMensajes MyObject)
    {
        XmlSerializer xsSubmit = new XmlSerializer(typeof(Operador.Entity.TransferenciaMensajes));
        var subReq = new Operador.Entity.TransferenciaMensajes();
        var st = string.Empty;
        using (StringWriter sww = new StringWriter())
        using (XmlWriter writer = XmlWriter.Create(sww))
        {
            xsSubmit.Serialize(writer, MyObject);
            st = sww.ToString(); // Your XML
        }

        XmlDocument xDoc = new XmlDocument();
        xDoc.LoadXml(st);

        XmlNodeList archivo = xDoc.GetElementsByTagName("TransferenciaMensajes");

        var s = archivo[0].InnerXml;
    }