Example #1
0
 public List<int> getDiasEvento(Evento evento)
 {
     List<int> dias = new List<int>();
     if (evento.isLunes)
     {
         dias.Add(1);
     }
     if (evento.isMartes)
     {
         dias.Add(2);
     }
     if (evento.isMiercoles)
     {
         dias.Add(3);
     }
     if (evento.isJueves)
     {
         dias.Add(4);
     }
     if (evento.isViernes)
     {
         dias.Add(5);
     }
     if (evento.isSabado)
     {
         dias.Add(6);
     }
     if (evento.isDomingo)
     {
         dias.Add(0);
     }
     return dias;
 }
Example #2
0
        public ActionResult Edit(Evento evento)
        {
            String value = Request.Form["opcionCheckbox"];
            string dia = Request.Form["diaCheckbox"];
            int isCheked = Convert.ToInt32(value);
            List<Evento> eventosCal = new List<Evento>();

            DateTime eventoFechaAnterior = db.Eventoes.AsNoTracking().Where(evt => evt.ID == evento.ID).SingleOrDefault().fechaIncicio;

            if (ModelState.IsValid)
            {
                List<int> diasEvt = getDiasEvento(evento);
                if (isCheked == 1)
                {
                    //Si cambia de fecha
                    Calendario calendario = db.Calendarios.AsNoTracking().Where(i => i.ID == evento.CalendarioID).SingleOrDefault();
                    eventosCal.AddRange(calendario.eventos.Where(ev => ev.ID == evento.ID).ToList());
                    eventosCal.AddRange(calendario.eventos.Where(ev => ev.ID != evento.ID).Where(f => f.fechaIncicio >= eventoFechaAnterior).OrderBy(f => f.fechaIncicio).ToList());

                    //Prueba Temporal de  Algoritmo de desplazamiento
                    List<DateTime> eventosDeplazados = desplazarEventos(eventosCal, diasEvt, evento.fechaIncicio, 0);

                    int evtIndex = 0;
                    foreach (var evt in eventosCal)
                    {
                        evt.fechaIncicio = Convert.ToDateTime(eventosDeplazados[evtIndex]);
                        evt.fechaFin = evt.fechaIncicio;

                        foreach (var d in diasEvt)
                        {
                             switch(d){
                                 case 0:
                                     evt.isDomingo = true;
                                     break;
                                 case 1:
                                     evt.isLunes = true;
                                     break;
                                 case 2:
                                     evt.isMartes = true;
                                     break;
                                 case 3:
                                     evt.isMiercoles = true;
                                     break;
                                 case 4:
                                     evt.isJueves = true;
                                     break;
                                 case 5:
                                     evt.isViernes = true;
                                     break;
                                 case 6:
                                     evt.isSabado = true;
                                     break;
                             }
                        }

                        db.Entry(evt).State = EntityState.Modified;
                        evtIndex++;
                    }
                    db.SaveChanges();

                    // --- Actualiza datos del Calendario ---
                    DateTime dateMin = new DateTime();
                    DateTime dateMax = new DateTime();

                    dateMin = db.Eventoes.Where(c => c.CalendarioID == evento.CalendarioID).Min(d => d.fechaIncicio);
                    dateMax = db.Eventoes.Where(c => c.CalendarioID == evento.CalendarioID).Max(d => d.fechaIncicio);
                    calendario.fechaInicio = dateMin;
                    calendario.fechaFin = dateMax;
                    db.Entry(calendario).State = EntityState.Modified;
                    db.SaveChanges();
                    // ----- End Actualizar Datos del Calendario ---

                    //Para actualizar la fecha de fin del diplomado
                    Diplomado diplomado = db.Diplomadoes.Find(calendario.Grupo.DiplomadoID);
                    db.Diplomadoes.Attach(diplomado);
                    var entry = db.Entry(diplomado);
                    bool fechaDipomadoChanged = false;
                    if (diplomado.fechaFin < calendario.fechaFin)
                    {
                        diplomado.fechaFin = calendario.fechaFin;
                        entry.Property(e => e.fechaFin).IsModified = true;
                        fechaDipomadoChanged = true;
                    }
                    if (diplomado.fechaInicio > calendario.fechaInicio)
                    {
                        diplomado.fechaInicio = calendario.fechaInicio;
                        entry.Property(e => e.fechaInicio).IsModified = true;
                        fechaDipomadoChanged = true;
                    }
                    if (fechaDipomadoChanged)
                    {
                        db.SaveChanges();
                    }
                    //End Actualiza fechas del diplomado
                }
                else {
                    evento.fechaFin = evento.fechaIncicio;
                    db.Entry(evento).State = EntityState.Modified;
                    db.SaveChanges();
                }
                return RedirectToAction("Details", "Calendario", new { id = evento.CalendarioID });
            }
            ViewBag.CalendarioID = new SelectList(db.Calendarios, "ID", "nombre", evento.CalendarioID);
            ViewBag.TallerID = new SelectList(db.Tallers, "ID", "nombre", evento.TallerID);
            return View(evento);
        }
Example #3
0
        public ActionResult EditarTaller(Evento evento)
        {
            if (ModelState.IsValid)
            {
                evento.fechaFin = evento.fechaIncicio;
                db.Entry(evento).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Details", "Calendario", new { id = evento.CalendarioID });
            }
            ViewBag.CalendarioID = new SelectList(db.Calendarios, "ID", "nombre", evento.CalendarioID);
            ViewBag.TallerID = new SelectList(db.Tallers, "ID", "nombre", evento.TallerID);
            return View(evento);

        }
Example #4
0
        public async Task <ActionResult> Create(Evento evento)
        {
            List<Evento> eventosCal = new List<Evento>();
            if (ModelState.IsValid)
            {

                DateTime eventoFechaAnterior = evento.fechaIncicio;
                evento.fechaFin = evento.fechaIncicio;
                db.Eventoes.Add(evento);
                await db.SaveChangesAsync();

                db.Entry(evento).State = EntityState.Detached;


                String value = Request.Form["opcionCheckbox"];
                int isCheked = Convert.ToInt32(value);

                List<int> diasEvt = getDiasEvento(evento);
                if (isCheked == 1)
                {
                    //Si cambia de fecha
                    Calendario calendario = await db.Calendarios.AsNoTracking().Where(i => i.ID == evento.CalendarioID).SingleOrDefaultAsync();
                    eventosCal.AddRange(calendario.eventos.Where(ev => ev.ID != evento.ID).Where(f => f.fechaIncicio >= eventoFechaAnterior).OrderBy(f => f.fechaIncicio).ToList());

                    //Prueba Temporal de  Algoritmo de desplazamiento
                    List<DateTime> eventosDeplazados = desplazarEventos(eventosCal, diasEvt, evento.fechaIncicio, 1);

                    int evtIndex = 0;
                    foreach (var evt in eventosCal)
                    {
                        evt.fechaIncicio = Convert.ToDateTime(eventosDeplazados[evtIndex]);
                        evt.fechaFin = evt.fechaIncicio;
                        db.Entry(evt).State = EntityState.Modified;
                        foreach (var d in diasEvt)
                        {
                            switch (d)
                            {
                                case 0:
                                    evt.isDomingo = true;
                                    break;
                                case 1:
                                    evt.isLunes = true;
                                    break;
                                case 2:
                                    evt.isMartes = true;
                                    break;
                                case 3:
                                    evt.isMiercoles = true;
                                    break;
                                case 4:
                                    evt.isJueves = true;
                                    break;
                                case 5:
                                    evt.isViernes = true;
                                    break;
                                case 6:
                                    evt.isSabado = true;
                                    break;
                            }
                        }
                        evtIndex++;
                    }
                    db.SaveChanges();

                    // --- Actualiza datos del Calendario ---
                    DateTime dateMin = new DateTime();
                    DateTime dateMax = new DateTime();

                    dateMin = await db.Eventoes.AsNoTracking().Where(c => c.CalendarioID == evento.CalendarioID).MinAsync(d => d.fechaIncicio);
                    dateMax = await db.Eventoes.AsNoTracking().Where(c => c.CalendarioID == evento.CalendarioID).MaxAsync(d => d.fechaIncicio);
                    calendario.fechaInicio = dateMin;
                    calendario.fechaFin = dateMax;
                    try { 
                        db.Entry(calendario).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                    catch(Exception e){
                        var msj = e.Message;
                    }
                    // ----- End Actualizar Datos del Calendario ---
                }

                return RedirectToAction("Details", "Calendario", new { id = evento.CalendarioID });
            }

            ViewBag.CalendarioID = new SelectList(db.Calendarios.Select(x => new { x.ID, x.nombre}), "ID", "nombre", evento.CalendarioID);
            ViewBag.TallerID = new SelectList(db.Tallers.Select(x => new { x.ID, x.nombre}), "ID", "nombre", evento.TallerID);
            return View(evento);
        }
Example #5
0
        public async Task <ActionResult> Create(Calendario calendario)
        {


            List<Evento> eventos = new List<Evento>();
            List<Taller> talleres = new List<Taller>();
            Grupo grupo = db.Grupoes.Find(calendario.GrupoID);
            Diplomado diplomado = db.Diplomadoes.Find(grupo.DiplomadoID);


            List<Modulo> modulos = await db.Moduloes.Where(c => c.DiplomadoID == grupo.DiplomadoID).ToListAsync();
            foreach (var m in modulos)
            {
                talleres.AddRange(m.talleres);
            }
            string dia = Request.Form["diaCheckbox"];

            int eventOrder = 0;
            // int weeks = Math.Abs((Int32) (calendario.fechaInicio - calendario.fechaFin).TotalDays / 7); // so es con fecha-inicio -- fecha fin

            int diacount = 1;
            if (dia != null && dia != "")
            {
                diacount = dia.Split(',').Count();
            }
            int weeks = (talleres.Count() / (diacount)) - 1;
            float weeksDays = ((float)(talleres.Count()) / (float)diacount) - 1;
            int daysLeft = (int)((decimal)((weeksDays) % 1) * 10);
            if (daysLeft > 0)
            {
                weeks++;
            }
            if (ModelState.IsValid)
            {
                calendario.fechaFin = calendario.fechaInicio.AddDays(weeks * 7);
                db.Calendarios.Add(calendario);
                db.SaveChanges();
                int k = 0;
                for (k = 0; k <= weeks; k++)
                {
                    if (dia != null && dia != "")
                    {
                        String[] dias = dia.Split(',');
                        foreach (var d in dias)
                        {
                            Evento evento = new Evento();
                            int diaDiferencia = Math.Abs(((int)calendario.fechaInicio.DayOfWeek) - Convert.ToInt32(d));
                            int diaNumber = Convert.ToInt32(d);

                            evento.fechaIncicio = calendario.fechaInicio.AddDays(k * 7 + diaDiferencia);
                            evento.fechaFin = calendario.fechaInicio.AddDays(k * 7 + diaDiferencia);
                            evento.CalendarioID = calendario.ID;
                            evento.orden = eventOrder;
                            eventOrder++;
                            //Agrega automaticamente los talleres a los eventos
                            talleres = talleres.OrderBy(o => o.orden).ToList();
                            try
                            {
                                Taller taller = talleres.Where(o => o.orden == (evento.orden + 1)).SingleOrDefault();
                                int tallerID = taller.ID;
                                if (tallerID != 0)
                                {
                                    evento.TallerID = tallerID;
                                    if (taller.FacilitadorID != 0)
                                    {
                                        evento.FacilitadorID = taller.FacilitadorID;
                                    }
                                    foreach (var diasEvento in dias)
                                    {
                                        int diaEvt = Convert.ToInt32(diasEvento);
                                        switch (diaEvt)
                                        {
                                            case 0:
                                                evento.isDomingo = true;
                                                break;
                                            case 1:
                                                evento.isLunes = true;
                                                break;
                                            case 2:
                                                evento.isMartes = true;
                                                break;
                                            case 3:
                                                evento.isMiercoles = true;
                                                break;
                                            case 4:
                                                evento.isJueves = true;
                                                break;
                                            case 5:
                                                evento.isViernes = true;
                                                break;
                                            case 6:
                                                evento.isSabado = true;
                                                break;
                                        }
                                    }
                                    eventos.Add(evento);
                                }
                            }
                            catch (Exception e)
                            {
                                ModelState.AddModelError("", e.Message);
                            }

                        }
                    }

                }
                db.Eventoes.AddRange(eventos);
                await db.SaveChangesAsync();

                //Para actualizar la fecha de fin del diplomado
                db.Diplomadoes.Attach(diplomado);
                var entry = db.Entry(diplomado);
                bool fechaDipomadoChanged = false;
                if (diplomado.fechaFin < calendario.fechaFin)
                {
                    diplomado.fechaFin = calendario.fechaFin;
                    entry.Property(e => e.fechaFin).IsModified = true;
                    fechaDipomadoChanged = true;
                }
                if (diplomado.fechaInicio > calendario.fechaInicio)
                {
                    diplomado.fechaInicio = calendario.fechaInicio;
                    entry.Property(e => e.fechaInicio).IsModified = true;
                    fechaDipomadoChanged = true;
                }
                if (fechaDipomadoChanged)
                {
                    db.SaveChanges();
                }
                //End Actualiza fechas del diplomado
                return RedirectToAction("Details", "Grupo", new { id = calendario.GrupoID });
            }

            ViewBag.GrupoID = new SelectList(db.Grupoes, "ID", "nombre", calendario.GrupoID);
            return View(calendario);
        }