Exemplo n.º 1
0
        public DataTable obtenerComparacionPuestos(string XML_PUESTOS = null, int?ID_EMPLEADO = null)
        {
            PlanVidaCarreraOperaciones op = new PlanVidaCarreraOperaciones();
            List <SPE_OBTIENE_COMPARACION_PUESTOS_PLAN_VIDA_CARRERA_Result> lista = new List <SPE_OBTIENE_COMPARACION_PUESTOS_PLAN_VIDA_CARRERA_Result>();

            lista = op.obtenerComparacionPuestos(XML_PUESTOS, ID_EMPLEADO);

            Utilerias.Utilerias aux = new Utilerias.Utilerias();

            return(aux.ConvertToDataTable <SPE_OBTIENE_COMPARACION_PUESTOS_PLAN_VIDA_CARRERA_Result>(lista, true));
        }
Exemplo n.º 2
0
        public UDTT_ARCHIVO obtieneConsultaPersonalDetalladaExcel(int pIdBateria, string pNbCandidato, string pClFolio)
        {
            UDTT_ARCHIVO oConsultaPersonal = new UDTT_ARCHIVO();
            Stream       newStream         = new MemoryStream();

            Utilerias.Utilerias aux = new Utilerias.Utilerias();

            ConsultaPersonalOperaciones op = new ConsultaPersonalOperaciones();
            List <SPE_OBTIENE_CONSULTA_PERSONAL_DETALLADA_Result> vListaDetallada            = new List <SPE_OBTIENE_CONSULTA_PERSONAL_DETALLADA_Result>();
            List <SPE_OBTIENE_FACTORES_CONSULTA_Result>           vListaFactores             = new List <SPE_OBTIENE_FACTORES_CONSULTA_Result>();
            List <SPE_OBTIENE_COMPETENCIAS_CONSULTA_Result>       vListaCompetencias         = new List <SPE_OBTIENE_COMPETENCIAS_CONSULTA_Result>();
            List <SPE_OBTIENE_FACTORES_COMPETENCIAS_Result>       vListaFactoresCompetencias = new List <SPE_OBTIENE_FACTORES_COMPETENCIAS_Result>();

            //int vFila = 2;
            //int vColumna = 0;

            DataTable vDtPivot           = new DataTable();
            DataTable vDtFactoresPruebas = new DataTable();

            string vClaseColor      = "";
            string vColorEncabezado = "lightskyblue";
            //string vImagen = "";

            string vClasificacion = "";

            vListaFactores             = op.obtieneFactoresConsulta();
            vListaCompetencias         = op.obtieneCompetenciasConsulta();
            vListaFactoresCompetencias = op.obtieneFactoresCompetencias();
            vDtFactoresPruebas         = ObtieneDataTableCompetencias();
            vListaDetallada            = op.obtieneConsultaPersonalDetallada(pIdBateria);
            bool    vFgValidaTiva = true;
            int     vResBaremos   = 0;
            decimal vTvTotal      = 0;

            //Se agregan los dos lineas siguientes para obtener las variables baremos sin relacionar con competencias
            PruebasNegocio pruebas  = new PruebasNegocio();
            var            vBaremos = pruebas.obtenerVariableBaremos(pIdBateria);

            if (vListaDetallada.Count > 0)
            {
                if (vListaDetallada.Exists(e => e.CL_VARIABLE == "TV-TOTAL"))
                {
                    vTvTotal = Math.Round(vListaDetallada.Where(w => w.CL_VARIABLE == "TV-TOTAL").Select(s => s.NO_VALOR).FirstOrDefault(), 0);
                }
            }

            foreach (var item in vBaremos)
            {
                if (item.CL_VARIABLE == "L1-CONSTANCIA" || item.CL_VARIABLE == "L1-CUMPLIMIENTO" || item.CL_VARIABLE == "L2-MANTIENE Y CONSERVA" || item.CL_VARIABLE == "IN-REGULATORIO")
                {
                    if (vTvTotal == 1)
                    {
                        vResBaremos += (item.NO_VALOR == 1 || item.NO_VALOR == 2) ? 1 : 0;
                    }

                    if (vTvTotal == 2)
                    {
                        vResBaremos += (item.NO_VALOR == 3 || item.NO_VALOR == 2) ? 1 : 0;
                    }

                    if (vTvTotal == 3)
                    {
                        vResBaremos += (item.NO_VALOR == 3 || item.NO_VALOR == 2) ? 1 : 0;
                    }
                }
            }

            if ((4 - vResBaremos) >= 2)
            {
                vFgValidaTiva = false;
            }

            vDtPivot.Columns.Add("CL_COLOR", typeof(string));
            vDtPivot.Columns.Add("NB_COMPETENCIA", typeof(string));

            foreach (var item in vListaFactores)
            {
                vDtPivot.Columns.Add(item.ID_FACTOR.ToString() + "E", typeof(int));
            }

            foreach (var vCom in vListaCompetencias)
            {
                DataRow vDr = vDtPivot.NewRow();

                if (!vClasificacion.Equals(vCom.NB_CLASIFICACION_COMPETENCIA))
                {
                    vClasificacion = vCom.NB_CLASIFICACION_COMPETENCIA;
                    DataRow vDrClasificacion = vDtPivot.NewRow();

                    vDrClasificacion["CL_COLOR"]       = vCom.CL_COLOR;
                    vDrClasificacion["NB_COMPETENCIA"] = vCom.NB_CLASIFICACION_COMPETENCIA;
                    vDtPivot.Rows.Add(vDrClasificacion);

                    vDrClasificacion = null;
                }

                vClaseColor           = string.Format(vCom.CL_COLOR);
                vDr["NB_COMPETENCIA"] = vCom.NB_COMPETENCIA;

                foreach (var vFac in vListaFactores)
                {
                    var vResultado = vListaDetallada.Where(t => t.ID_COMPETENCIA == vCom.ID_COMPETENCIA & t.ID_FACTOR == vFac.ID_FACTOR).FirstOrDefault();
                    if (vResultado != null)
                    {
                        if (vResultado.NB_PRUEBA == "TIVA" && vFgValidaTiva == false)
                        {
                            vDr[vFac.ID_FACTOR.ToString() + "E"] = "-1";
                        }
                        else
                        {
                            int vNum = (int)vResultado.NO_VALOR;
                            if (vNum == 0)
                            {
                                vDr[vFac.ID_FACTOR.ToString() + "E"] = "-1";
                            }
                            else
                            {
                                vDr[vFac.ID_FACTOR.ToString() + "E"] = vNum;
                            }
                        }
                    }
                    else
                    {
                        var vBuscarResultado = vListaFactoresCompetencias.Where(t => t.ID_COMPETENCIA == vCom.ID_COMPETENCIA & t.ID_FACTOR == vFac.ID_FACTOR).FirstOrDefault();
                        if (vBuscarResultado != null)
                        {
                            vDr[vFac.ID_FACTOR.ToString() + "E"] = "-1";
                        }
                    }
                }

                vDtPivot.Rows.Add(vDr);
            }



            using (ExcelPackage pck = new ExcelPackage(newStream))
            {
                var ws = pck.Workbook.Worksheets.Add("ConsultaPersonalDetallada");


                ws.Cells["B1"].Value           = "Consulta personal detallada";
                ws.Cells["B1"].Style.Font.Size = 18;
                ws.Cells["B1"].Style.Font.Color.SetColor(System.Drawing.Color.IndianRed);

                ws.Cells["B3"].Value           = "Folio de solicitud: " + pClFolio + "     Candidato: " + pNbCandidato;
                ws.Cells["B3"].Style.Font.Bold = true;
                asignarEstiloCelda(ws.Cells["B3:C3"], "PowderBlue", false);

                //Datos de pruebas y competencias
                ws.Cells["A7"].LoadFromDataTable(vDtPivot, false);

                //Encabezados
                ws.Cells["C5"].LoadFromDataTable(vDtFactoresPruebas, false);

                ws.Column(2).AutoFit();

                //Ahora, vamos a realizar un loop para hacer el merge de las columnas de las pruebas y ver como queda
                int vNoColumnas = vDtFactoresPruebas.Columns.Count;
                int vNoFilas    = vDtPivot.Columns.Count;

                int vColumnaInicial = 3;
                int vColumnaFinal   = 3;
                int vFilaPruebas    = 5;
                int vFilaFactores   = 6;
                int vFilaDatos      = 7;

                string vNbPrueba       = ws.Cells[vFilaPruebas, vColumnaInicial].Value.ToString();
                bool   vFgRealizaMerge = false;


                //Iteramos las filas para encontrar la fila de la clasificación y dibujarla
                for (int i = 1; i <= vNoFilas + 1; i++)
                {
                    if (ws.Cells[vFilaDatos, 1].Value != null)
                    {
                        vClaseColor = ws.Cells[vFilaDatos, 1].Value.ToString();
                        ws.Cells[vFilaDatos, 1, vFilaDatos, (vNoColumnas + 2)].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                        ws.Cells[vFilaDatos, 1, vFilaDatos, (vNoColumnas + 2)].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.FromName(vClaseColor));
                        ws.Cells[vFilaDatos, 1, vFilaDatos, (vNoColumnas + 2)].Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Medium, System.Drawing.Color.Black);
                        ws.Cells[vFilaDatos, 1, vFilaDatos, (vNoColumnas + 2)].Style.Font.Bold = true;
                    }

                    vFilaDatos++;
                }

                //Iteramos las columnas para hacer el merge de los titulos de las pruebas y cambiar la orientación de los factores de las pruebas, tambien acomodamos el tamaño de las columnas
                for (int i = 1; i <= vNoColumnas + 1; i++)
                {
                    if (ws.Cells[vFilaPruebas, vColumnaFinal].Value == null)
                    {
                        vFgRealizaMerge = true;
                    }
                    else
                    {
                        if (!ws.Cells[vFilaPruebas, vColumnaFinal].Value.ToString().Equals(vNbPrueba))
                        {
                            vFgRealizaMerge = true;
                        }
                    }

                    if (vFgRealizaMerge)
                    {
                        //aplicamos el merge y el centrado al título de la prueba
                        ws.Cells[vFilaPruebas, vColumnaInicial, vFilaPruebas, (vColumnaFinal - 1)].Merge = true;
                        ws.Cells[vFilaPruebas, vColumnaInicial].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;

                        //Agregamos el color y el borde
                        ws.Cells[vFilaPruebas, vColumnaInicial, vFilaFactores, (vColumnaFinal - 1)].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                        ws.Cells[vFilaPruebas, vColumnaInicial, vFilaFactores, (vColumnaFinal - 1)].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.FromName(vColorEncabezado));
                        //ws.Cells[vFilaPruebas, vColumnaInicial, vFilaFactores, (vColumnaFinal - 1)].Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Medium, System.Drawing.Color.Black);

                        ws.Cells[vFilaPruebas, vColumnaInicial, vFilaFactores, (vColumnaFinal - 1)].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                        ws.Cells[vFilaPruebas, vColumnaInicial, vFilaFactores, (vColumnaFinal - 1)].Style.Border.Left.Style   = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                        ws.Cells[vFilaPruebas, vColumnaInicial, vFilaFactores, (vColumnaFinal - 1)].Style.Border.Top.Style    = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                        ws.Cells[vFilaPruebas, vColumnaInicial, vFilaFactores, (vColumnaFinal - 1)].Style.Border.Right.Style  = OfficeOpenXml.Style.ExcelBorderStyle.Medium;

                        if (vColorEncabezado.Equals("lightskyblue"))
                        {
                            vColorEncabezado = "white";
                        }
                        else
                        {
                            vColorEncabezado = "lightskyblue";
                        }

                        if (ws.Cells[vFilaPruebas, vColumnaFinal].Value != null)
                        {
                            vNbPrueba = ws.Cells[vFilaPruebas, vColumnaFinal].Value.ToString();
                        }
                        else
                        {
                            vNbPrueba = "";
                        }

                        vColumnaInicial = vColumnaFinal;
                        vFgRealizaMerge = false;
                    }


                    ws.Cells[vFilaFactores, vColumnaFinal].Style.TextRotation      = 180;
                    ws.Cells[vFilaFactores, vColumnaFinal].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Top;
                    vColumnaFinal++;
                }

                //Aqui estams metiendo las formulas necesarias para que ponga el color según el valor

                var conditionalFormattingRule01 = ws.ConditionalFormatting.AddEqual(ws.Cells[3, 3, (vNoFilas + 3), (vNoColumnas + 3)]);
                conditionalFormattingRule01.Formula = "3";
                conditionalFormattingRule01.Style.Fill.PatternType           = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                conditionalFormattingRule01.Style.Fill.BackgroundColor.Color = System.Drawing.Color.Green;
                conditionalFormattingRule01.Style.Font.Color.Color           = System.Drawing.Color.Green;
                conditionalFormattingRule01.Style.Border.Bottom.Style        = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule01.Style.Border.Top.Style           = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule01.Style.Border.Right.Style         = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule01.Style.Border.Left.Style          = OfficeOpenXml.Style.ExcelBorderStyle.Medium;

                var conditionalFormattingRule02 = ws.ConditionalFormatting.AddEqual(ws.Cells[3, 3, (vNoFilas + 3), (vNoColumnas + 3)]);
                conditionalFormattingRule02.Formula = "2";
                conditionalFormattingRule02.Style.Fill.PatternType           = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                conditionalFormattingRule02.Style.Fill.BackgroundColor.Color = System.Drawing.Color.Yellow;
                conditionalFormattingRule02.Style.Font.Color.Color           = System.Drawing.Color.Yellow;
                conditionalFormattingRule02.Style.Border.Bottom.Style        = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule02.Style.Border.Top.Style           = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule02.Style.Border.Right.Style         = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule02.Style.Border.Left.Style          = OfficeOpenXml.Style.ExcelBorderStyle.Medium;

                var conditionalFormattingRule03 = ws.ConditionalFormatting.AddEqual(ws.Cells[3, 3, (vNoFilas + 3), (vNoColumnas + 3)]);
                conditionalFormattingRule03.Formula = "1";
                conditionalFormattingRule03.Style.Fill.PatternType           = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                conditionalFormattingRule03.Style.Fill.BackgroundColor.Color = System.Drawing.Color.Red;
                conditionalFormattingRule03.Style.Font.Color.Color           = System.Drawing.Color.Red;
                conditionalFormattingRule03.Style.Border.Bottom.Style        = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule03.Style.Border.Top.Style           = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule03.Style.Border.Right.Style         = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule03.Style.Border.Left.Style          = OfficeOpenXml.Style.ExcelBorderStyle.Medium;

                var conditionalFormattingRule04 = ws.ConditionalFormatting.AddEqual(ws.Cells[3, 3, (vNoFilas + 3), (vNoColumnas + 3)]);
                conditionalFormattingRule04.Formula = "-1";
                conditionalFormattingRule04.Style.Fill.PatternType           = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                conditionalFormattingRule04.Style.Fill.BackgroundColor.Color = System.Drawing.Color.Gray;
                conditionalFormattingRule04.Style.Font.Color.Color           = System.Drawing.Color.Gray;
                conditionalFormattingRule04.Style.Border.Bottom.Style        = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule04.Style.Border.Top.Style           = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule04.Style.Border.Right.Style         = OfficeOpenXml.Style.ExcelBorderStyle.Medium;
                conditionalFormattingRule04.Style.Border.Left.Style          = OfficeOpenXml.Style.ExcelBorderStyle.Medium;

                ws.Column(1).Hidden = true;

                pck.Save();
                newStream = pck.Stream;
            }

            oConsultaPersonal.NB_ARCHIVO = "ConsultaPersonalDetallada.xlsx";
            oConsultaPersonal.FI_ARCHIVO = ((MemoryStream)newStream).ToArray();

            return(oConsultaPersonal);
        }
Exemplo n.º 3
0
        public UDTT_ARCHIVO obtieneConsultaPersonalResumenDT(int pIdBateria, bool vFgConsultaParcial, string pNbCandidato, string pClFolio)
        {
            ConsultaPersonalOperaciones op = new ConsultaPersonalOperaciones();
            UDTT_ARCHIVO oConsultaPersonal = new UDTT_ARCHIVO();
            Stream       newStream         = new MemoryStream();

            Utilerias.Utilerias aux = new Utilerias.Utilerias();

            int     vFila            = 9;
            string  vClCelda         = "";
            string  vNbCategoria     = "";
            decimal?vPromedioBaremos = 0;

            //Obtenemos los datos y los pasamos a un DataTable
            List <SPE_OBTIENE_CONSULTA_PERSONAL_RESUMEN_Result> oLista = op.obtieneConsultaPersonalResumen(pIdBateria, vFgConsultaParcial);

            vPromedioBaremos = oLista.Average(t => t.NO_BAREMO_PORCENTAJE);

            //Creamos el archivo de excel
            using (ExcelPackage pck = new ExcelPackage(newStream))
            {
                var ws = pck.Workbook.Worksheets.Add("ConsultaPersonalResumida");

                ws.Column(1).Width = 50;
                ws.Column(2).Width = 50;
                ws.Column(3).Width = 50;

                ws.Cells["A3"].Value           = "Consulta personal resumida";
                ws.Cells["A3"].Style.Font.Size = 18;
                ws.Cells["A3"].Style.Font.Color.SetColor(System.Drawing.Color.IndianRed);

                ws.Cells["A5"].Value           = "Folio de solicitud: " + pClFolio + "     Candidato: " + pNbCandidato;
                ws.Cells["A5"].Style.Font.Bold = true;
                asignarEstiloCelda(ws.Cells["A5:B5"], "PowderBlue", false);

                ws.Cells["A7"].Value = "Competencia";
                asignarEstiloCelda(ws.Cells["A7"], "PowderBlue");

                ws.Cells["B7"].Value = "Descripción competencia";
                asignarEstiloCelda(ws.Cells["B7"], "PowderBlue");

                ws.Cells["C7"].Value = "Descripción del nivel";
                asignarEstiloCelda(ws.Cells["C7"], "PowderBlue");

                ws.Cells["D7"].Value = "Porcentaje";
                asignarEstiloCelda(ws.Cells["D7"], "PowderBlue");

                foreach (SPE_OBTIENE_CONSULTA_PERSONAL_RESUMEN_Result item in oLista)
                {
                    //aquí verificamos la primer entrada del ciclo
                    if (string.IsNullOrEmpty(vNbCategoria))
                    {
                        vClCelda = "A" + vFila.ToString() + ":D" + vFila.ToString();
                        ws.Cells[vClCelda].Merge = true;

                        vClCelda = "A" + vFila.ToString();
                        ws.Cells[vClCelda].Value = item.CL_CLASIFICACION;
                        vNbCategoria             = item.CL_CLASIFICACION;

                        vClCelda = "A" + vFila.ToString() + ":D" + vFila.ToString();
                        asignarEstiloCelda(ws.Cells[vClCelda], item.CL_COLOR);
                        vFila++;
                    }


                    //Ahora, verificamos que la clasificación sea diferente, esto para el cambio de clasificación
                    if (!vNbCategoria.Equals(item.CL_CLASIFICACION))
                    {
                        vClCelda = "A" + vFila.ToString() + ":D" + vFila.ToString();
                        ws.Cells[vClCelda].Merge = true;

                        vClCelda = "A" + vFila.ToString();
                        ws.Cells[vClCelda].Value = item.CL_CLASIFICACION;
                        vNbCategoria             = item.CL_CLASIFICACION;

                        vClCelda = "A" + vFila.ToString() + ":D" + vFila.ToString();
                        asignarEstiloCelda(ws.Cells[vClCelda], item.CL_COLOR);
                        vFila++;
                    }

                    ws.Row(vFila).Style.WrapText = true;

                    //Si no entró a ninguna de las anteriores, ponemos los datos de la competencía
                    vClCelda = "A" + vFila.ToString();
                    ws.Cells[vClCelda].Value = item.NB_COMPETENCIA;
                    asignarEstiloCelda(ws.Cells[vClCelda], item.CL_COLOR);

                    vClCelda = "B" + vFila.ToString();
                    ws.Cells[vClCelda].Value = item.DS_COMPETENCIA;
                    asignarEstiloCelda(ws.Cells[vClCelda], item.CL_COLOR);

                    vClCelda = "C" + vFila.ToString();
                    ws.Cells[vClCelda].Value = item.DS_NIVEL_COMPETENCIA_PERSONA;
                    asignarEstiloCelda(ws.Cells[vClCelda]);


                    vClCelda = "D" + vFila.ToString();
                    ws.Cells[vClCelda].Value = item.NO_BAREMO_PORCENTAJE.Value.ToString("N2") + "%";
                    asignarEstiloCelda(ws.Cells[vClCelda], alineacion: OfficeOpenXml.Style.ExcelHorizontalAlignment.Right);

                    vFila++;
                }

                vFila++;

                vClCelda = "A" + vFila.ToString();
                ws.Cells[vClCelda].Value           = "Compatibilidad: " + vPromedioBaremos.Value.ToString("N2") + "%";
                ws.Cells[vClCelda].Style.Font.Bold = true;

                pck.Save();
                newStream = pck.Stream;
            }

            oConsultaPersonal.NB_ARCHIVO = "ConsultaPersonalResumida.xlsx";
            oConsultaPersonal.FI_ARCHIVO = ((MemoryStream)newStream).ToArray();

            return(oConsultaPersonal);
        }