public static void RechazarPropuesta(int t940_idtramitacambiorol, string motivorechazo, string nombre_promotor, string nombreapellidosinteresado, string rolantiguo, string rolnuevo, string correoresporigen, string motivo)
    {
        IB.Progress.BLL.TramitacionCambioRol solicitud = new IB.Progress.BLL.TramitacionCambioRol();

        try
        {
            solicitud.NoAceptacion(t940_idtramitacambiorol, motivorechazo, ((IB.Progress.Models.Profesional)HttpContext.Current.Session["PROFESIONAL"]).t001_idficepi);
            solicitud.Dispose();

            //Correo a la OT
            StringBuilder sb = new StringBuilder();

            sb.Append(((IB.Progress.Models.Profesional)HttpContext.Current.Session["PROFESIONAL"]).nombrelargo.ToString() + " no ha aprobado la solicitud de cambio de rol que " + nombre_promotor + " propuso para " + nombreapellidosinteresado + ". </br></br>");

            sb.Append("Rol actual: " + rolantiguo + "</br>");
            sb.Append("Rol propuesto: " + rolnuevo + "</br></br>");
            sb.Append("Motivo de la propuesta: </br> " + motivo + "</br></br>");
            sb.Append("Motivo de la decisión: </br> " + motivorechazo + "</br></br>");

            sb.Append("</br></br></br></br>Si te encuentras en las oficinas de IBERMÁTICA, puedes acceder directamente pulsando <a href=" + ConfigurationManager.AppSettings["UrlInterna"] + "/Default.aspx?CR=true>aquí</a>");
            sb.Append("</br>Si estás fuera, puedes acceder pulsando <a href=" + ConfigurationManager.AppSettings["UrlExterna"] + "/Default.aspx?CR=true>aquí</a>");

            Correo.Enviar("PROGRESS: Cambio de rol", sb.ToString(), ConfigurationManager.AppSettings["SMTP_to_OTRRHH"]);
        }
        catch (Exception ex)
        {
            if (solicitud != null)
            {
                solicitud.Dispose();
            }
            throw ex;
        }
    }
    public static void delete(int t940_idtramitacambiorol, string nombreapellidosinteresado, string rolactual, string rolpropuesto, string motivo, string nombreaprobador, string correoaprobador)
    {
        try
        {
            IB.Progress.BLL.TramitacionCambioRol blltcr_i = new IB.Progress.BLL.TramitacionCambioRol();

            blltcr_i.Delete(t940_idtramitacambiorol);
            blltcr_i.Dispose();

            StringBuilder sb = new StringBuilder();

            sb.Append(nombreaprobador + ", " + ((IB.Progress.Models.Profesional)HttpContext.Current.Session["PROFESIONAL"]).nombrelargo.ToString() + " ha anulado la solicitud de cambio de Rol que había realizado para " + nombreapellidosinteresado + ".</br></br>");

            sb.Append("Rol actual: " + rolactual + "</br>");
            sb.Append("Rol propuesto: " + rolpropuesto + "</br></br>");
            sb.Append("Motivo: </br></br>" + motivo);

            if (correoaprobador != "")
            {
                Correo.Enviar("PROGRESS: Anulación de solicitud de cambio de Rol", sb.ToString(), correoaprobador);
            }
        }
        catch (Exception ex)
        {
            Smtp.SendSMTP("Error al rechazar un cambio de rol", ex.ToString());
            throw ex;
        }
    }
    public static void AceptarPropuesta(int t940_idtramitacambiorol, int idficepi_interesado, int t004_idrol_propuesto, string nombre_promotor, string nombreapellidosinteresado, string rolantiguo, string rolnuevo, string correoresporigen, string nombre_interesado, string nombreapellidos_promotor, string correointeresado, string motivo)
    {
        IB.Progress.BLL.TramitacionCambioRol solicitud = new IB.Progress.BLL.TramitacionCambioRol();
        try
        {
            //Aceptación de propuesta (La dejamos en estado P ... en manos de RRHH)
            solicitud.CambioEstadoSolicitudCambioRol(t940_idtramitacambiorol, Convert.ToChar("P"), ((Profesional)HttpContext.Current.Session["PROFESIONAL"]).t001_idficepi);
            solicitud.Dispose();

            //Se envía correo a OT
            StringBuilder sb = new StringBuilder();

            sb.Append(((IB.Progress.Models.Profesional)HttpContext.Current.Session["PROFESIONAL"]).nombrelargo.ToString() + " ha aprobado la solicitud de cambio de rol, que " + nombreapellidos_promotor + " realizó para  " + nombreapellidosinteresado + ". </br></br>");
            sb.Append("Debes acceder a PROGRESS para aprobar, o no, dicho cambio, explicando el motivo de tu decisión.</br></br>");
            sb.Append("Rol actual: " + rolantiguo + "</br>");
            sb.Append("Rol propuesto: " + rolnuevo + "</br></br>");
            sb.Append("Motivo de la propuesta: </br> " + motivo + "</br></br>");

            sb.Append("</br></br></br></br>Si te encuentras en las oficinas de IBERMÁTICA, puedes acceder directamente pulsando <a href=" + ConfigurationManager.AppSettings["UrlInterna"] + "/Default.aspx?CR=true>aquí</a>");
            sb.Append("</br>Si estás fuera, puedes acceder pulsando <a href=" + ConfigurationManager.AppSettings["UrlExterna"] + "/Default.aspx?CR=true>aquí</a>");

            Correo.Enviar("PROGRESS: Aprobación de cambio de rol", sb.ToString(), ConfigurationManager.AppSettings["SMTP_to_OTRRHH"]);
        }
        catch (Exception)
        {
            if (solicitud != null)
            {
                solicitud.Dispose();
            }
            throw;
        }
    }
    public static void NoAprobacionAceptada(List <IB.Progress.Models.TramitacionCambioRol> oProfesional)
    {
        try
        {
            IB.Progress.BLL.TramitacionCambioRol solicitud = new IB.Progress.BLL.TramitacionCambioRol();

            StringBuilder sbPromotor         = null;
            StringBuilder sbAprobador        = null;
            StringBuilder sbOtrosEvaluadores = null;

            solicitud.CambioEstadoSolicitudROL(oProfesional);
            solicitud.Dispose();

            //Envío de correos
            foreach (IB.Progress.Models.TramitacionCambioRol item in oProfesional)
            {
                sbPromotor  = new StringBuilder();
                sbAprobador = new StringBuilder();

                //CORREO AL APROBADOR
                sbAprobador.Append(item.nomCortoAprobador + ", no has aprobado el cambio de rol solicitado por " + item.nombre_promotor + " para " + item.nombre_interesado + ".</br></br>");
                sbAprobador.Append("Rol actual: " + item.t940_desrolActual + "</br>");
                sbAprobador.Append("Rol no aprobado: " + item.t940_desrolPropuesto + "</br></br>");
                sbAprobador.Append("Motivo: </br> " + item.t940_motivorechazo + "</br>");

                Correo.Enviar("PROGRESS: Cambio de rol no aprobado", sbAprobador.ToString(), item.CorreoAprobador);

                //CORREO AL PROMOTOR
                sbPromotor.Append(item.nomCortoPromotor + ", el cambio de rol que solicitaste para " + item.nombre_interesado + ", no ha sido aprobado por " + item.aprobador + ".</br></br>");
                sbPromotor.Append("Rol actual: " + item.t940_desrolActual + "</br>");
                sbPromotor.Append("Rol no aprobado: " + item.t940_desrolPropuesto + "</br></br>");
                sbPromotor.Append("Motivo: </br> " + item.t940_motivorechazo + "</br>");
                Correo.Enviar("PROGRESS: Cambio de rol no aprobado", sbPromotor.ToString(), item.CorreoPromotor);

                //CORREO A LOS EVALUADORES INTERMEDIOS
                IB.Progress.BLL.Profesional bllProfesional = new IB.Progress.BLL.Profesional();
                List <Profesional>          lstEvaluadores = bllProfesional.getAscendientesHastaAprobador(item.t001_idficepi_promotor);

                for (int i = 0; i < lstEvaluadores.Count; i++)
                {
                    sbOtrosEvaluadores = new StringBuilder();
                    sbOtrosEvaluadores.Append(lstEvaluadores[i].nombre + ", el cambio de rol solicitado por " + item.nombre_promotor + " para " + item.nombre_interesado + ", no ha sido aprobado por " + item.aprobador + ".</br></br>");
                    sbOtrosEvaluadores.Append("Rol actual: " + item.t940_desrolActual + "</br>");
                    sbOtrosEvaluadores.Append("Rol no aprobado: " + item.t940_desrolPropuesto + "</br></br>");
                    sbOtrosEvaluadores.Append("Motivo: </br> " + item.t940_motivorechazo + "</br>");

                    if (lstEvaluadores[i].Correo != "")
                    {
                        Correo.Enviar("PROGRESS: Información sobre cambio de rol no aprobado", sbOtrosEvaluadores.ToString(), lstEvaluadores[i].Correo);
                    }
                }

                bllProfesional.Dispose();
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
Пример #5
0
    public static void standby(List <IB.Progress.Models.TramitacionCambioRol> oProfesional)
    {
        try
        {
            IB.Progress.BLL.TramitacionCambioRol solicitud = new IB.Progress.BLL.TramitacionCambioRol();

            StringBuilder sbAprobador = null;
            solicitud.CambioEstadoSolicitudROL(oProfesional);
            solicitud.Dispose();

            //CORREO AL APROBADOR
            foreach (IB.Progress.Models.TramitacionCambioRol item in oProfesional)
            {
                sbAprobador = new StringBuilder();
                sbAprobador.Append(item.nomCortoAprobador + ", la Oficina Técnica de PROGRESS se va a poner en contacto contigo para recabar más información acerca de la solicitud de cambio de rol que, " + item.nombre_promotor + " propuso para " + item.nombre_interesado + ".</br></br>");
                sbAprobador.Append("Rol actual: " + item.t940_desrolActual + "</br>");
                sbAprobador.Append("Rol propuesto: " + item.t940_desrolPropuesto + "</br></br>");

                sbAprobador.Append("Motivo de la propuesta: </br> " + item.t940_motivopropuesto + "</br></br>");
                sbAprobador.Append("Motivo de la no aprobación: </br> " + item.t940_motivorechazo + "</br>");


                Correo.Enviar("PROGRESS: Cambio de rol, pendiente de confirmar", sbAprobador.ToString(), item.CorreoAprobador);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    public static string insert(TRAMITACIONCAMBIOROL_INS tcr_i, string nombreapellidosinteresado, string rolactual, string rolpropuesto, string motivo, string nombreaprobador, string correoaprobador, string nombreapellidosaprobador)
    {
        try
        {
            //Añado al objto el idpromotor
            tcr_i.t001_idficepi_promotor = ((Profesional)HttpContext.Current.Session["PROFESIONAL"]).t001_idficepi;
            IB.Progress.BLL.TramitacionCambioRol blltcr_i = new IB.Progress.BLL.TramitacionCambioRol();
            string result = blltcr_i.Insert(tcr_i);
            blltcr_i.Dispose();


            //Correo para el aprobador
            StringBuilder sb = new StringBuilder();

            sb.Append(nombreaprobador + ", " + ((IB.Progress.Models.Profesional)HttpContext.Current.Session["PROFESIONAL"]).nombrelargo.ToString() + " ha solicitado un cambio de rol para " + nombreapellidosinteresado + ". </br> Debes acceder a PROGRESS para aprobar, o no,  dicho cambio, explicando el motivo de tu decisión.</br></br>");

            sb.Append("Rol actual: " + rolactual + "</br>");
            sb.Append("Rol propuesto: " + rolpropuesto + "</br></br>");
            sb.Append("Motivo de la propuesta: </br></br>" + motivo);
            sb.Append("</br></br></br></br>Si te encuentras en las oficinas de IBERMÁTICA, puedes acceder directamente pulsando <a href=" + ConfigurationManager.AppSettings["UrlInterna"] + "/Default.aspx?APROL=true>aquí</a>");
            sb.Append("</br>Si estás fuera, puedes acceder pulsando <a href=" + ConfigurationManager.AppSettings["UrlExterna"] + "/Default.aspx?APROL=true>aquí</a>");

            if (correoaprobador != "")
            {
                Correo.Enviar("PROGRESS: Solicitud de cambio de rol", sb.ToString(), correoaprobador);
            }

            //Correo a los evaluadores intermedios
            IB.Progress.BLL.Profesional bllProfesional = new IB.Progress.BLL.Profesional();
            List <Profesional>          lstEvaluadores = bllProfesional.getAscendientesHastaAprobador(((Profesional)HttpContext.Current.Session["PROFESIONAL"]).t001_idficepi);

            StringBuilder sbEvaluadores = new StringBuilder();

            for (int i = 0; i < lstEvaluadores.Count; i++)
            {
                sbEvaluadores.Append(lstEvaluadores[i].nombre + ", " + ((IB.Progress.Models.Profesional)HttpContext.Current.Session["PROFESIONAL"]).nombrelargo.ToString() + " ha solicitado un cambio de rol para " + nombreapellidosinteresado + ", que gestionará " + nombreapellidosaprobador + ".</br></br>");
                sbEvaluadores.Append("Rol actual: " + rolactual + "</br>");
                sbEvaluadores.Append("Rol propuesto: " + rolpropuesto + "</br></br>");
                sbEvaluadores.Append("Motivo del cambio: </br></br>" + motivo);

                if (lstEvaluadores[i].Correo != "")
                {
                    Correo.Enviar("PROGRESS: Información sobre solicitud de cambio de rol", sbEvaluadores.ToString(), lstEvaluadores[i].Correo);
                }
            }

            bllProfesional.Dispose();

            return(result);
        }
        catch (Exception ex)
        {
            Smtp.SendSMTP("Error al solicitar cambio de rol", ex.ToString());
            throw ex;
        }
    }
    public static List <IB.Progress.Models.TramitacionCambioRol> solicitudCambioRolCat()
    {
        IB.Progress.BLL.TramitacionCambioRol pro = null;
        try
        {
            List <IB.Progress.Models.TramitacionCambioRol> profesionales = null;
            pro = new IB.Progress.BLL.TramitacionCambioRol();

            profesionales = pro.catalogoSolicitudes(((IB.Progress.Models.Profesional)HttpContext.Current.Session["PROFESIONAL"]).t001_idficepi);

            pro.Dispose();

            return(profesionales);
        }
        catch (Exception)
        {
            if (pro != null)
            {
                pro.Dispose();
            }
            throw;
        }
    }
    public static List <IB.Progress.Models.TramitacionCambioRol> solicitudesCat()
    {
        IB.Progress.BLL.TramitacionCambioRol pro = null;
        try
        {
            List <IB.Progress.Models.TramitacionCambioRol> profesionales = null;
            pro = new IB.Progress.BLL.TramitacionCambioRol();

            profesionales = pro.getSolicitudesSegunEstado(Convert.ToChar("Z"), ((IB.Progress.Models.Profesional)HttpContext.Current.Session["PROFESIONAL"]).t001_idficepi);

            pro.Dispose();

            return(profesionales);
        }
        catch (Exception ex)
        {
            if (pro != null)
            {
                pro.Dispose();
            }
            throw ex;
        }
    }
Пример #9
0
    public static string getCountTiles()
    {
        IB.Progress.BLL.TramitacionCambioRol pro = null;
        try
        {
            pro = new IB.Progress.BLL.TramitacionCambioRol();

            IB.Progress.Models.TramitacionCambioRol valores = pro.getCountTiles(((IB.Progress.Models.Profesional)HttpContext.Current.Session["PROFESIONAL"]).t001_idficepi);

            pro.Dispose();

            string retval = JsonConvert.SerializeObject(valores);
            return(retval);
        }

        catch (Exception ex)
        {
            if (pro != null)
            {
                pro.Dispose();
            }
            throw ex;
        }
    }
    public static void AceptarCambioRol(List <IB.Progress.Models.TramitacionCambioRol> oProfesional)
    {
        IB.Progress.BLL.TramitacionCambioRol solicitud = new IB.Progress.BLL.TramitacionCambioRol();
        StringBuilder sbPromotor         = null;
        StringBuilder sbOtrosEvaluadores = null;
        StringBuilder sbInteresado       = null;
        StringBuilder sbAprobador        = null;

        try
        {
            //Update de cambio de Rol
            solicitud.AceptarCambioRol(oProfesional);
            solicitud.Dispose();

            //Envío de Correos
            foreach (IB.Progress.Models.TramitacionCambioRol item in oProfesional)
            {
                sbPromotor = new StringBuilder();

                //ENVIAR CORREO AL PROMOTOR
                sbPromotor.Append(item.nomCortoPromotor + ", el cambio de rol que solicitaste para " + item.nombre_interesado + ", se ha producido y comunicado al profesional. </br></br>");

                sbPromotor.Append("Rol anterior: " + item.t940_desrolActual + "</br>");
                sbPromotor.Append("Rol nuevo: " + item.t940_desrolPropuesto + "</br>");

                if (item.CorreoPromotor != "")
                {
                    Correo.Enviar("PROGRESS: Cambio de rol confirmado", sbPromotor.ToString(), item.CorreoPromotor);
                }


                //ENVIAR CORREO AL INTERESADO
                sbInteresado = new StringBuilder();

                sbInteresado.Append(item.nomCortoInteresado + ", el cambio de rol solicitado por " + item.nombre_promotor + " para ti, ya es efectivo.</br></br>");

                sbInteresado.Append("Rol anterior: " + item.t940_desrolActual + "</br>");
                sbInteresado.Append("Rol nuevo: " + item.t940_desrolPropuesto + "</br>");

                if (item.correointeresado != "")
                {
                    Correo.Enviar("PROGRESS: Cambio de rol confirmado", sbInteresado.ToString(), item.correointeresado);
                }


                //ENVIAR CORREO AL APROBADOR
                sbAprobador = new StringBuilder();

                sbAprobador.Append(item.nomCortoAprobador + ", el cambio de rol solicitado por " + item.nombre_promotor + " para " + item.nombre_interesado + ", se ha producido y comunicado al profesional.</br></br>");

                sbAprobador.Append("Rol anterior: " + item.t940_desrolActual + "</br>");
                sbAprobador.Append("Rol nuevo: " + item.t940_desrolPropuesto + "</br>");

                if (item.CorreoAprobador != "")
                {
                    Correo.Enviar("PROGRESS: Cambio de rol confirmado", sbAprobador.ToString(), item.CorreoAprobador);
                }

                //ENVIAR CORREO A LOS EVALUADORES INTERMEDIOS
                IB.Progress.BLL.Profesional bllProfesional = new IB.Progress.BLL.Profesional();
                List <Profesional>          lstEvaluadores = bllProfesional.getAscendientesHastaAprobador(item.t001_idficepi_promotor);

                for (int i = 0; i < lstEvaluadores.Count; i++)
                {
                    sbOtrosEvaluadores = new StringBuilder();
                    sbOtrosEvaluadores.Append(lstEvaluadores[i].nombre + ", el cambio de rol solicitado por " + item.nombre_promotor + " para " + item.nombre_interesado + ", se ha producido y comunicado al profesional.</br></br>");
                    sbOtrosEvaluadores.Append("Rol anterior: " + item.t940_desrolActual + "</br>");
                    sbOtrosEvaluadores.Append("Rol nuevo: " + item.t940_desrolPropuesto + "</br>");
                    if (lstEvaluadores[i].Correo != "")
                    {
                        Correo.Enviar("PROGRESS: Información sobre cambio de rol confirmado", sbOtrosEvaluadores.ToString(), lstEvaluadores[i].Correo);
                    }
                }

                bllProfesional.Dispose();
            }
        }
        catch (Exception ex)
        {
            if (solicitud != null)
            {
                solicitud.Dispose();
            }
            throw ex;
        }
    }
Пример #11
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string sExtension = ".xlsx";
        string sFilename  = "";

        byte[]  oExcel   = null;
        string  pantalla = Request.QueryString["pantalla"];
        DataSet ds       = new DataSet();

        Response.ClearContent();
        Response.ClearHeaders();
        Response.Buffer = true;


        svcEXCEL.IsvcEXCELClient osvcEXCEL = new svcEXCEL.IsvcEXCELClient();
        try
        {
            switch (pantalla)
            {
            //Exportación del equipo desde la pantalla de desglose de rol
            case "desgloserol":

                //recuperar parametros del querystring
                int    idficepi         = int.Parse(Request.QueryString["idficepi"]);
                int    parentesco       = int.Parse(Request.QueryString["parentesco"]);
                string idficepitext     = Request.QueryString["idficepitext"];
                string parentescotext   = Request.QueryString["parentescotext"];
                int    numprofesionales = int.Parse(Request.QueryString["numprofesionales"]);

                sFilename = "desglose por rol" + sExtension;

                IB.Progress.BLL.DesgloseRol dRol = null;
                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Profesionales por rol";
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Evaluador";
                    oRow[1] = idficepitext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Nivel de dependencia";
                    oRow[1] = parentescotext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Total profesionales";
                    oRow[1] = numprofesionales;
                    dtH.Rows.Add(oRow);


                    //Datatable de cuerpo
                    List <IB.Progress.Models.DesgloseRol> desgloseRol = null;
                    dRol        = new IB.Progress.BLL.DesgloseRol();
                    desgloseRol = dRol.catalogoDesgloseRol(idficepi, parentesco);
                    dRol.Dispose();

                    //eliminar las filas con profesional = "";
                    desgloseRol = (from o in desgloseRol
                                   where o.Profesional.Length > 0
                                   select o).ToList <IB.Progress.Models.DesgloseRol>();

                    //convertir la lista a datatable
                    DataTable dtbody = desgloseRol.CopyGenericToDataTable <IB.Progress.Models.DesgloseRol>();
                    dtbody.TableName = "BODY-Excel";

                    //Eliminar las columnas no necesarias
                    ArrayList arl = new ArrayList();
                    foreach (DataColumn c in dtbody.Columns)
                    {
                        if (c.ColumnName.ToLower().Trim() != "desrol" && c.ColumnName.ToLower().Trim() != "profesional")
                        {
                            arl.Add(c);
                        }
                    }
                    foreach (DataColumn dc in arl)
                    {
                        dtbody.Columns.Remove(dc.ColumnName);
                    }

                    //renombar columnas
                    dtbody.Columns["desrol"].ColumnName      = "Rol";
                    dtbody.Columns["profesional"].ColumnName = "Profesional";

                    //reordenar columnas
                    dtbody.Columns["Rol"].SetOrdinal(0);
                    dtbody.Columns["Profesional"].SetOrdinal(1);


                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);


                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (dRol != null)
                    {
                        dRol.Dispose();
                    }
                }
                break;

            case "solicitudesaprobadas":

                //recuperar parametros del querystring
                int idficepiSolicitudesaprobadas = int.Parse(Request.QueryString["idficepi"]);

                IB.Progress.BLL.TramitacionCambioRol dTramitacion = null;
                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Solicitudes aprobadas";
                    dtH.Rows.Add(oRow);

                    //Datatable de cuerpo
                    List <IB.Progress.Models.TramitacionCambioRol> tramit = null;
                    dTramitacion = new IB.Progress.BLL.TramitacionCambioRol();
                    tramit       = dTramitacion.getSolicitudesSegunEstado(Convert.ToChar("P"), idficepiSolicitudesaprobadas);
                    dTramitacion.Dispose();

                    ////convertir la lista a datatable
                    DataTable dtbody = tramit.CopyGenericToDataTable <IB.Progress.Models.TramitacionCambioRol>();
                    dtbody.TableName = "BODY-Excel";


                    //Eliminar las columnas no necesarias
                    ArrayList arl = new ArrayList();
                    foreach (DataColumn c in dtbody.Columns)
                    {
                        if (c.ColumnName.ToLower().Trim() != "nombre_interesado" && c.ColumnName.ToLower().Trim() != "nombre_promotor" &&
                            c.ColumnName.ToLower().Trim() != "t940_desrolactual" && c.ColumnName.ToLower().Trim() != "t940_desrolpropuesto" &&
                            c.ColumnName.ToLower().Trim() != "t940_motivopropuesto" && c.ColumnName.ToLower().Trim() != "t940_fechaproposicion" &&
                            c.ColumnName.ToLower().Trim() != "aprobador" && c.ColumnName.ToLower().Trim() != "t940_fecharesolucion")
                        {
                            arl.Add(c);
                        }
                    }
                    foreach (DataColumn dc in arl)
                    {
                        dtbody.Columns.Remove(dc.ColumnName);
                    }


                    dtbody.Columns["nombre_interesado"].ColumnName     = "Profesional";
                    dtbody.Columns["nombre_promotor"].ColumnName       = "Evaluador";
                    dtbody.Columns["t940_desrolActual"].ColumnName     = "Rol actual";
                    dtbody.Columns["t940_desrolPropuesto"].ColumnName  = "Rol propuesto";
                    dtbody.Columns["t940_motivopropuesto"].ColumnName  = "Motivo";
                    dtbody.Columns["t940_fechaproposicion"].ColumnName = "Proposición";
                    dtbody.Columns["aprobador"].ColumnName             = "Aprobador";
                    dtbody.Columns["t940_fecharesolucion"].ColumnName  = "Aprobación";

                    //Reordenar columnas
                    dtbody.Columns["Profesional"].SetOrdinal(0);
                    dtbody.Columns["Evaluador"].SetOrdinal(1);
                    dtbody.Columns["Rol actual"].SetOrdinal(2);
                    dtbody.Columns["Rol propuesto"].SetOrdinal(3);
                    dtbody.Columns["Motivo"].SetOrdinal(4);
                    dtbody.Columns["Proposición"].SetOrdinal(5);
                    dtbody.Columns["Aprobador"].SetOrdinal(6);
                    dtbody.Columns["Aprobación"].SetOrdinal(7);

                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);

                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                finally
                {
                    if (dTramitacion != null)
                    {
                        dTramitacion.Dispose();
                    }
                }
                break;

            case "formaciondemandada":

                //recuperar parametros del querystring
                int    idficepiFormacionDemandada = int.Parse(Request.QueryString["idficepi"]);
                int    desde                 = int.Parse(Request.QueryString["desde"]);
                int    hasta                 = int.Parse(Request.QueryString["hasta"]);
                string selmesinitext         = Request.QueryString["mesinitext"];
                string selanoinitext         = Request.QueryString["anoinitext"];
                string selmesfintext         = Request.QueryString["mesfintext"];
                string selanofintext         = Request.QueryString["anofintext"];
                int    numevaluadosFormacion = int.Parse(Request.QueryString["numevaluaciones"]);

                Nullable <short> colectivo     = short.Parse(Request.QueryString["colectivo"]);
                string           colectivotext = Request.QueryString["colectivotext"];

                sFilename = "Formación demandada" + sExtension;
                IB.Progress.BLL.FormacionDemandada dFormacion = null;
                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Formación demandada";
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Desde";
                    oRow[1] = selmesinitext + " " + selanoinitext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Hasta";
                    oRow[1] = selmesfintext + " " + selanofintext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Colectivo";
                    oRow[1] = colectivotext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Total evaluaciones";
                    oRow[1] = numevaluadosFormacion;
                    dtH.Rows.Add(oRow);

                    //Datatable de cuerpo
                    IB.Progress.Models.FormacionDemandada formacionDemandada = null;
                    dFormacion         = new IB.Progress.BLL.FormacionDemandada();
                    formacionDemandada = dFormacion.catFormacionDemandada(idficepiFormacionDemandada, desde, hasta, colectivo);
                    dFormacion.Dispose();

                    ////convertir la lista a datatable
                    DataTable dtbody = formacionDemandada.FormacionDemandadaS1.CopyGenericToDataTable <IB.Progress.Models.FormacionDemandadaSelect1>();
                    dtbody.TableName = "BODY-Excel";

                    ////Eliminar las columnas no necesarias
                    dtbody.Columns.Remove("t930_idvaloracion");
                    dtbody.Columns.Remove("idformulario");

                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);

                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                finally{
                    if (dFormacion != null)
                    {
                        dFormacion.Dispose();
                    }
                }
                break;


            case "arboldependencias":

                //recuperar parametros del querystring
                int    idficepiArbol     = int.Parse(Request.QueryString["idficepi"]);
                string idficepitextArbol = Request.QueryString["idficepitext"];
                int    idficepievaluador = int.Parse(Request.QueryString["idficepievaluador"]);
                string evaluadortext     = Request.QueryString["evaluadortext"];
                string rolevaluador      = Request.QueryString["rolevaluador"];
                int    numevaluadosArbol = int.Parse(Request.QueryString["numevaluados"]);

                sFilename = "Árbol de dependencias" + sExtension;

                IB.Progress.BLL.ArbolDependencias dArbol = null;

                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Árbol de dependencias";
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Evaluador/a";
                    oRow[1] = evaluadortext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Rol del evaluador/a";
                    oRow[1] = rolevaluador;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Total evaluados/as";
                    oRow[1] = numevaluadosArbol;
                    dtH.Rows.Add(oRow);

                    //Datatable cuerpo
                    List <IB.Progress.Models.ArbolDependencias> arbolDependencias = null;
                    dArbol            = new IB.Progress.BLL.ArbolDependencias();
                    arbolDependencias = dArbol.catalogoArbolDependencias(idficepievaluador);
                    dArbol.Dispose();


                    //eliminar las filas con profesional = "";
                    arbolDependencias = (from o in arbolDependencias
                                         select o).ToList <IB.Progress.Models.ArbolDependencias>();

                    //convertir la lista a datatable
                    DataTable dtbody = arbolDependencias.CopyGenericToDataTable <IB.Progress.Models.ArbolDependencias>();
                    dtbody.TableName = "BODY-Excel";

                    //Eliminar las columnas no necesarias
                    ArrayList arl = new ArrayList();
                    foreach (DataColumn c in dtbody.Columns)
                    {
                        if (c.ColumnName.ToLower().Trim() != "evaluado" && c.ColumnName.ToLower().Trim() != "roldelevaluado")
                        {
                            arl.Add(c);
                        }
                    }
                    foreach (DataColumn dc in arl)
                    {
                        dtbody.Columns.Remove(dc.ColumnName);
                    }

                    //dtbody.Rows.Remove([dtbody.Rows[0])];
                    dtbody.Rows[0].Delete();

                    //renombar columnas
                    dtbody.Columns["evaluado"].ColumnName       = "Evaluado/a";
                    dtbody.Columns["roldelevaluado"].ColumnName = "Rol del evaluado/a";


                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);



                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally {
                    if (dArbol != null)
                    {
                        dArbol.Dispose();
                    }
                }

                break;



            case "arboldependenciasALL":

                //recuperar parametros del querystring
                int    idficepiArbolALL     = int.Parse(Request.QueryString["idficepi"]);
                string idficepitextArbolALL = Request.QueryString["idficepitext"];
                int    idficepievaluadorALL = int.Parse(Request.QueryString["idficepievaluador"]);
                string evaluadortextALL     = Request.QueryString["evaluadortext"];
                string rolevaluadorALL      = Request.QueryString["rolevaluador"];
                int    numevaluadosArbolALL = int.Parse(Request.QueryString["numevaluados"]);

                sFilename = "Árbol de dependencias" + sExtension;

                IB.Progress.BLL.ArbolDependencias dArbolALL = null;

                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Árbol de dependencias";
                    dtH.Rows.Add(oRow);

                    //Datatable cuerpo
                    List <IB.Progress.Models.ArbolDependencias> arbolDependencias = null;
                    dArbol            = new IB.Progress.BLL.ArbolDependencias();
                    arbolDependencias = dArbol.catalogoArbolDependenciasALL(idficepievaluadorALL);
                    dArbol.Dispose();


                    //eliminar las filas con profesional = "";
                    //arbolDependencias = (from o in arbolDependencias
                    //                     select o).ToList<IB.Progress.Models.ArbolDependencias>();

                    //convertir la lista a datatable
                    DataTable dtbody = arbolDependencias.CopyGenericToDataTable <IB.Progress.Models.ArbolDependencias>();
                    dtbody.TableName = "BODY-Excel";

                    //Eliminar las columnas no necesarias
                    ArrayList arl = new ArrayList();
                    foreach (DataColumn c in dtbody.Columns)
                    {
                        if (c.ColumnName.ToLower().Trim() != "evaluado" && c.ColumnName.ToLower().Trim() != "roldelevaluado" && c.ColumnName.ToLower().Trim() != "evaluador" && c.ColumnName.ToLower().Trim() != "roldelevaluador")
                        {
                            arl.Add(c);
                        }
                    }
                    foreach (DataColumn dc in arl)
                    {
                        dtbody.Columns.Remove(dc.ColumnName);
                    }

                    //renombar columnas
                    dtbody.Columns["evaluado"].ColumnName        = "Evaluado/a";
                    dtbody.Columns["evaluador"].ColumnName       = "Evaluador/a";
                    dtbody.Columns["Roldelevaluador"].ColumnName = "Rol del evaluador/a";
                    dtbody.Columns["Roldelevaluado"].ColumnName  = "Rol del evaluado/a";


                    //reordenar columnas
                    dtbody.Columns["Evaluador/a"].SetOrdinal(0);
                    dtbody.Columns["Rol del evaluador/a"].SetOrdinal(1);
                    dtbody.Columns["Evaluado/a"].SetOrdinal(2);
                    dtbody.Columns["Rol del evaluado/a"].SetOrdinal(3);


                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);

                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (dArbolALL != null)
                    {
                        dArbolALL.Dispose();
                    }
                }

                break;
            }
        }
        catch (Exception ex)
        {
            this.hdnError.Value = "Error al exportar a excel.<br /><br />: " + ex.Message;
        }
        finally
        {
            if (osvcEXCEL != null && osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
            {
                if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Faulted)
                {
                    osvcEXCEL.Close();
                }
                else
                {
                    osvcEXCEL.Abort();
                }
            }
        }

        //Devolver el excel
        if (Response.IsClientConnected && hdnError.Value == "")
        {
            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + sFilename + "\"");
            Response.BinaryWrite(oExcel);
            Response.ContentType = "application/vnd.ms-excel";
            //Para que funcione en Chrome
            if (System.Web.HttpContext.Current.Request.Browser.Browser.ToString() == "Chrome")
            {
                Response.AddHeader("Content-Length", "999999999999");
            }
            Response.Flush();
            Response.Close();
            Response.End();
            System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
        }
    }
    public static void AceptarPropuesta(List <IB.Progress.Models.TramitacionCambioRol> oProfesional)
    {
        IB.Progress.BLL.TramitacionCambioRol solicitud = new IB.Progress.BLL.TramitacionCambioRol();

        List <IB.Progress.Models.TramitacionCambioRol> oProfbyID = null;

        StringBuilder sbPromotor         = null;
        StringBuilder sbOtrosEvaluadores = null;
        StringBuilder sbInteresado       = null;
        StringBuilder sbAprobador        = null;

        try
        {
            //Update de cambio de Rol
            solicitud.AceptarCambioRol(oProfesional);
            solicitud.Dispose();

            oProfbyID = new List <TramitacionCambioRol>();

            //Linq.. Devuelve los id promotor distintos
            //var oProfbyID2 = (from e in oProfesional
            //                  select e.t001_idficepi_promotor
            //              ).Distinct().ToList();

            //Agrupa por id promotor y select profesionales
            //var result = oProfesional.GroupBy(objeto => objeto.t001_idficepi_promotor)
            //       .Select(grp => grp.First())
            //       .ToList();

            //var newList = oProfesional.GroupBy(x => x.t001_idficepi_promotor)
            //                                      .Select(group => new { GroupID = group.Key, Profesionales = group.ToList() })
            //                                      .ToList();

            //Envío de Correos
            foreach (IB.Progress.Models.TramitacionCambioRol item in oProfesional)
            {
                //ENVIAR CORREO AL PROMOTOR
                sbPromotor = new StringBuilder();
                sbPromotor.Append(item.nomCortoPromotor + ", el cambio de rol que solicitaste para " + item.nombre_interesado + ", se ha producido y comunicado al profesional. </br></br>");

                sbPromotor.Append("Rol anterior: " + item.t940_desrolActual + "</br>");
                sbPromotor.Append("Rol nuevo: " + item.t940_desrolPropuesto + "</br>");

                if (item.CorreoPromotor != "")
                {
                    Correo.Enviar("PROGRESS: Cambio de rol confirmado", sbPromotor.ToString(), item.CorreoPromotor);
                }


                //ENVIAR CORREO AL INTERESADO
                sbInteresado = new StringBuilder();

                sbInteresado.Append(item.nomCortoInteresado + ", el cambio de rol solicitado por " + item.nombre_promotor + " para tí, ya es efectivo.</br></br>");

                sbInteresado.Append("Rol anterior: " + item.t940_desrolActual + "</br>");
                sbInteresado.Append("Rol nuevo: " + item.t940_desrolPropuesto + "</br>");

                if (item.correointeresado != "")
                {
                    Correo.Enviar("PROGRESS: Cambio de rol confirmado", sbInteresado.ToString(), item.correointeresado);
                }


                //ENVIAR CORREO AL APROBADOR
                sbAprobador = new StringBuilder();

                sbAprobador.Append(item.nomCortoAprobador + ", el cambio de rol solicitado por " + item.nombre_promotor + " para " + item.nombre_interesado + ", se ha producido y comunicado al profesional.</br></br>");

                sbAprobador.Append("Rol anterior: " + item.t940_desrolActual + "</br>");
                sbAprobador.Append("Rol nuevo: " + item.t940_desrolPropuesto + "</br>");

                if (item.CorreoAprobador != "")
                {
                    Correo.Enviar("PROGRESS: Cambio de rol confirmado", sbAprobador.ToString(), item.CorreoAprobador);
                }

                //ENVIAR CORREO A LOS EVALUADORES INTERMEDIOS
                IB.Progress.BLL.Profesional bllProfesional = new IB.Progress.BLL.Profesional();
                List <Profesional>          lstEvaluadores = bllProfesional.getAscendientesHastaAprobador(item.t001_idficepi_promotor);

                for (int i = 0; i < lstEvaluadores.Count; i++)
                {
                    sbOtrosEvaluadores = new StringBuilder();
                    sbOtrosEvaluadores.Append(lstEvaluadores[i].nombre + ", el cambio de rol solicitado por " + item.nombre_promotor + " para " + item.nombre_interesado + ", se ha producido y comunicado al profesional.</br></br>");
                    sbOtrosEvaluadores.Append("Rol anterior: " + item.t940_desrolActual + "</br>");
                    sbOtrosEvaluadores.Append("Rol nuevo: " + item.t940_desrolPropuesto + "</br>");
                    if (lstEvaluadores[i].Correo != "")
                    {
                        Correo.Enviar("PROGRESS: Información sobre cambio de rol confirmado", sbOtrosEvaluadores.ToString(), lstEvaluadores[i].Correo);
                    }
                }

                bllProfesional.Dispose();
            }
        }
        catch (Exception ex)
        {
            if (solicitud != null)
            {
                solicitud.Dispose();
            }
            throw ex;
        }
    }