public static DateTime ObtenerFechaInicioMinima(Actividad_proyecto actividad) { //Si la actividad es Concepto, le fecha minima de inicio es la fecha del proyecto //Si la actividad es Preparacion, la fecha minima de inicio es la fecha del proyecto //mas el tiempo de concepto, pero si el concepto ya esta asignado, que la fecha minima de inicio sea la fecha //fin de concepto.. Lo mismo para preparacion. String tipo_actividad = ControladorActividades.ObtenerTipoActividad(actividad).descripcion.ToLower(); SUBPROYECTO sub = ControladorSubproyecto.BuscarPorId(actividad.id_subproyecto.Value); List <Detalle_recurso> tareas = new List <Detalle_recurso>(); DateTime fecha; Actividad_proyecto act_anterior = ControladorActividades.ObtenerActividadAnterior(actividad); if (act_anterior != null) { double tiempo_actividad; //Suma los tiempos del var act_anterior_aux = act_anterior; tiempo_actividad = 0; do { tiempo_actividad = ObtenerHorasTotalesActividad(act_anterior_aux); act_anterior_aux = ControladorActividades.ObtenerActividadAnterior(act_anterior_aux); } while (act_anterior_aux != null); tareas = obtenerTareasDeActividad(act_anterior); if (tareas.Count == 0) { //No esta asignada, se asigna a la fecha de proyecto + tiempo_actividad fecha = ControladorCalendario.CalcularFechaFinDesdeProyecto(actividad, tiempo_actividad).Value; } else { //Está asignada, se asigna a la fecha fin de la asignacion de actividad anterior. tareas = tareas.OrderByDescending(x => x.fecha_fin).ToList(); fecha = tareas.First().fecha_fin.Value; } } else { fecha = ControladorProyecto.ObtenerPorID(actividad.id_proyecto.Value).fecha_inicio.Value; } //if (tipo_actividad.Contains("prep") || (tipo_actividad.Contains("deta"))) //{ // List<AvanceSubproyecto> avance; // double tiempo_actividad; // if (tipo_actividad.Contains("deta")) // { // tiempo_actividad = ObtenerHorasTotalesActividad(ObtenerActividadPorTipoActividad(sub,acti_concepto)) + ObtenerHorasTotalesActividad(ObtenerActividadPorTipoActividad(sub, acti_prepa)); // tareas = obtenerTareasDeActividad(ObtenerActividadPorTipoActividad(sub, acti_prepa)); // } // else // { // tiempo_actividad = ObtenerHorasTotalesActividad(ObtenerActividadPorTipoActividad(sub, acti_concepto)); // tareas = obtenerTareasDeActividad(ObtenerActividadPorTipoActividad(sub, acti_concepto)); // } // if (tareas.Count == 0) // { // //No esta asignada, se asigna a la fecha de proyecto + tiempo_actividad // fecha = ControladorCalendario.CalcularFechaFinDesdeProyecto(actividad, tiempo_actividad).Value; // }else // { // //Está asignada, se asigna a la fecha fin de la asignacion de actividad anterior. // tareas = tareas.OrderByDescending(x => x.fecha_fin).ToList(); // fecha = tareas.First().fecha_fin.Value; // } //} //else //Es concepto, o cualquier otro tipo de actividad, inicia cuando lo hace el proyecto. //{ // fecha = ControladorProyecto.ObtenerPorID(actividad.id_proyecto.Value).fecha_inicio.Value; //} return(fecha < DateTime.Now ? DateTime.Now : fecha); }
public static bool TieneLogueoPermitido(Detalle_recurso dr) { Actividad_proyecto ap = ActividadProyectoDB.ObtenerActividadProyecto(dr.id_actividad_proyecto.Value); SUBPROYECTO subproyecto = ControladorSubproyecto.BuscarPorId(ap.id_subproyecto.Value); Proyecto p = ControladorProyecto.ObtenerPorID(ap.id_proyecto.Value); Tipo_actividad ta = ControladorActividades.ObtenerTipoActividad(ap); Movimiento_voz mv = ControladorActividades.ObtenerMovimientoVoz(ap); bool decision = false; int orden = (int)ap.orden; if (dr.realizada.Value) { return(false); } if (dr.forzada && !dr.realizada.Value) { decision = true; } if (ap.no_conformidad) { return(false); } if (p.activo.HasValue && !p.activo.Value) { return(false); } if (orden == 1) { decision = true; } var anterior = ControladorActividades.ObtenerActividadAnterior(ap); if (anterior == null) { return(true); } if (ControladorActividades.TieneControl_prod_1_Completado(anterior)) { decision = true; } else { decision = false; } ///////// TODO - CAMBIAR A POR ORDEN //if (ta.descripcion.ToLower().Contains("conce")) //{ // if(mv == null || !mv.control_prod.Value) // { // decision = true; // } //} //else if (ta.descripcion.ToLower().Contains("prep")) //{ // Tipo_actividad tipo_act_concepto = ControladorActividades.ObtenerTipoActividad("concepto"); // Actividad_proyecto concepto = ControladorSubproyecto.ObtenerActividaHijaDeTipo(subproyecto, tipo_act_concepto); // if (ControladorActividades.TieneControl_prod_1_Completado(concepto) && !ControladorActividades.TieneControl_prod_1_Completado(ap)) // { // decision = true; // } //} //else if (ta.descripcion.ToLower().Contains("deta")) //{ // Tipo_actividad tipo_act_concepto = ControladorActividades.ObtenerTipoActividad("concepto"); // Tipo_actividad tipo_act_preparacion = ControladorActividades.ObtenerTipoActividad("preparac"); // Actividad_proyecto concepto = ControladorSubproyecto.ObtenerActividaHijaDeTipo(subproyecto, tipo_act_concepto); // Actividad_proyecto preparacion = ControladorSubproyecto.ObtenerActividaHijaDeTipo(subproyecto, tipo_act_preparacion); // if (ControladorActividades.TieneControl_prod_1_Completado(concepto) && ControladorActividades.TieneControl_prod_1_Completado(preparacion) && !ControladorActividades.TieneControl_prod_1_Completado(ap)) // { // decision = true; // } //} //else //{ // decision = true; //} ////////////// END TODO if (decision) { if (dr.id_estado.HasValue) { if (dr.id_estado <= 2) { return(true); } return(false); } else { return(decision); } } return(false); }