private static void inicializar_tiempo_recursos(Objetos.Lista_recursos recursos) { for (int i = 0; i < recursos.lista.Count; i++) { if (recursos.lista[i].nombre == "Daniela") { recursos.lista[i].tiempo_disponlible = 6; } else { recursos.lista[i].tiempo_disponlible = 8; } } }
static void Main(string[] args) { Objetos.Lista_recursos recursos = new Objetos.Lista_recursos(); recursos.lista = recursos.obtener_lista_recursos(@"/home/ivan/Documentos/GIT/Planificacion/Datos/Recursos.csv"); string ios_id = "iOS"; string android_id = "Android"; Objetos.Proyecto ios = obtener_proyecto(@"/home/ivan/Documentos/GIT/Planificacion/Datos/iOS.csv", ios_id); Objetos.Proyecto android = obtener_proyecto(@"/home/ivan/Documentos/GIT/Planificacion/Datos/Android.csv", android_id); //Estimar proyecto ios int dia_proyecto = 0; //Ordenar lista de recursos por seniority senior, ssr, jr recursos.lista = recursos.lista.OrderByDescending(o => o.seniority_ios).ToList(); //Ordenar lista de recursos por seniority senior, ssr, jr recursos.lista = recursos.lista.OrderByDescending(o => o.seniority_android).ToList(); /* * Console.WriteLine(ios_id); * while (true) * { * //Crear dia * dia_proyecto += 1; * Console.WriteLine("Dia {0}", dia_proyecto); * inicializar_tiempo_recursos(recursos); * inicializar_tareas(ios.tareas); * //Ver que tareas se pueden hacer hoy * List<Objetos.Tarea> tareas_hoy = new List<Objetos.Tarea>(); * tareas_hoy = obtener_tareas_hoy(ios.tareas); * if (tareas_hoy.Count == 0) * { * break; * } * //Asignar tareas * //Buscar un recurso que tenga hs disponibles * for (int i = 0; i < tareas_hoy.Count; i++) * { * for (int j = 0; j < recursos.lista.Count; j++) * { * if (recursos.lista[j].tiempo_disponlible > 0) * { * tareas_hoy[i].asignar(recursos.lista[j], ios_id, dia_proyecto); * } * if (tareas_hoy[i].fecha_fin != 0 || tareas_hoy[i].asignados.lista.Count > 1) //Verifica que se haya terminado la tarea para pasar a la siguiente * { * break; * } * } * //Reemplazar las tareas que se procesaron hoy * var indice = ios.tareas.IndexOf(ios.tareas.Where(w => w.id == tareas_hoy[i].id).First()); * if (indice != -1) * { * ios.tareas[indice] = tareas_hoy[i]; * } * } * } * * /* Android */ //Estimar proyecto dia_proyecto = 0; Console.WriteLine(android_id); while (true) { //Crear dia dia_proyecto += 1; Console.WriteLine("Dia {0}", dia_proyecto); inicializar_tiempo_recursos(recursos); inicializar_tareas(android.tareas); //Ver que tareas se pueden hacer hoy List <Objetos.Tarea> tareas_hoy = new List <Objetos.Tarea>(); tareas_hoy = obtener_tareas_hoy(android.tareas); if (tareas_hoy.Count == 0) { break; } //Asignar tareas //Buscar un recurso que tenga hs disponibles for (int i = 0; i < tareas_hoy.Count; i++) { for (int j = 0; j < recursos.lista.Count; j++) { if (recursos.lista[j].tiempo_disponlible > 0) { tareas_hoy[i].asignar(recursos.lista[j], android_id, dia_proyecto); } if (tareas_hoy[i].fecha_fin != 0 || tareas_hoy[i].asignados.lista.Count > 1) //Verifica que se haya terminado la tarea para pasar a la siguiente { break; } } //Reemplazar las tareas que se procesaron hoy var indice = android.tareas.IndexOf(android.tareas.Where(w => w.id == tareas_hoy[i].id).First()); if (indice != -1) { android.tareas[indice] = tareas_hoy[i]; } } } /*-------------------------------------------------------- */ /*AMBOS */ //Estimar proyecto dia_proyecto = 0; //Ordenar lista de recursos por seniority senior, ssr, jr recursos.lista = recursos.lista.OrderByDescending(o => o.seniority_android).ThenBy(o => o.seniority_ios).ToList(); Console.WriteLine("/*-------------AMBOS-------------*/"); while (true) { //Crear dia dia_proyecto += 1; Console.WriteLine("Dia {0}", dia_proyecto); inicializar_tiempo_recursos(recursos); inicializar_tareas(android.tareas); //Ver que tareas se pueden hacer hoy List <Objetos.Tarea> tareas_hoy = new List <Objetos.Tarea>(); tareas_hoy = obtener_tareas_hoy(android.tareas); tareas_hoy.AddRange(obtener_tareas_hoy(ios.tareas)); if (tareas_hoy.Count == 0) { break; } //Asignar tareas //Buscar un recurso que tenga hs disponibles for (int i = 0; i < tareas_hoy.Count; i++) { for (int j = 0; j < recursos.lista.Count; j++) { if (recursos.lista[j].tiempo_disponlible > 0) { tareas_hoy[i].asignar(recursos.lista[j], "ambos", dia_proyecto); } if (tareas_hoy[i].fecha_fin != 0 || tareas_hoy[i].asignados.lista.Count > 1) //Verifica que se haya terminado la tarea para pasar a la siguiente { break; } } //Reemplazar las tareas que se procesaron hoy var indice = android.tareas.IndexOf(android.tareas.Where(w => w.id == tareas_hoy[i].id).Where(w => w.duracion == tareas_hoy[i].duracion).Where(w => w.precedencias == tareas_hoy[i].precedencias).FirstOrDefault()); if (indice != -1) { android.tareas[indice] = tareas_hoy[i]; } //Reemplazar las tareas que se procesaron hoy indice = ios.tareas.IndexOf(ios.tareas.Where(w => w.id == tareas_hoy[i].id).Where(w => w.duracion == tareas_hoy[i].duracion).Where(w => w.precedencias == tareas_hoy[i].precedencias).FirstOrDefault()); if (indice != -1) { ios.tareas[indice] = tareas_hoy[i]; } } } /*-------------------------------------------------------- */ //Grabar CSV /* * string linea = ""; * foreach (var tarea in ios.tareas) * { * linea = tarea.id +";"+ tarea.duracion +";"+ tarea.fecha_ini +";"+ tarea.fecha_fin; * foreach (var persona in tarea.asignados.lista) * { * linea = linea +";"+ persona.nombre; * } * Console.WriteLine(linea); * } */ }