private DataTable ObtieneTableroControl() { TableroControlNegocio nTablero = new TableroControlNegocio(); vLstColumnas = nTablero.ObtenerPeriodosEvaluadosTableroControl(vIdTableroControl, vIdEmpleado).ToList(); vLstEvaluados = nTablero.ObtenerEvaluadosTableroControl(vIdTableroControl, vIdEmpleado, pIdRol: vIdRol).ToList(); vLstCompatibilidad = nTablero.ObtenerCompatibilidadPuestoTablero(vIdTableroControl, vIdEmpleado, vIdPuesto).ToList(); vLstResultFyD = nTablero.ObtenerResultadosFyDTableroControl(vIdTableroControl, vIdEmpleado, vIdPuesto).ToList(); vLstResultEd = nTablero.ObtenerResultadosEDTableroControl(vIdTableroControl, vIdEmpleado).ToList(); vLstClimaLaboral = nTablero.ObtenerClimaLaboralTablero(vIdTableroControl, vIdEmpleado).ToList(); vLstTabuladores = nTablero.ObtenerTabuladoresTableroControl(vIdTableroControl, vIdEmpleado).ToList(); var vPeriodoTablero = nTablero.ObtenerPeriodoTableroControl(vIdTableroControl, null, vIdEmpleado, vIdPuesto).FirstOrDefault(); string vDivsCeldaPromedio = ""; string vAdicionales = ""; string vDivsCeldasPo = "<table class=\"tablaColor\"> " + "<tr> " + "<td class=\"porcentaje\"> " + "<div class=\"divPorcentaje\">{0}</div> " + "</td> " + "<td class=\"color\"> " + "<div class=\"{1}\"> </div> " + "</td> </tr> </table>"; DataTable vDtPivot = new DataTable(); vDtPivot.Columns.Add("FI_FOTOGRAFIA", typeof(string)); vDtPivot.Columns.Add("NB_EMPLEADO_PUESTO", typeof(string)); vDtPivot.Columns.Add("ID_EVALUADO", typeof(string)); // if (vFgComentarios == true) vDtPivot.Columns.Add("DS_COMENTARIOS", typeof(string)); if (vPeriodoTablero != null) { if (vPeriodoTablero.FG_EVALUACION_IDP == true) { vDtPivot.Columns.Add("COMPATIVILIDAD_VS_PUESTO", typeof(string)); } foreach (var item in vLstColumnas) { if (item.CL_TIPO_PERIODO_REFERENCIA == "FD_EVALUACION") { vDtPivot.Columns.Add(item.ID_PERIODO_REFERENCIA.ToString(), typeof(string)); } } foreach (var item in vLstColumnas) { switch (item.CL_TIPO_PERIODO_REFERENCIA) { case "EO_DESEMPENO": vDtPivot.Columns.Add(item.ID_PERIODO_REFERENCIA.ToString(), typeof(string)); break; case "EO_CLIMA": vDtPivot.Columns.Add(item.ID_PERIODO_REFERENCIA.ToString(), typeof(string)); break; case "TABULADOR": vDtPivot.Columns.Add("T" + item.ID_PERIODO_REFERENCIA.ToString(), typeof(string)); break; } } if (vPeriodoTablero.FG_EVALUACION_FYD == true) { vDtPivot.Columns.Add("TENDENCIA_FYD", typeof(string)); } if (vPeriodoTablero.FG_EVALUACION_DESEMPEÑO == true) { vDtPivot.Columns.Add("TENDENCIA_ED", typeof(string)); } vDtPivot.Columns.Add("PROMEDIO", typeof(string)); if (vPeriodoTablero.FG_EVALUACION_DESEMPEÑO == true) { vDtPivot.Columns.Add("BONO", typeof(string)); } } else { vDtPivot.Columns.Add("COMPATIVILIDAD_VS_PUESTO", typeof(string)); vDtPivot.Columns.Add("PROMEDIO", typeof(string)); } foreach (var item in vLstEvaluados) { decimal?vPromedio = 0; decimal?vPorcentajeIDP = 0; decimal?vPorcentajeFYD = 0; int vNumPeriodoFyD = 0; decimal?vPorcentajeED = 0; int vNumPeriodoED = 0; decimal?vPorcentajeCL = 0; int vNumPeriodoCL = 0; double vPromedioTotal = 0.0; DataRow vDr = vDtPivot.NewRow(); vDr["DS_COMENTARIOS"] = item.DS_COMENTARIO; var vResultado = vLstEvaluados.Where(t => t.ID_EMPLEADO == item.ID_EMPLEADO && t.FI_FOTOGRAFIA != null).FirstOrDefault(); if (vResultado != null) { vDr["FI_FOTOGRAFIA"] = "<div class=\"image_resize\"><img id=\"profileImage\" src=\"data:image/jpg;base64, " + Convert.ToBase64String(vResultado.FI_FOTOGRAFIA) + "\"></div>"; } else { vDr["FI_FOTOGRAFIA"] = "<div class=\"image_resize\"><img id=\"profileImage\"></div>"; } if (item.XML_CAMPOS_ADICIONALES != null) { vAdicionales = ObtenerAdicionales(item.XML_CAMPOS_ADICIONALES.ToString()); } vDr["NB_EMPLEADO_PUESTO"] = "<p title=\"Clave: " + item.CL_EMPLEADO + ", " + item.CL_DEPARTAMENTO + " " + item.NB_DEPARTAMENTO + ", " + vAdicionales + "\"><a href=\"javascript:OpenInventario(" + item.ID_EMPLEADO + ")\">" + item.NB_EMPLEADO + "</a></p>" + "<p title=\"" + item.CL_PUESTO + "\"><a href=\"javascript:OpenDescriptivo(" + item.ID_PUESTO_PERIODO + ")\">" + item.NB_PUESTO + "</a></p>"; vDr["ID_EVALUADO"] = item.ID_EVALUADO.ToString(); if (vPeriodoTablero != null) { if (vPeriodoTablero.FG_EVALUACION_IDP == true) { var vCompatibilidad = vLstCompatibilidad.Where(t => t.ID_EMPLEADO == item.ID_EMPLEADO && t.ID_PUESTO == item.ID_PUESTO_PERIODO).FirstOrDefault(); if (vCompatibilidad != null) { if (vCompatibilidad.PROMEDIO != null) { vPorcentajeIDP = vPorcentajeIDP + vCompatibilidad.PROMEDIO; vDr["COMPATIVILIDAD_VS_PUESTO"] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\"><a href=\"javascript:openComparativaPuesto(" + vCompatibilidad.ID_CANDIDATO + ", " + vCompatibilidad.ID_PUESTO + ")\">" + vCompatibilidad.PROMEDIO.ToString() + "%</a></p>", vCompatibilidad.CL_COLOR_COMPATIBILIDAD); } else { vDr["COMPATIVILIDAD_VS_PUESTO"] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\">N/A</p>", "divNa"); } } else { vDr["COMPATIVILIDAD_VS_PUESTO"] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\">N/A</p>", "divNa"); } vPromedio = vPromedio + ((vPorcentajeIDP) * (vPeriodoTablero.PR_IDP / 100)); } foreach (var vColumn in vLstColumnas) { if (vColumn.CL_TIPO_PERIODO_REFERENCIA == "FD_EVALUACION") { var vResult = vLstResultFyD.Where(t => t.ID_EMPLEADO == item.ID_EMPLEADO && t.ID_PERIODO_REFERENCIA == vColumn.ID_PERIODO_REFERENCIA).FirstOrDefault(); if (vResult != null) { vPorcentajeFYD = vPorcentajeFYD + vResult.PR_CUMPLIMIENTO; vNumPeriodoFyD = vNumPeriodoFyD + 1; vDr[vColumn.ID_PERIODO_REFERENCIA.ToString()] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\"><a href=\"javascript:OpenReporteIndividual(" + vResult.ID_EVALUADO + ", " + vResult.ID_PERIODO_REFERENCIA + ")\">" + vResult.PR_CUMPLIMIENTO.ToString() + "%</a></p>", vResult.CL_COLOR_CUMPLIMIENTO); } else { vDr[vColumn.ID_PERIODO_REFERENCIA.ToString()] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\">N/A<p>", "divNa"); } } if (vColumn.CL_TIPO_PERIODO_REFERENCIA == "EO_DESEMPENO") { var vResult = vLstResultEd.Where(t => t.ID_EMPLEADO == item.ID_EMPLEADO && t.ID_PERIODO_REFERENCIA == vColumn.ID_PERIODO_REFERENCIA).FirstOrDefault(); if (vResult != null) { vPorcentajeED = vPorcentajeED + vResult.PR_CUMPLIMIENTO_EVALUADO; vNumPeriodoED = vNumPeriodoED + 1; vDr[vColumn.ID_PERIODO_REFERENCIA.ToString()] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\"><a href=\"javascript:OpenReporteCumplimientoPersonal(" + vResult.ID_EVALUADO + ", " + vResult.ID_PERIODO_REFERENCIA + ")\">" + vResult.PR_CUMPLIMIENTO_EVALUADO.ToString() + "%</a></p>", vResult.CL_COLOR_CUMPLIMIENTO); } else { vDr[vColumn.ID_PERIODO_REFERENCIA.ToString()] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\">N/A</p>", "divNa"); } } if (vColumn.CL_TIPO_PERIODO_REFERENCIA == "TABULADOR") { var vResult = vLstTabuladores.Where(t => t.ID_EMPLEADO == item.ID_EMPLEADO && t.ID_PUESTO == item.ID_PUESTO_PERIODO).FirstOrDefault(); if (vResult != null) { string vIcono = ObtenerIconoDiferencia(vResult.DIFERENCIA, vResult.MN_SUELDO_ORIGINAL); vDr["T" + vColumn.ID_PERIODO_REFERENCIA.ToString()] = "<p title=\"" + vResult.MN_SUELDO_ORIGINAL.ToString() + ", " + item.CL_PUESTO + ", " + item.NB_PUESTO + "\">" + (Math.Abs((decimal)vResult.DIFERENCIA)).ToString() + "% <img src='../Assets/images/Icons/25/Arrow" + vIcono + ".png' /></p>"; } else { vDr["T" + vColumn.ID_PERIODO_REFERENCIA.ToString()] = "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\">N/A</p>"; } } if (vColumn.CL_TIPO_PERIODO_REFERENCIA == "EO_CLIMA") { var vResult = vLstClimaLaboral.Where(t => t.ID_EMPLEADO == item.ID_EMPLEADO && t.ID_PERIODO == vColumn.ID_PERIODO_REFERENCIA).FirstOrDefault(); if (vResult != null) { if (vResult.PROMEDIO_RESULTADO != null) { vPorcentajeCL = vPorcentajeCL + vResult.PROMEDIO_RESULTADO; vNumPeriodoCL = vNumPeriodoCL + 1; vDr[vColumn.ID_PERIODO_REFERENCIA.ToString()] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\"><a href=\"javascript:openCuestionarioClima(" + vResult.ID_EVALUADOR + ", " + vResult.ID_PERIODO + ")\">" + vResult.PROMEDIO_RESULTADO.ToString() + "%</a></p>", vResult.COLOR_DIMENSION); } else { vPorcentajeCL = vPorcentajeCL + ((vResult.PROMEDIO_RESULTADO == null) ? 0 : vResult.PROMEDIO_RESULTADO); vNumPeriodoCL = vNumPeriodoCL + 1; vDr[vColumn.ID_PERIODO_REFERENCIA.ToString()] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\"><a href=\"javascript:openCuestionarioClima(" + vResult.ID_EVALUADOR + ", " + vResult.ID_PERIODO + ")\">0%</a></p>", vResult.COLOR_DIMENSION); } } else { vDr[vColumn.ID_PERIODO_REFERENCIA.ToString()] = String.Format(vDivsCeldasPo, "<p title=\"" + item.CL_PUESTO + ", " + item.NB_PUESTO + "\">N/A</p>", "divNa"); } } } if (vPeriodoTablero.FG_EVALUACION_FYD == true) { var vResult = vLstResultFyD.Where(t => t.ID_EMPLEADO == item.ID_EMPLEADO && t.ID_PUESTO == item.ID_PUESTO_PERIODO).FirstOrDefault(); if (vResult != null) { vDr["TENDENCIA_FYD"] = String.Format(vDivsCeldasPo, vResult.FYD_TENDENCIA, vResult.CL_COLOR_TENDENCIA); } else { vDr["TENDENCIA_FYD"] = String.Format(vDivsCeldasPo, "N/A", "divNa"); } } if (vPeriodoTablero.FG_EVALUACION_DESEMPEÑO == true) { var vResult = vLstResultEd.Where(t => t.ID_EMPLEADO == item.ID_EMPLEADO && t.ID_PUESTO_PERIODO == item.ID_PUESTO_PERIODO).FirstOrDefault(); if (vResult != null) { vDr["TENDENCIA_ED"] = String.Format(vDivsCeldasPo, vResult.ED_TENDENCIA, vResult.CL_COLOR_TENDENCIA); } else { vDr["TENDENCIA_ED"] = String.Format(vDivsCeldasPo, "N/A", "divNa"); } } if (vPeriodoTablero.FG_EVALUACION_DESEMPEÑO == true) { var vBono = vLstResultEd.Where(t => t.ID_EMPLEADO == item.ID_EMPLEADO && t.ID_PUESTO_PERIODO == item.ID_PUESTO_PERIODO).FirstOrDefault(); if (vBono != null) { vDr["BONO"] = "$" + vBono.MN_BONO.ToString(); } else { vDr["BONO"] = "N/A"; } } //// Se hace proceso de calculo de porcentajes por modulo del tablero if (vNumPeriodoFyD > 0) { vPromedio = ((vPromedio == null) ? 0 : vPromedio) + ((vPorcentajeFYD / vNumPeriodoFyD) * (vPeriodoTablero.PR_FYD / 100)); } if (vNumPeriodoED > 0) { vPromedio = vPromedio + ((vPorcentajeED / vNumPeriodoED) * (vPeriodoTablero.PR_DESEMPENO / 100)); } if (vNumPeriodoCL > 0) { vPromedio = vPromedio + ((vPorcentajeCL / vNumPeriodoCL) * (vPeriodoTablero.PR_CLIMA_LABORAL / 100)); } vDivsCeldaPromedio = ObtenerColorPromedio(vPromedio); if (vPromedio != null) { vPromedioTotal = (double)vPromedio; } vDr["PROMEDIO"] = String.Format(vDivsCeldasPo, Math.Round(vPromedioTotal, 2).ToString() + "%", vDivsCeldaPromedio); } vDtPivot.Rows.Add(vDr); } return(vDtPivot); }