/// <summary> /// Actualiza la hora del subproyecto para que la suma sea igual a las horas de las actividades /// incluyendo los subproyectos hijos. /// </summary> /// <param name="subproyecto">Subproyecto a actualizar, incluyendo sus hijos</param> /// <returns></returns> public static decimal ActualizarHorasSubproyecto(SUBPROYECTO subproyecto) { List <SUBPROYECTO> subproyectos = ObtenerSubproyectosHijos(subproyecto); List <Actividad_proyecto> actividades = ControladorActividades.ObtenerActividadesProyectoDeSubproyecto(subproyecto); List <SUBPROYECTO> hijos; decimal total = 0; //Función recursiva para calcular las horas de los subproyectos hijos foreach (var subpro in subproyectos) { total += ActualizarHorasSubproyecto(subpro); } //Recorre las actividades y suma sus horas foreach (var item in actividades) { item.cantidad_hora = (decimal)ControladorActividades.ObtenerHorasTotalesActividad(item); ControladorActividades.ActualizarActividadProyecto(item); total += (decimal)ControladorActividades.ObtenerHorasTotalesActividad(item); } subproyecto.horas_estimadas = total; ActualizarSubproyecto(subproyecto); return(total); }
/// <summary> /// Para que sean compatibles el orden que se usaba anteriormente de numeros impares al nuevo por 1,2,3,4.. /// </summary> /// <param name="sub"></param> public static void ActualizarOrdenActividades(SUBPROYECTO sub) { List <Actividad_proyecto> actividades = ObtenerActividadesProyectoDeSubproyecto(sub).OrderBy(x => x.orden).ToList(); foreach (var act in actividades) { if (act.orden != actividades.IndexOf(act) + 1) { act.orden = actividades.IndexOf(act) + 1; ControladorActividades.ActualizarActividadProyecto(act); } } }
public static void SubirOrdenActividad(Actividad_proyecto actividad) { ActualizarOrdenActividades(ControladorSubproyecto.BuscarPorId(actividad.id_subproyecto.Value)); List <Actividad_proyecto> actividades = ObtenerActividadesProyectoDeSubproyecto(ControladorSubproyecto.BuscarPorId(actividad.id_subproyecto.Value)).OrderBy(x => x.orden).ToList(); int indexOf = actividades.IndexOf(actividades.Where(x => x.id_actividad_proyecto == actividad.id_actividad_proyecto).FirstOrDefault()); if (indexOf == 0) { return; } actividades[indexOf].orden--; ControladorActividades.ActualizarActividadProyecto(actividades[indexOf]); if (indexOf - 1 >= 0) { actividades[indexOf - 1].orden++; ControladorActividades.ActualizarActividadProyecto(actividades[indexOf - 1]); } }
internal static void ActualizarHorasProyectosActivos() { List <Proyecto> proyectos_activos = ObtenerProyectosActivos(); decimal totalProy = 0; decimal totalSub = 0; foreach (var proyecto in proyectos_activos) { totalProy = 0; List <SUBPROYECTO> subproyectos = ObtenerSubproyectosHijos(proyecto); foreach (var subpro in subproyectos) { List <SUBPROYECTO> subproyectosHijos = ControladorSubproyecto.ObtenerSubproyectosHijos(subpro); List <Actividad_proyecto> actividades = ControladorActividades.ObtenerActividadesProyectoDeSubproyecto(subpro); List <SUBPROYECTO> hijos; totalSub = 0; //Función recursiva para calcular las horas de los subproyectos hijos foreach (var sub in subproyectosHijos) { totalSub += ControladorSubproyecto.ActualizarHorasSubproyecto(sub); } //Recorre las actividades y suma sus horas foreach (var item in actividades) { item.cantidad_hora = (decimal)ControladorActividades.ObtenerHorasTotalesActividad(item); ControladorActividades.ActualizarActividadProyecto(item); totalSub += (decimal)ControladorActividades.ObtenerHorasTotalesActividad(item); } totalProy += totalSub; subpro.horas_estimadas = totalSub; ControladorSubproyecto.ActualizarSubproyecto(subpro); } proyecto.total_hora = totalProy; Update(proyecto); } }