// PUT api/R_Evaluacion/5
        public async Task<IHttpActionResult> PutR_Evaluacion(long id, R_Evaluacion r_evaluacion)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != r_evaluacion.id)
            {
                return BadRequest();
            }

            db.Entry(r_evaluacion).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!R_EvaluacionExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
        public async Task<IHttpActionResult> PostR_Evaluacion(R_Evaluacion respuesta)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.R_Evaluacion.Add(respuesta);
            await db.SaveChangesAsync();

            return CreatedAtRoute("DefaultApi", new { id = respuesta.id }, respuesta);
        }
        public List<R_EvaluacionDTO> AddResultados(List<R_EvaluacionDTO> resultados_anterior)
        {
            List<R_EvaluacionDTO> resultados = new List<R_EvaluacionDTO>();
            int cuenta = 0; // indico pordonde va el vector
            // ALGORITMO PARA OBTENER RESULTADO POR COMPETENCIA
            try
            {
                // solo una vez
                // obtengo el id de empleado seleccionado con el id empleado
                int id_empleado_seleccionado = (int)resultados_anterior[0].id_empleados_selecionados;
                int id_periodo = (int)resultados_anterior[0].id_periodo;
                empleados_selecionados empleado_seleccionado = db.empleados_selecionados.Where(x => x.id_empleados == id_empleado_seleccionado && x.id_periodos == id_periodo).First();
                for (int j = 0; j < resultados_anterior.Count(); j++)
                {
                    R_Evaluacion r = new R_Evaluacion();
                    

                    if (resultados_anterior[j] != null)
                    {
                        double acumulador = 0;
                        int contador = 0;
                        for (int i = 0; i < resultados_anterior.Count(); i++)
                        {
                            if (resultados_anterior[i] != null)
                            {
                                if (resultados_anterior[j].id_competencia == resultados_anterior[i].id_competencia)
                                {
                                    // sumamos y contamos
                                    contador++;
                                    acumulador += resultados_anterior[i].resultado.Value;
                                    if (i != j)
                                    {
                                        resultados_anterior[i] = null; // lo retiramos para que en la proxima pasada ya no exista
                                    }
                                }

                            }
                        }
                        // pasamos los resultados
                        // de prueba
                        /*
                        resultados.Add(new R_EvaluacionDTO());
                        resultados[cuenta].id = resultados_anterior[j].id;
                        resultados[cuenta].id_competencia = resultados_anterior[j].id_competencia;
                        resultados[cuenta].id_empleados_selecionados = resultados_anterior[j].id_empleados_selecionados;
                        resultados[cuenta].id_evaluado = resultados_anterior[j].id_evaluado;
                        resultados[cuenta].id_periodo = resultados_anterior[j].id_periodo;
                        resultados[cuenta].tipo_evaluacion = resultados_anterior[j].tipo_evaluacion;
                        resultados_anterior[j] = null; // retiramos este valor de la lista
                        resultados[cuenta].resultado = acumulador / contador;
                         */
                        // FIN de prueba

                        
                        r.id_competencia = resultados_anterior[j].id_competencia;
                        r.id_empleados_selecionados = empleado_seleccionado.id;
                        r.id_evaluado = resultados_anterior[j].id_evaluado;
                        r.id_periodo = resultados_anterior[j].id_periodo;
                        r.tipo_evaluacion = resultados_anterior[j].tipo_evaluacion;
                        resultados_anterior[j] = null; // retiramos este valor de la lista
                        r.resultado = acumulador / contador;
                        // debe devolver solo 7

                        // aumento la cuenta para generar lista que notiene utilidad
                        cuenta++;
                        // guardamos
                        db.R_Evaluacion.Add(r);
                        db.SaveChanges();
                    }


                }
            }
            catch (Exception e)
            {

                throw e;
            }
            // debe devolver solo 7
            return resultados;
        }