public E_RESULTADO ActualizaProgramaDesdeDNC(int ID_PROGRAMA, string XML_DATOS_DNC, string CL_USUARIO, string NB_PROGRAMA)
        {
            NecesidadesCapacitacionOperaciones op = new NecesidadesCapacitacionOperaciones();

            return(UtilRespuesta.EnvioRespuesta(op.ActualizaProgramaDesdeDNC(ID_PROGRAMA, XML_DATOS_DNC, CL_USUARIO, NB_PROGRAMA)));
        }
        public E_RESULTADO InsertaProgramaDesdeDNC(string xmldatosDnc, string CL_USUARIO, string NB_PROGRAMA)
        {
            NecesidadesCapacitacionOperaciones ope = new NecesidadesCapacitacionOperaciones();

            return(UtilRespuesta.EnvioRespuesta(ope.InsertaProgramaDesdeDNC(xmldatosDnc, CL_USUARIO, NB_PROGRAMA)));
        }
        public DataTable ObtieneNecesidadesCapacitacionPivot(int?pIdPeriodo, int?pIdDepartamento, string pDsPrioridades, ref List <E_NECESIDADES_CAPACITACION> vLstDnc, int?pIdRol)
        {
            NecesidadesCapacitacionOperaciones oNecesidades = new NecesidadesCapacitacionOperaciones();
            List <SPE_OBTIENE_NECESIDADES_CAPACITACION_Result> vListaDnc = new List <SPE_OBTIENE_NECESIDADES_CAPACITACION_Result>();
            //string vDivsCeldasChk = "<div class=\"divCheckbox\"> <input type=\"checkbox\" runat=\"server\" class=\"{4}\" id=\"{2}\" value=\"{2}\" {3}> </div>  <div class=\"divPorcentaje\">{0:N2}</div><div class=\"{1}\">&nbsp;</div>";
            string vNbPorcentaje  = "";
            string vDivsCeldasChk = "<table class=\"tabladnc\"> " +
                                    "<tr> " +
                                    "<td class=\"porcentaje\"> " +
                                    "<div class=\"divPorcentaje\">{0}</div> " +
                                    "</td> " +
                                    "<td class=\"color\"> " +
                                    "<div class=\"{1}\">&nbsp;</div> " +
                                    "</td> " +
                                    "<td class=\"check\"> " +
                                    "<div class=\"divCheckbox\"> <input type=\"checkbox\" runat=\"server\" class=\"{4}\" id=\"{2}\" value=\"{2}\" {3}> </div> " +
                                    "</td> </tr> </table>";
            //string vDivsCeldasNa = "<div class=\"divPorcentaje\">{0:N2}</div><div class=\"{1}\">&nbsp;</div>";

            string vDivCeldaCompetencia = "<div style=\" width:85%;float:left;\">{0}</div><divstyle=\"float:right; width:15%;\"> <input type=\"checkbox\" class=\"competencia\" runat=\"server\" id=\"{1}\" value=\"{1}\" onchange=\"SeleccionaCompetencia(this);\"> </div>";

            string vClaseDivs  = "";
            string vClaveChk   = "";
            string vClaseInput = "";
            string vFgInput    = "";
            //<telerik:RadCheckBox runat="server" ID="chkComEmp" Text="" Checked="true" AutoPostBack="false"></telerik:RadCheckBox>
            //
            DataTable vDtPivot = new DataTable();

            vListaDnc = oNecesidades.obtenerNecesidadesCapacitacion(pIdPeriodo, pIdDepartamento, pDsPrioridades, pIdRol);

            vLstDnc = vListaDnc.Select(t => new E_NECESIDADES_CAPACITACION
            {
                ID_PERIODO                   = t.ID_PERIODO,
                CL_TIPO_COMPETENCIA          = t.CL_TIPO_COMPETENCIA,
                NB_TIPO_COMPETENCIA          = t.NB_TIPO_COMPETENCIA,
                CL_CLASIFICACION             = t.CL_CLASIFICACION,
                NB_CLASIFICACION_COMPETENCIA = t.NB_CLASIFICACION_COMPETENCIA,
                DS_COMPETENCIA               = t.DS_COMPETENCIA,
                CL_COLOR        = t.CL_COLOR,
                ID_COMPETENCIA  = t.ID_COMPETENCIA,
                NB_COMPETENCIA  = t.NB_COMPETENCIA,
                ID_EMPLEADO     = t.ID_EMPLEADO,
                CL_EVALUADO     = t.CL_EVALUADO,
                NB_EVALUADO     = t.NB_EVALUADO,
                ID_PUESTO       = t.ID_PUESTO,
                CL_PUESTO       = t.CL_PUESTO,
                NB_PUESTO       = t.NB_PUESTO,
                ID_DEPARTAMENTO = t.ID_DEPARTAMENTO,
                CL_DEPARTAMENTO = t.CL_DEPARTAMENTO,
                NB_DEPARTAMENTO = t.NB_DEPARTAMENTO,
                PR_RESULTADO    = t.PR_RESULTADO,
                NB_PRIORIDAD    = t.NB_PRIORIDAD
            }).ToList();

            //Creamos las primeras columnas del pivot

            vDtPivot.Columns.Add("ID_COMPETENCIA", typeof(int));
            vDtPivot.Columns.Add("NB_TIPO_COMPETENCIA", typeof(string));
            vDtPivot.Columns.Add("NB_CLASIFICACION_COMPETENCIA", typeof(string));
            vDtPivot.Columns.Add("NB_COMPETENCIA", typeof(string));

            //Obtenemos la lista de empleados y generamos las columnas
            var vLstEmpleados    = (from a in vListaDnc select new { a.ID_EMPLEADO }).Distinct().OrderBy(t => t.ID_EMPLEADO);
            var vLstCompetencias = (from a in vListaDnc select new { a.ID_COMPETENCIA, a.NB_TIPO_COMPETENCIA, a.NB_CLASIFICACION_COMPETENCIA, a.CL_TIPO_COMPETENCIA, a.NB_COMPETENCIA, a.CL_COLOR }).Distinct().OrderBy(t => t.ID_COMPETENCIA);

            foreach (var item in vLstEmpleados)
            {
                vDtPivot.Columns.Add(item.ID_EMPLEADO.ToString() + "E");
            }

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

                vDr["ID_COMPETENCIA"]               = vCom.ID_COMPETENCIA;
                vDr["NB_TIPO_COMPETENCIA"]          = vCom.NB_TIPO_COMPETENCIA;
                vDr["NB_CLASIFICACION_COMPETENCIA"] = vCom.NB_CLASIFICACION_COMPETENCIA;
                vDr["NB_COMPETENCIA"]               = string.Format(vDivCeldaCompetencia, vCom.NB_COMPETENCIA, vCom.ID_COMPETENCIA.ToString());

                foreach (var vEmp in vLstEmpleados)
                {
                    var vResultado = vListaDnc.Where(t => t.ID_COMPETENCIA == vCom.ID_COMPETENCIA & t.ID_EMPLEADO == vEmp.ID_EMPLEADO).FirstOrDefault();
                    vClaveChk = "C" + vCom.ID_COMPETENCIA.ToString() + "E" + vEmp.ID_EMPLEADO.ToString();

                    if (vResultado != null)
                    {
                        switch (vResultado.NB_PRIORIDAD)
                        {
                        case "Alta":
                            vClaseDivs  = "divNecesario";
                            vClaseInput = "Datos";
                            vFgInput    = "checked";
                            break;

                        case "Intermedia":
                            vClaseDivs  = "divIntermedio";
                            vClaseInput = "Datos";
                            vFgInput    = "checked";
                            break;

                        case "No Necesaria":
                            vClaseDivs  = "divBajo";
                            vClaseInput = "NoNecesaria";
                            vFgInput    = "";
                            break;
                        }


                        vNbPorcentaje = string.Format("{0:N2}", vResultado.PR_RESULTADO) + "%";
                        vDr[vEmp.ID_EMPLEADO.ToString() + "E"] = String.Format(vDivsCeldasChk, vNbPorcentaje, vClaseDivs, vClaveChk, vFgInput, vClaseInput);
                    }
                    else
                    {
                        vClaseInput = "NA";
                        vDr[vEmp.ID_EMPLEADO.ToString() + "E"] = String.Format(vDivsCeldasChk, "N/A", "divNa", vClaveChk, "", vClaseInput);
                    }
                }

                vDtPivot.Rows.Add(vDr);
            }

            return(vDtPivot);
        }
        public List <SPE_OBTIENE_NECESIDADES_CAPACITACION_Result> obtenerNecesidadesCapacitacion(int?pIdPeriodo, int?pIdDepartamento, string pDsPrioridades, int?pIdRol)
        {
            NecesidadesCapacitacionOperaciones oNecesidades = new NecesidadesCapacitacionOperaciones();

            return(oNecesidades.obtenerNecesidadesCapacitacion(pIdPeriodo, pIdDepartamento, pDsPrioridades, pIdRol));
        }