public void SaveResultadoRubrica(BEResultadoRubrica ResultadoRubrica)
        {
            ePortafolioDBDataContext ePortafolioDAO = new ePortafolioDBDataContext();

            var OldResultadoRubrica = ePortafolioDAO.ResultadosRubricaGrupos.SingleOrDefault(r => r.GrupoId == ResultadoRubrica.GrupoId && r.RubricaId == ResultadoRubrica.RubricaId);

            if (OldResultadoRubrica == null)
            {
                var ResultadosRubricaGrupo = new ResultadosRubricaGrupo();

                ResultadosRubricaGrupo.CriterioId = ResultadoRubrica.CriterioId;
                ResultadosRubricaGrupo.GrupoId = ResultadoRubrica.GrupoId;
                ResultadosRubricaGrupo.RubricaId = ResultadoRubrica.RubricaId;

                ePortafolioDAO.ResultadosRubricaGrupos.InsertOnSubmit(ResultadosRubricaGrupo);
            }
            else
            {
                OldResultadoRubrica.CriterioId = ResultadoRubrica.CriterioId;
            }

            ePortafolioDAO.SubmitChanges();
        }
        public ActionResult GradeAssignment(int TrabajoId, int GrupoId, String Origen, bool EsEditable, FormCollection formValues)
        {
            if (EsEditable)
            {
                Decimal Nota = 0;
                String NotaGrupo = "NE";

                List<BERubrica> Rubricas = RepositoryFactory.GetRubricaRepository().GetRubricasTrabajo(TrabajoId);

                foreach (String Key in formValues)
                {
                    BEResultadoRubrica ResultadoRubrica = new BEResultadoRubrica();
                    ResultadoRubrica.CriterioId = Convert.ToInt32(formValues[Key]);
                    ResultadoRubrica.GrupoId = GrupoId;
                    ResultadoRubrica.RubricaId = Convert.ToInt32(Key);

                    List<BECriterio> Criterios = RepositoryFactory.GetCriterioRubricaRepository().GetCiteriosRubrica(ResultadoRubrica.RubricaId);
                    RepositoryFactory.GetResultadoRubricaRepository().SaveResultadoRubrica(ResultadoRubrica);

                    Nota += Criterios.SingleOrDefault(c => c.CriterioId == ResultadoRubrica.CriterioId).Valor;
                }

                if (formValues.Count == Rubricas.Count()) //Existe una calificacion para cara critero de la rubrica, es posible dar una nota final
                    NotaGrupo = Nota.ToString("F2");
                else if (formValues.Count != 0)
                    NotaGrupo = "EI";

                RepositoryFactory.GetGrupoRepository().SetNotaGrupo(GrupoId, NotaGrupo);
            }

            switch (Origen)
            {
                case "Details": return RedirectToAction("Details", new { TrabajoId = TrabajoId });
                case "Index": return RedirectToAction("Index");
            }

            return null;
        }