public ActionResult Edit(Actividad Actividad)
        {
            if(ModelState.IsValid)
            {
                IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio();
                String resultado = myRepoActividad.Update(Actividad);

                if (resultado.Equals("true"))
                    return RedirectToAction("Index");

            }
             return View(Actividad);
        }
        public ActionResult Save(Evento changedEvent, FormCollection actionValues)
        {
            String actionType = actionValues["!nativeeditor_status"];
            Int64 sourceId = Int64.Parse(actionValues["id"]);
            Int64 targetId = sourceId;

            int miCedula = (Int32)Session["cedula"];

            IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio();
            try
            {
                switch (actionType)
                {
                    case "inserted":
                        {
                            var actividad = new Actividad
                            {
                                Nombre = changedEvent.text,
                                HoraInicio = changedEvent.start_date,
                                HoraFin = changedEvent.end_date,
                                Cedula = miCedula,
                                Tipo = changedEvent.tipo,
                                Periodo = Helper.CalcularPeriodoActual()
                            };
                            repositorioActividad.Save(actividad);
                        }
                        break;
                    case "deleted":
                        {
                            int id = changedEvent.id;
                            var actividad = repositorioActividad.GetById(id);
                            if (actividad != null)
                            {
                                repositorioActividad.Delete(actividad);
                            }
                        }
                        break;
                    default: // "updated"
                        {
                            int id = changedEvent.id;
                            var actividad = repositorioActividad.GetById(id);
                            if (actividad != null)
                            {
                                actividad.HoraInicio = changedEvent.start_date;
                                actividad.HoraFin = changedEvent.end_date;
                                actividad.Nombre = changedEvent.text;
                                repositorioActividad.Update(actividad);
                            }
                        }
                        break;
                }
            }
            catch
            {
                actionType = "error";
            }

            return View(new ActividadActionResponseModel(actionType, sourceId, targetId));
        }
        protected void ActualizarAlumno(int miCedula)
        {
            var fechaActual = DateTime.Now;
            var semestre2 = new DateTime(fechaActual.Year, 03, 01);
            var verano1 = new DateTime(fechaActual.Year, 07, 01);
            var verano2 = new DateTime(fechaActual.Year, 10, 01);
            string periodoActual;
            if (fechaActual < semestre2)
            {
                periodoActual = (fechaActual.Year - 1) + "22";
            }
            else if (fechaActual > verano1 && fechaActual < verano2)
            {
                periodoActual = (fechaActual.Year - 1) + "23";
            }
            else
            {
                periodoActual = (fechaActual.Year - 1) + "21";
            }

            IRepositorio<Materium> repositorioMateria = new MateriumRepositorio();
            var listMaterias = repositorioMateria.GetAll();

            IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio();
            var listActividades = new List<Actividad>();

            IRepositorio<ClaseEvaluacion> repositorioClaseE = new HorarioClaseRepositorio();
            var listClaseEvaluacion = repositorioClaseE.GetAll().Where(cE => cE.Cedula == miCedula).ToList();

            foreach (var claseEvaluacion in listClaseEvaluacion)
            {
                var actividad = repositorioActividad.GetById(claseEvaluacion.IdActividad);
                if (actividad.Tipo.CompareTo("Clase") == 0 &&
                    actividad.Periodo.CompareTo((periodoActual)) == 0 &&
                    actividad.HoraInicio >= fechaActual)
                {
                    listActividades.Add(actividad);
                }
            }

            foreach (var actividad in listActividades)
            {
                var materia = (from mat in listMaterias
                               where mat.IdMateria == actividad.IdMateria
                               select mat).First();
                actividad.Materia = materia;
            }

            IRepositorio<Profesor> repositorioProfesor = new ProfesorRepositorio();

            IRepositorio<SlMaterium> repositorioSlMateria = new SlMateriumRepositorio();
            var listSlMaterias = repositorioSlMateria.GetAll();

            IRepositorio<SlSeccion> repositorioSlSeccion = new SlSeccionRepositorio();
            var listSlSecciones = repositorioSlSeccion.GetAll();

            IRepositorio<SlClase> repositorioSlClase = new SlClaseRepositorio();
            var listSlClase = repositorioSlClase.GetAll();

            IRepositorio<SlProfesor> repositorioSlProfesor = new SlProfesorRepositorio();
            var listSlProfesor = repositorioSlProfesor.GetAll();
            foreach (var actividad in listActividades)
            {
                var flag = false;
                var slMateria = (from mat in listSlMaterias
                                 where mat.Nombre.CompareTo(actividad.Materia.Nombre) == 0
                                 select mat).First();
                if (slMateria.HorasLab != actividad.Materia.HorasLab)
                {
                    actividad.Materia.HorasLab = slMateria.HorasLab;
                    flag = true;
                    Trace.Write("Se encontro un cambio en las horas de laboratorio de la materia " +
                                actividad.Materia.Nombre);
                }
                if (slMateria.HorasPractica != actividad.Materia.HorasPractica)
                {
                    actividad.Materia.HorasPractica = slMateria.HorasPractica;
                    flag = true;
                    Trace.Write("Se encontro un cambio en las horas de practica de la materia " +
                                actividad.Materia.Nombre);
                }
                if (slMateria.HorasTeoria != actividad.Materia.HorasTeoria)
                {
                    actividad.Materia.HorasTeoria = slMateria.HorasTeoria;
                    flag = true;
                    Trace.Write("Se encontro un cambio en las horas de teoria de la materia " +
                                actividad.Materia.Nombre);
                }
                if (slMateria.Creditos != actividad.Materia.Creditos)
                {
                    actividad.Materia.Creditos = slMateria.Creditos;
                    flag = true;
                    Trace.Write("Se encontro un cambio en los creditos de la materia " + actividad.Materia.Nombre);
                }
                if (actividad.Materia.Descripcion != null)
                {
                    if (slMateria.Descripcion.CompareTo(actividad.Materia.Descripcion) != 0)
                    {
                        actividad.Materia.Descripcion = slMateria.Descripcion;
                        flag = true;
                        Trace.Write("Se encontro un cambio en la descripcion de la materia " +
                                    actividad.Materia.Nombre);
                    }
                }
                if (flag)
                {
                    Trace.WriteIf(repositorioMateria.Update(actividad.Materia).CompareTo("true") == 0,
                                  "Se actualizo la materia " + actividad.Materia.Nombre);
                }

                flag = false;
                var slSeccion = (from sec in listSlSecciones
                                 where sec.IdMateria == slMateria.IdMateria
                                 select sec).First();

                if (slSeccion.Seccion.CompareTo(actividad.Seccion) != 0)
                {
                    actividad.Seccion = slSeccion.Seccion;
                    flag = true;
                    Trace.Write("Se encontro un cambio de seccion en la materia " + actividad.Materia.Nombre);
                }
                if (flag)
                {
                    Trace.WriteIf(repositorioActividad.Update(actividad).CompareTo("true") == 0,
                                  "Se actualizo la actividad de la materia " + actividad.Materia.Nombre);
                }

                //var listMisSlClase = (from clase in listSlClase
                //               where clase.IdSeccion == slSeccion.IdSeccion
                //               select clase).ToList();
                //foreach (var slClase in listMisSlClase)
                //{
                //    var actividades = listActividades.Where(a => a.IdMateria == actividad.IdMateria &&
                //                                                 a.Seccion == slSeccion.Seccion).ToList();
                //    foreach (var act in actividades)
                //    {
                //        flag = false;
                //        if (slClase.HoraInicio.Hour.CompareTo(act.HoraInicio.Hour) != 0)
                //        {
                //            act.HoraInicio = new DateTime(act.HoraInicio.Year, act.HoraInicio.Month, act.HoraInicio.Day,
                //                                          slClase.HoraInicio.Hour, act.HoraInicio.Minute, 0);
                //            flag = true;
                //            Trace.Write("Se encontro un cambio en la hora inicio de la materia " +
                //                        actividad.Materia.Nombre);
                //        }
                //        if (slClase.HoraInicio.Minute.CompareTo(act.HoraInicio.Minute) != 0)
                //        {
                //            act.HoraInicio = new DateTime(act.HoraInicio.Year, act.HoraInicio.Month, act.HoraInicio.Day,
                //                                          act.HoraInicio.Minute, slClase.HoraInicio.Minute , 0);
                //            flag = true;
                //            Trace.Write("Se encontro un cambio en la hora inicio de la materia " +
                //                        actividad.Materia.Nombre);
                //        }
                //        if (slClase.HoraFin.Hour.CompareTo(act.HoraFin.Hour) != 0)
                //        {
                //            act.HoraFin = new DateTime(act.HoraFin.Year, act.HoraFin.Month, act.HoraFin.Day,
                //                                       slClase.HoraFin.Hour, act.HoraFin.Minute, 0);
                //            flag = true;
                //            Trace.Write("Se encontro un cambio en la hora inicio de la materia " +
                //                        actividad.Materia.Nombre);
                //        }
                //        if (slClase.HoraFin.Minute.CompareTo(act.HoraFin.Minute) != 0)
                //        {
                //            act.HoraFin = new DateTime(act.HoraFin.Year, act.HoraFin.Month, act.HoraFin.Day,
                //                                       act.HoraFin.Hour, slClase.HoraFin.Minute, 0);
                //            flag = true;
                //            Trace.Write("Se encontro un cambio en la hora inicio de la materia " +
                //                        actividad.Materia.Nombre);
                //        }
                //        if (flag)
                //        {
                //            Trace.WriteIf(repositorioActividad.Update(act).CompareTo("true") == 0,
                //                          "Se actualizo la actividad de la materia " + actividad.Materia.Nombre);
                //        }
                //    }
                //}

                flag = false;
                var slProfesor = (from p in listSlProfesor
                                  where p.Cedula == slSeccion.Profesor
                                  select p).First();
                var profesor = repositorioProfesor.GetAll().Where(p => p.Cedula == actividad.Profesor).First();
                if (slProfesor.Cedula.CompareTo(profesor.Cedula) != 0)
                {
                    profesor.Cedula = slProfesor.Cedula;
                    flag = true;
                    Trace.Write("Se encontro un cambio del profesor de la materia " + actividad.Materia.Nombre);
                }
                if (slProfesor.Nombre.CompareTo(profesor.Nombre) != 0)
                {
                    profesor.Nombre = slProfesor.Nombre;
                    flag = true;
                    Trace.Write("Se encontro un cambio en el nombre del profesor de la materia " +
                                actividad.Materia.Nombre);
                }
                if (slProfesor.Apellido.CompareTo(profesor.Apellido) != 0)
                {
                    profesor.Apellido = slProfesor.Apellido;
                    flag = true;
                    Trace.Write("Se encontro un cambio en el apellido del profesor de la materia " +
                                actividad.Materia.Nombre);
                }
                if (flag)
                {
                    Trace.WriteIf(repositorioProfesor.Update(profesor).CompareTo("true") == 0,
                                  "Se actualizo el profesor " + profesor.Nombre + " " + profesor.Apellido);
                }
            }
        }
        public ActionResult Edit(Actividad Actividad)
        {
            if (ModelState.IsValid)
            {
                IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio();
                String resultado = myRepoActividad.Update(Actividad);

                if (resultado.Equals("true"))
                    return RedirectToAction("Index");

            }

            var miCedula = (Int32)Session["cedula"];

            IRepositorio<ClaseEvaluacion> repositorioClaseEvaluacion = new HorarioClaseRepositorio();

            IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio();

            var listCronograma = repositorioClaseEvaluacion.GetAll().Where(alum => alum.Cedula == miCedula);

            var listActividades = repositorioActividad.GetAll().Where(a => a.Periodo.CompareTo(_periodoActual) == 0);

            var misMaterias = (from d in listCronograma
                               from c in listActividades
                               where c.Tipo.CompareTo("Clase") == 0 &&
                                     d.IdActividad == c.IdActividad
                               select c.IdMateria).Distinct().ToList();

            IRepositorio<Materium> repositorioMateria = new MateriumRepositorio();
            IList<String> nombresMaterias =
                misMaterias.Select(mat => repositorioMateria.GetById(mat).Nombre).ToList();

            ViewData["Materia.Nombre"] = new SelectList(nombresMaterias);

            return View(Actividad);
        }