Exemple #1
0
        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);
        }