public async Task<ActionResult> ProgramarInspecciones(List<string> programar) { //FECHA DE MAÑANA DateTime uFecha = DateTime.Today.AddDays(1); if(db.InsP_GesEx.Count()>0){ uFecha = db.InsP_GesEx.OrderByDescending(m => m.end).Take(1).ToArray()[0].end; uFecha = new FunctionDate().ProxDiaLaborable(uFecha); } //Cantidad de Inspecciones por Días int cantiInsDias = 10; List<GestionExpertaProgramar> listaApoyos = await db.GestionExpertaProgramar.Where(m=> programar.Contains(m.linea)).ToListAsync(); List<string> listaIdsApoyos = await db.InsP_GesEx.Where(m=>m.inspeccionado == false).Select(m => m.idapoyo).ToListAsync(); List<InsP_GesEx> listaIntro = new List<InsP_GesEx>(); //Si hay apoyos a inspeccionar if(listaApoyos.Count>0) { //Recorro las Líneas foreach(string e in programar) { int apoyoD = 1; foreach(var a in listaApoyos.Where(m => m.linea == e)) { if (apoyoD > cantiInsDias) { apoyoD = 1; //Aumento la fecha uFecha = new FunctionDate().ProxDiaLaborable(uFecha); } InsP_GesEx nuevo = new InsP_GesEx(); nuevo.idapoyo = a.id; nuevo.start = uFecha; nuevo.end = uFecha; listaIntro.Add(nuevo); apoyoD++; } //Aumento la fecha uFecha = new FunctionDate().ProxDiaLaborable(uFecha); } db.InsP_GesEx.AddRange(listaIntro); await db.SaveChangesAsync(); } return RedirectToAction("Calendario"); }
public async Task<ActionResult> ReProgramar() { List<CalendarioInsP_GesEx> lista = await db.CalendarioInsP_GesEx.ToListAsync(); List<InsP_GesEx> listaIntro = db.InsP_GesEx.Where(m => m.inspeccionado == false).ToList(); List<string> ids = lista.Select(m => m.linea).Distinct().ToList(); List<InsP_GesEx> listaReIntro = new List<InsP_GesEx>(); //FECHA DEL PRÓXIMO DÍA LABORABLE DateTime uFecha = new FunctionDate().ProxDiaLaborable(DateTime.Now); //Cantidad de Inspecciones por Días int cantiInsDias = 10; if(listaIntro.Count>0) { //Recorro las Líneas foreach (string e in ids) { int apoyoD = 1; foreach (var a in lista.Where(m => m.linea == e)) { if (apoyoD > cantiInsDias) { apoyoD = 1; //Aumento la fecha uFecha = new FunctionDate().ProxDiaLaborable(uFecha); } InsP_GesEx nuevo = new InsP_GesEx(); nuevo.idapoyo = a.id; nuevo.start = uFecha; nuevo.end = uFecha; listaReIntro.Add(nuevo); apoyoD++; } //Aumento la fecha uFecha = new FunctionDate().ProxDiaLaborable(uFecha); } db.InsP_GesEx.RemoveRange(listaIntro); await db.SaveChangesAsync(); db.InsP_GesEx.AddRange(listaReIntro); await db.SaveChangesAsync(); } return RedirectToAction("Calendario"); }