private Dictionary<String, byte[]> ObtenerArchivosSeleccionados(String prefijoNombreArchivo, SeccionEnvio seccion)
    {
        Decimal ID_SOLICITUD = Convert.ToDecimal(TextBox_ID_SOLICITUD.Text.Trim());
        Decimal ID_PERFIL = Convert.ToDecimal(HiddenField_ID_PERFIL.Value);
        Decimal ID_REQUERIMIENTO = Convert.ToDecimal(HiddenField_ID_REQUERIMIENTO.Value);
        Decimal ID_CONTRATO = Convert.ToDecimal(HiddenField_ID_CONTRATO.Value);
        Decimal ID_EMPLEADO = Convert.ToDecimal(Label_ID_EMPLEADO.Text);

        Operacion _operacion = new Operacion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaContrato = _operacion.ObtenerInformacionContratoPorIdEmpleado(ID_EMPLEADO);
        DataRow filaContrato = tablaContrato.Rows[0];

        Decimal ID_REFERENCIA = 0;
        if (String.IsNullOrEmpty(filaContrato["ID_REFERENCIA"].ToString().Trim()) == false)
        {
            ID_REFERENCIA = Convert.ToDecimal(filaContrato["ID_REFERENCIA"]);
        }

        Dictionary<String, byte[]> listaArchivos = new Dictionary<String, byte[]>();

        maestrasInterfaz _maestrasInterfaz = new maestrasInterfaz();

        switch(seccion)
        {
            case SeccionEnvio.Seleccion:
                if (CheckBoxList_DOCUMENTOS_SELECCION.Items[0].Selected == true)
                {
                    listaArchivos.Add(prefijoNombreArchivo + "INFORME_SELECCION.pdf", _maestrasInterfaz.GenerarPDFEntrevista(ID_SOLICITUD, ID_PERFIL));
                }

                if (CheckBoxList_DOCUMENTOS_SELECCION.Items[1].Selected == true)
                {
                    Dictionary<String, byte[]> archivosPruebas = _maestrasInterfaz.ObtenerArchivosPruebas(prefijoNombreArchivo, ID_PERFIL, ID_SOLICITUD);

                    foreach (KeyValuePair<String, byte[]> archivoPrueba in archivosPruebas)
                    {
                        listaArchivos.Add(archivoPrueba.Key, archivoPrueba.Value);
                    }
                }

                if (ID_REFERENCIA > 0)
                {
                    if (CheckBoxList_DOCUMENTOS_SELECCION.Items[2].Selected == true)
                    {
                        listaArchivos.Add(prefijoNombreArchivo + "CONFIRMACION_REFERENCIAS_LABORALES.pdf", _maestrasInterfaz.GenerarPDFReferencia(ID_REFERENCIA, ID_SOLICITUD));
                    }
                }
                break;
            case SeccionEnvio.Contratacion:
                if (CheckBoxList_DOCUEMENTOS_CONTRATACION.Items[0].Selected == true)
                {
                    Dictionary<String, byte[]> archivosExamenes = _maestrasInterfaz.ObtenerArchivosExamenes(prefijoNombreArchivo, ID_SOLICITUD, ID_REQUERIMIENTO);

                    foreach (KeyValuePair<String, byte[]> archivoExamen in archivosExamenes)
                    {
                        listaArchivos.Add(archivoExamen.Key, archivoExamen.Value);
                    }
                }

                if (CheckBoxList_DOCUEMENTOS_CONTRATACION.Items[1].Selected == true)
                {
                    byte[] archivoExamenes = _maestrasInterfaz.GenerarPDFExamenes(ID_CONTRATO, ID_SOLICITUD, ID_REQUERIMIENTO);
                    if (archivoExamenes != null)
                    {
                        listaArchivos.Add(prefijoNombreArchivo + "AUTOS_RECOMENDACION.pdf", archivoExamenes);
                    }
                }

                if (CheckBoxList_DOCUEMENTOS_CONTRATACION.Items[2].Selected == true)
                {
                    listaArchivos.Add(prefijoNombreArchivo + "CONTRATO.pdf", _maestrasInterfaz.GenerarPDFContrato(ID_CONTRATO));
                }

                if (CheckBoxList_DOCUEMENTOS_CONTRATACION.Items[3].Selected == true)
                {
                    byte[] archivoClausulas = _maestrasInterfaz.GenerarPDFClausulas(ID_CONTRATO);

                    if (archivoClausulas != null)
                    {
                        listaArchivos.Add(prefijoNombreArchivo + "CLAUSULAS_CONTRATO.pdf", archivoClausulas);
                    }
                }

                if (CheckBoxList_DOCUEMENTOS_CONTRATACION.Items[4].Selected == true)
                {
                    Dictionary<String, byte[]> archivosAfiliaciones = _maestrasInterfaz.ObtenerArchivosAfiliaciones(prefijoNombreArchivo, ID_CONTRATO);

                    foreach (KeyValuePair<String, byte[]> archivoAfiliacion in archivosAfiliaciones)
                    {
                        listaArchivos.Add(archivoAfiliacion.Key, archivoAfiliacion.Value);
                    }
                }
                break;
        }

        return listaArchivos;
    }
    private Boolean EnviarArchivo(String prefijoNombreArchivo, SeccionEnvio seccion, Dictionary<String, byte[]> listaArchivos)
    {
        String archiveName;
        if(seccion == SeccionEnvio.Seleccion)
        {
            archiveName = String.Format(prefijoNombreArchivo + "DOCUMENTACION_SELECCION_{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd"));
        }
        else
        {
            archiveName = String.Format(prefijoNombreArchivo + "DOCUMENTACION_CONTRATACION_{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd"));
        }

        MemoryStream streamArchivoAEnviar = new MemoryStream();

        ZipOutputStream s = new ZipOutputStream(streamArchivoAEnviar);
            s.SetLevel(9);

            foreach (KeyValuePair<String, byte[]> archivo in listaArchivos)
            {
                ZipEntry entry = new ZipEntry(archivo.Key);

                entry.DateTime = DateTime.Now;
                s.PutNextEntry(entry);

                s.Write(archivo.Value, 0, (int)archivo.Value.Length);
            }

        StreamReader archivo_mensaje_correo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\email_envio_docs_trabajador.htm"));

        String html_mensaje_correo = archivo_mensaje_correo.ReadToEnd();

        archivo_mensaje_correo.Dispose();
        archivo_mensaje_correo.Close();

        html_mensaje_correo = html_mensaje_correo.Replace("[NOMBRE_CLIENTE]", Label_EMPRESA_TRABAJADOR.Text.Trim());
        html_mensaje_correo = html_mensaje_correo.Replace("[NUMERO_CONTRATO]", HiddenField_ID_CONTRATO.Value);
        html_mensaje_correo = html_mensaje_correo.Replace("[NOMBRE_TRABAJADOR]", TextBox_NOMBRES.Text.Trim() + " " + TextBox_APELLIDOS.Text.Trim());
        html_mensaje_correo = html_mensaje_correo.Replace("[NUM_DOC_IDENTIDAD]", DropDownList_TIP_DOC_IDENTIDAD.SelectedItem.Text + " " + TextBox_NUM_DOC_IDENTIDAD.Text.Trim());
        if (seccion == SeccionEnvio.Seleccion)
        {
            html_mensaje_correo = html_mensaje_correo.Replace("[NOMBRE_CONTACTO_CLIENTE]", Label_NOMBRE_CONTACTO_SELECCION.Text.Trim());
        }
        else
        {
            html_mensaje_correo = html_mensaje_correo.Replace("[NOMBRE_CONTACTO_CLIENTE]", Label_NOMBRE_CONTACTO_CONTRATACION.Text.Trim());
        }

        usuario _usuario = new usuario(Session["idEmpresa"].ToString());
        DataTable tablaUsuario = _usuario.ObtenerUsuarioPorUsuLog(Session["USU_LOG"].ToString());
        DataRow filaUsuario = tablaUsuario.Rows[0];

        if (filaUsuario["USU_TIPO"].ToString().ToUpper() == "PLANTA")
        {
            html_mensaje_correo = html_mensaje_correo.Replace("[USUARIO_ENVIO]", filaUsuario["NOMBRES"].ToString().Trim() + " " + filaUsuario["APELLIDOS"].ToString().Trim());
        }
        else
        {
            html_mensaje_correo = html_mensaje_correo.Replace("[USUARIO_ENVIO]", filaUsuario["NOMBRES_EXTERNO"].ToString().Trim() + " " + filaUsuario["APELLIDOS_EXTERNO"].ToString().Trim());
        }

        tools _tools = new tools();

        if (seccion == SeccionEnvio.Seleccion)
        {
            if (_tools.enviarCorreoConCuerpoHtmlyArchivoAdjunto(TextBox_EMAIL_SELECCION.Text, "DOCUMENTACION: CONTRATO " + HiddenField_ID_CONTRATO.Value + " - " + DropDownList_TIP_DOC_IDENTIDAD.SelectedItem.Text.Trim() + " " + TextBox_NUM_DOC_IDENTIDAD.Text.Trim() + " - " + TextBox_NOMBRES.Text.Trim() + " " + TextBox_APELLIDOS.Text.Trim(), html_mensaje_correo, streamArchivoAEnviar, archiveName) == false)
            {
                Informar(Panel_MENSAJE_ENVIOARCHOVOS, Label_MENSAJE_ENVIOARCHIVOS, "Error al intentar enviar el correo al contácto de selección: " + _tools.MensajError, Proceso.Error);
                return false;
            }
            else
            {
                return true;
            }
        }
        else
        {
            if (_tools.enviarCorreoConCuerpoHtmlyArchivoAdjunto(TextBox_EMAIL_CONTRATACION.Text, "DOCUMENTACION: CONTRATO " + HiddenField_ID_CONTRATO.Value + " - " + DropDownList_TIP_DOC_IDENTIDAD.SelectedItem.Text.Trim() + " " + TextBox_NUM_DOC_IDENTIDAD.Text.Trim() + " - " + TextBox_NOMBRES.Text.Trim() + " " + TextBox_APELLIDOS.Text.Trim(), html_mensaje_correo, streamArchivoAEnviar, archiveName) == false)
            {
                Informar(Panel_MENSAJE_ENVIOARCHOVOS, Label_MENSAJE_ENVIOARCHIVOS, "Error al intentar enviar el correo al contácto de contratación: " + _tools.MensajError, Proceso.Error);
                return false;
            }
            else
            {
                return true;
            }
        }

        s.Finish();

        s.Close();
    }