/// <summary> /// Obtiene la estructura de todo el proyecto, incluyendo las actividades que la involucran, y las asignaciones. /// </summary> /// <param name="lista"></param> /// <param name="sub"></param> /// <param name="nivel"></param> /// <returns></returns> public static List <ClaseExpGantt> ObtenerEstructuraSubproyectosConActividades(List <ClaseExpGantt> lista, SUBPROYECTO sub, int nivel) { List <SUBPROYECTO> listaSubproyectos = ObtenerSubproyectosHijos(subpro: sub); List <Actividad_proyecto> actividades = ControladorActividades.ObtenerActividadesProyectoDeSubproyecto(sub); ClaseExpGantt estructura = new ClaseExpGantt() { subproyecto = sub, nivel = nivel }; lista.Add(estructura); nivel = nivel + 1; foreach (var actividad in actividades) { Detalle_recurso tarea = ControladorTareas.ObtenerPorActividad(actividad); ClaseExpGantt ExpoActivida = new ClaseExpGantt() { actividadProy = actividad, nivel = nivel, tarea = tarea, subproyecto = null, actividad = ControladorActividades.ObtenerActividad(actividad), usuario = tarea != null?ControladorUsuarios.ObtenerUsuario(tarea.id_usuario.Value) : null }; lista.Add(ExpoActivida); } foreach (SUBPROYECTO subpro in listaSubproyectos) { ObtenerEstructuraSubproyectosConActividades(lista, subpro, nivel); } return(lista); }
/// <summary> /// Agrega una tarea en la base de datos para el usuario seleccionado. /// Se asigna con estado Pendiente. /// Si el usuaro ya tiene ese /// </summary> /// <param name="idActividadProyectoSolicitar"></param> /// <param name="idUsuario"></param> /// <returns></returns> public static Detalle_recurso RequerirTarea(int idActividadProyectoSolicitar, int idUsuario) { Detalle_recurso tarea = new Detalle_recurso(); tarea.id_actividad_proyecto = idActividadProyectoSolicitar; tarea.forzada = false; tarea.id_usuario = idUsuario; tarea.motivo = "solicitud"; tarea.tipo = ""; tarea.porcentaje_avance = 0; tarea.realizada = false; tarea.cantidad_hora = Convert.ToDecimal(ControladorActividades.ObtenerHorasTotalesActividad(ControladorActividades.ObtenerActividadProyecto(idActividadProyectoSolicitar))); tarea.id_estado = ObtenerEstadoPorNombre("Pendiente").IdEstadoTarea; tarea.fecha_inicio = DateTime.Now; tarea.fecha_fin = ControladorCalendario.CalcularFechaFin(ControladorActividades.ObtenerActividadProyecto(idActividadProyectoSolicitar), ControladorUsuarios.ObtenerUsuario(idUsuario), tarea.fecha_inicio.Value, ControladorActividades.ObtenerHorasTotalesActividad(ControladorActividades.ObtenerActividadProyecto(idActividadProyectoSolicitar))); tarea.duracion_cadista = (decimal)ControladorActividades.ObtenerHorasOrdenCompraParaCadista(ControladorActividades.ObtenerActividadProyecto(idActividadProyectoSolicitar)); tarea.fecha_inicio_cadista = tarea.fecha_inicio; tarea.fecha_fin_cadista = tarea.fecha_fin; if (ControladorTareas.EstaAsignadaAUsuario(idActividadProyectoSolicitar, idUsuario) == null) { return(Insertar(tarea)); } return(null); }
/// <summary> /// Verifica si la actividad tiene asignación automática, y si no tiene /// se lo asigna a todos sus miebros. /// </summary> /// <param name="act"></param> /// <returns></returns> public static bool VerificarAsignacionAutomatica(Actividad_proyecto act) { var subproyecto = ControladorSubproyecto.BuscarPorId(act.id_subproyecto.Value); if (subproyecto.asignacion_automatica) { Usuario_Proyecto _Usuario_proyecto = new Usuario_Proyecto(); List <USUARIO> odt_miembros_subproyectos = ControladorSubproyecto.ObtenerMiembrosIndirectos(subproyecto); foreach (USUARIO row in odt_miembros_subproyectos) { var detalle = new Detalle_recurso() { realizada = false, tipo = "automatico", porcentaje_avance = 0, id_actividad_proyecto = act.id_actividad_proyecto, motivo = "- Asignada automáticamente - ", cantidad_hora = Convert.ToDecimal(ControladorActividades.ObtenerHorasPorOrdenCompra(act)), id_usuario = Convert.ToInt32(row.id_usuario), fecha_inicio = null, fecha_fin = null }; ControladorTareas.Insertar(detalle); } return(true); } return(false); }
public static void EliminarActividad(Actividad_proyecto item) { if (!TieneHorasLogueadas(item)) { //Eliminar Detalle Recurso ControladorTareas.EliminarDetalleRecursoActividad(item); //Eliminar Programacion_Actividad ActividadProyectoDB.EliminarProgramacionActividadDeActividadProyecto(item); //Eliminar Actividad ActividadProyectoDB.EliminarActividadDeActividadProyecto(item); //Eliminar Actividad_Proyecto ActividadProyectoDB.EliminarActividadProyecto(item); } }
public void ExportarTodosProyectos() { List <Proyecto> proyectos = ControladorProyecto.ObtenerProyectosActivos(); if (OpenFile()) { IXLWorksheet _worksheetProyecto = _xlworkbook.Worksheet("Tabla_Tareas"); List <ClaseExpGantt> estructura; int fila = 2; int filaAsig = 2; CrearRecursos(); foreach (var item in proyectos) { estructura = _controladorProyecto.ObtenerEstructuraProyectoConActividades(item); _worksheetProyecto.Cell(fila, 1).Value = fila - 1; _worksheetProyecto.Cell(fila, 2).Value = "Sí"; _worksheetProyecto.Cell(fila, 3).Value = "Programada manualmente"; _worksheetProyecto.Cell(fila, 4).Value = item.nombre_proyecto; _worksheetProyecto.Cell(fila, 5).Value = item.total_hora + " horas"; _worksheetProyecto.Cell(fila, 6).Value = ControladorTareas.CalcularFechaInicioProyecto(item); _worksheetProyecto.Cell(fila, 7).Value = ControladorTareas.CalcularFechaFinProyecto(item); _worksheetProyecto.Cell(fila, 9).Value = 1; fila++; foreach (ClaseExpGantt subproyecto in estructura) { filaAsig = CrearAsignacion(subproyecto, filaAsig, fila - 1); if (subproyecto.subproyecto != null) { _worksheetProyecto.Cell(fila, 1).Value = fila - 1; _worksheetProyecto.Cell(fila, 2).Value = "Sí"; _worksheetProyecto.Cell(fila, 3).Value = "Programada manualmente"; _worksheetProyecto.Cell(fila, 4).Value = subproyecto.subproyecto.nombre; _worksheetProyecto.Cell(fila, 5).Value = subproyecto.subproyecto.horas_estimadas + " horas";// ControladorSubproyecto.ObtenerHorasOrdenCompra(subproyecto.subproyecto) + " horas"; _worksheetProyecto.Cell(fila, 6).Value = ControladorTareas.CalcularFechaInicioSubproyecto(subproyecto.subproyecto); _worksheetProyecto.Cell(fila, 7).Value = ControladorTareas.CalcularFechaFinSubproyecto(subproyecto.subproyecto); _worksheetProyecto.Cell(fila, 9).Value = subproyecto.nivel + 1; } else { _worksheetProyecto.Cell(fila, 1).Value = fila - 1; _worksheetProyecto.Cell(fila, 2).Value = "Sí"; _worksheetProyecto.Cell(fila, 3).Value = "Programada automáticamente"; _worksheetProyecto.Cell(fila, 4).Value = subproyecto.actividad.nombre_actividad; if (subproyecto.tarea != null) { if (subproyecto.actividad.id_tipo_actividad == ControladorActividades.ObtenerTipoActividad("prepa").id_tipo_actividad || subproyecto.actividad.id_tipo_actividad == ControladorActividades.ObtenerTipoActividad("deta").id_tipo_actividad) { //Predecesores //_worksheetProyecto.Cell(fila, 8).Value = fila - 2; } _worksheetProyecto.Cell(fila, 4).Value = subproyecto.actividad.nombre_actividad + " - " + subproyecto.usuario.FullName; _worksheetProyecto.Cell(fila, 5).Value = subproyecto.tarea.cantidad_hora + " horas"; _worksheetProyecto.Cell(fila, 6).Value = subproyecto.tarea.fecha_inicio; _worksheetProyecto.Cell(fila, 7).Value = subproyecto.tarea.fecha_fin; _worksheetProyecto.Cell(fila, 11).Value = subproyecto.actividadProy.id_actividad_proyecto; } _worksheetProyecto.Cell(fila, 9).Value = subproyecto.nivel + 1; } fila++; } } if (CloseFile()) { System.Diagnostics.Process.Start(path + "\\" + "Gantt" + ".xlsx"); } } }