예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
                }
            }
        }
예제 #3
0
        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]);
            }
        }
예제 #4
0
        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);
            }
        }